fix
This commit is contained in:
+25
-16
@@ -5,8 +5,8 @@
|
|||||||
#include "utils.hpp"
|
#include "utils.hpp"
|
||||||
|
|
||||||
/* macros rather then function to avoid warnings */
|
/* macros rather then function to avoid warnings */
|
||||||
#define UNEXPECTED_END() { endwin(); cerr << "Unexpected end of file" << std::endl; exit(1); }
|
#define ERR_UNEXPECTED_END() { endwin(); cerr << "Unexpected end of file" << endl; exit(1); }
|
||||||
#define UNEXPECTED_CHAR(c) { endwin(); cerr << "Line " << line << ": Unexpected '" << c << std::endl; exit(1); }
|
#define ERR_UNEXPECTED_CHAR(c) { endwin(); cerr << "Line " << line << ": Unexpected '" << c << endl; exit(1); }
|
||||||
|
|
||||||
|
|
||||||
using std::cerr;
|
using std::cerr;
|
||||||
@@ -14,6 +14,7 @@ using std::cerr;
|
|||||||
using std::string;
|
using std::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using std::pair;
|
using std::pair;
|
||||||
|
using std::endl;
|
||||||
|
|
||||||
namespace /* internal */
|
namespace /* internal */
|
||||||
{
|
{
|
||||||
@@ -44,6 +45,13 @@ namespace /* internal */
|
|||||||
/* result */
|
/* result */
|
||||||
Tree* cur_tree;
|
Tree* cur_tree;
|
||||||
|
|
||||||
|
void err_three_parents(const char* extra_name)
|
||||||
|
{
|
||||||
|
endwin();
|
||||||
|
cerr << "Line " << line << " two parents are already defined, "
|
||||||
|
<< extra_name << " is third" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
bool isNum(char c)
|
bool isNum(char c)
|
||||||
{
|
{
|
||||||
return c >= '0' && c <= '9';
|
return c >= '0' && c <= '9';
|
||||||
@@ -57,7 +65,7 @@ namespace /* internal */
|
|||||||
!isNum(*it_data))
|
!isNum(*it_data))
|
||||||
{
|
{
|
||||||
if(*it_data == ':' /* && *it_data == '-' */)
|
if(*it_data == ':' /* && *it_data == '-' */)
|
||||||
UNEXPECTED_CHAR(*it_data);
|
ERR_UNEXPECTED_CHAR(*it_data);
|
||||||
++it_data;
|
++it_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,11 +93,11 @@ namespace /* internal */
|
|||||||
else if(*it_data == 'F')
|
else if(*it_data == 'F')
|
||||||
res = F;
|
res = F;
|
||||||
else
|
else
|
||||||
UNEXPECTED_CHAR(*it_data);
|
ERR_UNEXPECTED_CHAR(*it_data);
|
||||||
|
|
||||||
++it_data;
|
++it_data;
|
||||||
if(*it_data != '\n')
|
if(*it_data != '\n')
|
||||||
UNEXPECTED_CHAR(*it_data);
|
ERR_UNEXPECTED_CHAR(*it_data);
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -110,7 +118,7 @@ namespace /* internal */
|
|||||||
break;
|
break;
|
||||||
case '.':
|
case '.':
|
||||||
if(val == 0)
|
if(val == 0)
|
||||||
UNEXPECTED_CHAR('.')
|
ERR_UNEXPECTED_CHAR('.')
|
||||||
else
|
else
|
||||||
return sign * val;
|
return sign * val;
|
||||||
break;
|
break;
|
||||||
@@ -119,10 +127,10 @@ namespace /* internal */
|
|||||||
return sign * val;
|
return sign * val;
|
||||||
/* case '?': todo */
|
/* case '?': todo */
|
||||||
default:
|
default:
|
||||||
UNEXPECTED_CHAR(*it_data)
|
ERR_UNEXPECTED_CHAR(*it_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNEXPECTED_END()
|
ERR_UNEXPECTED_END()
|
||||||
}
|
}
|
||||||
|
|
||||||
EventTime processDate(char*& it_data) /* todo validate */
|
EventTime processDate(char*& it_data) /* todo validate */
|
||||||
@@ -158,7 +166,8 @@ namespace /* internal */
|
|||||||
else if(res.second == Nobody)
|
else if(res.second == Nobody)
|
||||||
res.second = cur_tree->findId(name.data())[same_name_index];
|
res.second = cur_tree->findId(name.data())[same_name_index];
|
||||||
else
|
else
|
||||||
/* todo */TFT_EXIT(1);
|
err_three_parents(name.data());
|
||||||
|
|
||||||
same_name_index = 0;
|
same_name_index = 0;
|
||||||
name.clear();
|
name.clear();
|
||||||
break;
|
break;
|
||||||
@@ -166,7 +175,7 @@ namespace /* internal */
|
|||||||
if(name.empty() && res.first == Nobody)
|
if(name.empty() && res.first == Nobody)
|
||||||
return prev_parents;
|
return prev_parents;
|
||||||
else
|
else
|
||||||
UNEXPECTED_CHAR('-')
|
ERR_UNEXPECTED_CHAR('-')
|
||||||
case '\n':
|
case '\n':
|
||||||
++line;
|
++line;
|
||||||
if(res.first == Nobody)
|
if(res.first == Nobody)
|
||||||
@@ -184,7 +193,7 @@ namespace /* internal */
|
|||||||
name.push_back(*it_data);
|
name.push_back(*it_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNEXPECTED_END()
|
ERR_UNEXPECTED_END()
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<person_id> parseSpouses(char*& it_data)
|
vector<person_id> parseSpouses(char*& it_data)
|
||||||
@@ -200,7 +209,7 @@ namespace /* internal */
|
|||||||
if(name.empty())
|
if(name.empty())
|
||||||
res.push_back( cur_tree->last() );
|
res.push_back( cur_tree->last() );
|
||||||
else
|
else
|
||||||
UNEXPECTED_CHAR('-')
|
ERR_UNEXPECTED_CHAR('-')
|
||||||
break;
|
break;
|
||||||
case ',':
|
case ',':
|
||||||
if(!name.empty())
|
if(!name.empty())
|
||||||
@@ -210,7 +219,7 @@ namespace /* internal */
|
|||||||
same_name_index = 0;
|
same_name_index = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
UNEXPECTED_CHAR(',')
|
ERR_UNEXPECTED_CHAR(',')
|
||||||
break;
|
break;
|
||||||
case '\n':
|
case '\n':
|
||||||
++line;
|
++line;
|
||||||
@@ -248,7 +257,7 @@ namespace /* internal */
|
|||||||
case '-':
|
case '-':
|
||||||
case 0 ... 9:
|
case 0 ... 9:
|
||||||
case ':':
|
case ':':
|
||||||
UNEXPECTED_CHAR(*it_data)
|
ERR_UNEXPECTED_CHAR(*it_data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -305,7 +314,7 @@ namespace /* internal */
|
|||||||
spouses = parseSpouses(it_data);
|
spouses = parseSpouses(it_data);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
UNEXPECTED_CHAR(it_data[-1])
|
ERR_UNEXPECTED_CHAR(it_data[-1])
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -320,7 +329,7 @@ namespace /* internal */
|
|||||||
break;
|
break;
|
||||||
/* case 0...9: */
|
/* case 0...9: */
|
||||||
/* case ':': */
|
/* case ':': */
|
||||||
/* UNEXPECTED_CHAR(*it_data) */
|
/* ERR_UNEXPECTED_CHAR(*it_data) */
|
||||||
/* default: */
|
/* default: */
|
||||||
/* break; */
|
/* break; */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -383,6 +383,9 @@ static void displayHelp()
|
|||||||
|
|
||||||
void Tree::display()
|
void Tree::display()
|
||||||
{
|
{
|
||||||
|
if(people.size() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
bool to_draw = true;
|
bool to_draw = true;
|
||||||
I32 c;
|
I32 c;
|
||||||
do
|
do
|
||||||
|
|||||||
Reference in New Issue
Block a user