whitespace

This commit is contained in:
vrd
2022-12-10 19:21:49 +02:00
parent 30e6480343
commit 489479fd32
3 changed files with 106 additions and 97 deletions
+16 -7
View File
@@ -8,6 +8,8 @@ using std::cout;
int main() int main()
{ {
initscr(); /* Start curses mode */
/*Tree test1("Dechkovi"); //addTree Dechkovi addTree Karamanovi load 0 load 1 (to work with these example trees) /*Tree test1("Dechkovi"); //addTree Dechkovi addTree Karamanovi load 0 load 1 (to work with these example trees)
Tree test2("Karamanovi"); Tree test2("Karamanovi");
@@ -37,7 +39,7 @@ int main()
test2.saveTree();*/ test2.saveTree();*/
Tree firstTree("firstTree"); Tree firstTree("firstTree");
firstTree.addPerson("Адам,", true, Nobody, Nobody, {0, 1, 6}); firstTree.addPerson("Адам,", true, Nobody, Nobody, {0, 1, 6});
firstTree.addPerson("Ева", false, Nobody, Nobody, {0, 1, 6}); firstTree.addPerson("Ева", false, Nobody, Nobody, {0, 1, 6});
firstTree.addRelation(0, Husband, 1); firstTree.addRelation(0, Husband, 1);
@@ -50,11 +52,15 @@ int main()
firstTree.print(); firstTree.print();
firstTree.saveTree(); firstTree.saveTree();
firstTree.printRel(3); firstTree.printRel(3);
firstTree.printOldestAncestors(3); firstTree.printOldestAncestors(3);
/* ====================================================== */
refresh(); /* Print it on to the real screen */
Array<Tree> trees; Array<Tree> trees;
bool quit = false; bool quit = false;
@@ -90,13 +96,13 @@ int main()
}; };
unsigned curTree = 0, //Currently selected tree ID unsigned curTree = 0, //Currently selected tree ID
id, secondId; //Indexes id, secondId; // Person IDs
Tree *newTree; Tree* newTree;
char name[128], secondName[128]; char name[128], secondName[128];
U8 day, month; //TODO add h m U8 day, month; //TODO add h m
U16 year; U16 year;
bool sex; bool sex;
unsigned father, mother; unsigned father, mother; // IDs
do do
{ {
@@ -122,8 +128,8 @@ int main()
trees[curTree].rename(name); trees[curTree].rename(name);
break; break;
case 2: //load case 2: //load
cin >> input; cin >> input;
trees.push(Tree(input)); trees.push(Tree(input));
if (!trees[trees.gNum() - 1].loadTree()) if (!trees[trees.gNum() - 1].loadTree())
std::cout << "File doesnt exist or is empty.\n\n"; std::cout << "File doesnt exist or is empty.\n\n";
break; break;
@@ -262,5 +268,8 @@ int main()
} while (!quit); } while (!quit);
endwin(); /* stop ncursers */
return 0; return 0;
} }
+24 -24
View File
@@ -1,38 +1,38 @@
#pragma once #pragma once
#include <string> #include <string>
#include <fstream> #include <fstream>
#include "common/basicTypes.h" #include "common/basicTypes.h"
struct EventTime struct EventTime
{ {
//enum { UNKNOWN_DATE=0, UNKNOWN_TIME=1}; //enum { UNKNOWN_DATE=0, UNKNOWN_TIME=1};
static const I16 UNKNOWN_DATE = 0; static const I16 UNKNOWN_DATE = 0;
static const I8 UNKNOWN_TIME = -1; static const I8 UNKNOWN_TIME = -1;
/*explicit*/ EventTime(I16 Year=UNKNOWN_DATE, U8 Month=UNKNOWN_DATE, U16 Day=UNKNOWN_DATE, I8 Hour=UNKNOWN_TIME, I8 Minute=UNKNOWN_TIME); /*explicit*/ EventTime(I16 Year=UNKNOWN_DATE, U8 Month=UNKNOWN_DATE, U16 Day=UNKNOWN_DATE, I8 Hour=UNKNOWN_TIME, I8 Minute=UNKNOWN_TIME);
void print() const; void print() const;
I16 year; //The year in relation to Chritst's birth - 1 (AD) is the year He was born, -1 (BC) is the previous year. There is no year 0 I16 year; //The year in relation to Chritst's birth - 1 (AD) is the year He was born, -1 (BC) is the previous year. There is no year 0
U8 month; U8 month;
U16 day; U16 day;
I8 hour; //0-23 I8 hour; //0-23
I8 minute; //0-59 I8 minute; //0-59
}; };
class Person class Person
{ {
public: public:
Person() = default; Person() = default;
Person(const char* name, EventTime birth, bool sex, EventTime death); Person(const char* name, EventTime birth, bool sex, EventTime death);
bool operator==(const Person &other)const; bool operator==(const Person &other)const;
void save(std::ofstream &file)const;// void save(std::ofstream &file)const;//
void load(std::ifstream &file); void load(std::ifstream &file);
void rename(const char* newName); void rename(const char* newName);
void print()const; void print()const;
friend class Tree; friend class Tree;
private: private:
@@ -40,5 +40,5 @@ private:
unsigned numRel_; //Number of close relatives - mother, father, brother, sister, wife/husband, child, ex-wife/husband unsigned numRel_; //Number of close relatives - mother, father, brother, sister, wife/husband, child, ex-wife/husband
EventTime birth_; EventTime birth_;
bool isMale_; bool isMale_;
EventTime death_; EventTime death_;
}; };
+66 -66
View File
@@ -1,75 +1,75 @@
#pragma once #pragma once
#include <climits>
#include "array.h"
#include "person.h"
enum Relation : U8
{
Invalid = 0,
Father,
Mother,
Son,
Daughter,
Brother,
Sister,
HalfBrother,
HalfSister,
Wife,
Husband,
ExWife,
ExHusband
};
const unsigned Nobody = UINT_MAX; //Òîçè íîìåð ùå áúäå çàïàçeí çà ëèïñà íà âðúçêà/÷îâåê
class Tree
{
public:
Tree();
template <class Str>
Tree(Str&& Name) : treeName(std::forward<Str>(Name)), numPeople(0) {}
/*Tree(const Tree&);
Tree& operator= (const Tree& other);*/
Tree operator+ (const Tree& other);
Tree operator- (const Tree& other);
Tree& operator+= (const Tree& other);
Tree& operator-= (const Tree& other);
void rename(const char* newName);
unsigned findId(const char*, const short year=0, const unsigned char month=0, const unsigned char day=0)const;
unsigned findOldestAncestor(const unsigned &id, const bool &sex = 0)const;//
unsigned findCommonAncestor(const unsigned firstId, const unsigned secondId)const; //oldest common ancestor ID
void saveTree()const;//
bool loadTree();
void addPerson(const char* name, bool isMale, unsigned father=Nobody, unsigned mother=Nobody, EventTime birth={}, EventTime death={});
bool addRelation(const char* firstName, const Relation, const char* secondName); //Adds a new relation or edits an old one. 0 - failure 1 - success
bool addRelation(const unsigned firstId, const Relation, const unsigned secondId, bool opposite=0); //0 - failure 1 - success
void removePerson(const unsigned id); //Removes a member and the last one takes his ID
void removePerson(const char*, const short year = 0, const unsigned char month = 0, const unsigned char day = 0);
void removeRelation(const unsigned firstId, const unsigned secondId);
void removeRelation(const char* firstName, const char* secondName);
void print()const; #include <climits>
void printRel(const unsigned id)const; //Prints out close relatives #include "array.h"
void printMember(const unsigned id)const; #include "person.h"
void printOldestAncestors(const unsigned id)const;//
enum Relation : U8
unsigned gNumP()const; {
Invalid = 0,
private: Father,
void commonAncestorRec(const unsigned &id, const Array<char> &visited)const; Mother,
Son,
Daughter,
Brother,
Sister,
HalfBrother,
HalfSister,
Wife,
Husband,
ExWife,
ExHusband
};
const unsigned Nobody = UINT_MAX; //Òîçè íîìåð ùå áúäå çàïàçeí çà ëèïñà íà âðúçêà/÷îâåê
class Tree
{
public:
Tree();
template <class Str>
Tree(Str&& Name) : treeName(std::forward<Str>(Name)), numPeople(0) {}
/*Tree(const Tree&);
Tree& operator= (const Tree& other);*/
Tree operator+ (const Tree& other);
Tree operator- (const Tree& other);
Tree& operator+= (const Tree& other);
Tree& operator-= (const Tree& other);
void rename(const char* newName);
unsigned findId(const char*, const short year=0, const unsigned char month=0, const unsigned char day=0)const;
unsigned findOldestAncestor(const unsigned &id, const bool &sex = 0)const;//
unsigned findCommonAncestor(const unsigned firstId, const unsigned secondId)const; //oldest common ancestor ID
void saveTree()const;//
bool loadTree();
void addPerson(const char* name, bool isMale, unsigned father=Nobody, unsigned mother=Nobody, EventTime birth={}, EventTime death={});
bool addRelation(const char* firstName, const Relation, const char* secondName); //Adds a new relation or edits an old one. 0 - failure 1 - success
bool addRelation(const unsigned firstId, const Relation, const unsigned secondId, bool opposite=0); //0 - failure 1 - success
void removePerson(const unsigned id); //Removes a member and the last one takes his ID
void removePerson(const char*, const short year = 0, const unsigned char month = 0, const unsigned char day = 0);
void removeRelation(const unsigned firstId, const unsigned secondId);
void removeRelation(const char* firstName, const char* secondName);
void print()const;
void printRel(const unsigned id)const; //Prints out close relatives
void printMember(const unsigned id)const;
void printOldestAncestors(const unsigned id)const;//
unsigned gNumP()const;
private:
void commonAncestorRec(const unsigned &id, const Array<char> &visited)const;
std::string treeName; std::string treeName;
unsigned numPeople; unsigned numPeople;
Array<Person> people; //The data for each member Array<Person> people; //The data for each member
Array<Array<unsigned>> relatives; //The relatives of each member Array<Array<unsigned>> relatives; //The relatives of each member
Array<Array<Relation>> relations; //The type of relation each member has with his relatives Array<Array<Relation>> relations; //The type of relation each member has with his relatives
//Search, ect. //Search, ect.
}; };