-
Notifications
You must be signed in to change notification settings - Fork 1
/
TaxonomyNode.h
69 lines (55 loc) · 1.89 KB
/
TaxonomyNode.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef _TAXONOMY_NODE_
#define _TAXONOMY_NODE_
#include "ExpressionNode.h"
#include <vector>
#include <map>
using namespace std;
class TaxonomyNode;
typedef vector<TaxonomyNode*> TaxonomyNodes;
typedef map<ExprNode*, TaxonomyNode*, strCmpExprNode> ExprNode2TaxonomyNodeMap;
int isEqualTaxonomyNode(const TaxonomyNode* pTaxonomyNode1, const TaxonomyNode* pTaxonomyNode2);
struct strCmpTaxonomyNode
{
bool operator()( const TaxonomyNode* pTN1, const TaxonomyNode* pTN2 ) const {
return isEqualTaxonomyNode( pTN1, pTN2 ) < 0;
}
};
typedef set<TaxonomyNode*, strCmpTaxonomyNode> TaxonomyNodeSet;
typedef map<TaxonomyNode*, SetOfExprNodeSet*, strCmpTaxonomyNode> TaxonomyNode2SetOfExprNodeSet;
typedef map<TaxonomyNode*, TaxonomyNode*, strCmpTaxonomyNode> TaxonomyNode2TaxonomyNode;
typedef map<TaxonomyNode*, int, strCmpTaxonomyNode> TaxonomyNode2Int;
bool contains(TaxonomyNodes* pNodeList, TaxonomyNode* pNode);
bool remove(TaxonomyNodes* pList, TaxonomyNode* pNode);
class TaxonomyNode
{
public:
TaxonomyNode(ExprNode* pName, bool bHidden);
enum MARKS
{
NOT_MARKED = -1,
MARKED_FALSE = 0,
MARKED_TRUE = 1
};
void addSupers(TaxonomyNodes* paSupers);
void addSubs(TaxonomyNodes* paSubs);
void addSub(TaxonomyNode* pNode);
void addEquivalent(ExprNode* pC);
void addSuperExplanation(TaxonomyNode* pSup, ExprNodeSet* pExplanation);
SetOfExprNodeSet* getSuperExplanations(TaxonomyNode* pNode);
void addInstance(ExprNode* pInd);
void setInstances(ExprNodeSet* pSet);
void removeSub(TaxonomyNode* pNode);
void setSubs(TaxonomyNodes* pSubs);
void setSupers(TaxonomyNodes* pSupers);
void removeMultiplePaths();
void disconnect();
bool isLeaf();
bool isBottom();
ExprNode* m_pName;
bool m_bHidden;
int m_bMark;
ExprNodeSet m_setEquivalents, m_setInstances;
TaxonomyNodes m_aSupers, m_aSubs;
TaxonomyNode2SetOfExprNodeSet m_mSuperExplanations;
};
#endif