Annotation of Amaya/amaya/trans.h, revision 1.14
1.3 cvs 1: /*
2: *
3: * (c) COPYRIGHT MIT and INRIA, 1996.
4: * Please first read the full copyright statement in file COPYRIGHT.
5: *
6: */
7:
1.2 cvs 8: #ifndef _TRANS_H__
9: #define _TRANS_H__
1.4 cvs 10: /*----------------------------------------------------------------------
11: Definitions of types and variables used in type transformation (trans.c and transparse.c)
12: Stephane Bonhomme Apr 96
13: ----------------------------------------------------------------------*/
14: #define MAX_STACK 100 /* size of html generation and pattern matching stacks */
1.7 cvs 15: #define BUFFER_LEN 10000 /* size of html buffer */
1.1 cvs 16:
17: #ifndef PPSTANDALONE
18:
1.4 cvs 19: /*----------------------------------------------------------------------
20: structure definitions
21: ----------------------------------------------------------------------*/
22: /*relation between pattern nodes (also called Symbols) and source structure tree nodes*/
23: typedef struct _MatchChildren
24: {
25: struct _SymbDesc *MatchSymb; /* pattern symbol */
26: struct _Node *MatchNode; /* source tree node */
27: struct _MatchChildren *Next;
28: }
29: strMatchChildren;
30:
31: typedef struct _Match
32: {
33: struct _SymbDesc *MatchSymb; /* pattern symbol */
34: struct _Node *MatchNode; /* source tree node */
35: strMatchChildren *MatchChildren; /* relation between chidren in both pattern and source tree */
36: struct _Match *Next;
37: }
38: strMatch;
39:
40:
41: /* Source structure tree nodes definition */
42: typedef struct _Node
43: {
1.10 cvs 44: STRING Tag; /* HTML tag */
1.4 cvs 45: Element Elem; /* element instance */
46: struct _Node *Parent;
47: struct _Node *Child;
48: struct _Node *Next;
49: struct _Node *Previous;
50: int NodeDepth;
1.12 cvs 51: ThotBool IsTrans;
1.4 cvs 52: struct _SymbDesc *MatchSymb; /* symbol matched (transformation phase) */
53: strMatch *Matches; /* Symbols Matched (pattern matching) */
54: struct _ListSymb *Candidates; /* list of symbols potientally matched */
55: }
56: strNode;
1.1 cvs 57:
1.4 cvs 58: typedef strNode *StructureTree;
1.1 cvs 59:
1.4 cvs 60: #endif
1.1 cvs 61:
1.4 cvs 62: /* internal reprensentation of transformation rules */
1.1 cvs 63:
1.4 cvs 64: /* Attribute descriptor */
1.1 cvs 65: typedef struct _AttrDesc
1.2 cvs 66: {
1.10 cvs 67: STRING NameAttr;
1.2 cvs 68: int ThotAttr;
1.12 cvs 69: ThotBool IsInt;
70: ThotBool IsTransf;
1.2 cvs 71: union
72: {
1.10 cvs 73: STRING _TextVal;
1.2 cvs 74: int _IntVal;
75: struct _s0
76: {
1.10 cvs 77: STRING _Tag;
78: STRING _Attr;
1.2 cvs 79: }
80: s0;
81: }
82: u;
1.4 cvs 83: struct _AttrDesc *Next;
1.2 cvs 84: }
1.4 cvs 85: strAttrDesc;
1.1 cvs 86:
87: #define TextVal u._TextVal
88: #define IntVal u._IntVal
89: #define AttrTag u.s0._Tag
90: #define AttrAttr u.s0._Attr
91:
1.4 cvs 92: /* node generated */
1.1 cvs 93: typedef struct _NodeDesc
1.2 cvs 94: {
1.10 cvs 95: STRING Tag;
1.5 cvs 96: strAttrDesc *Attributes;
1.4 cvs 97: struct _NodeDesc *Next;
1.2 cvs 98: }
1.4 cvs 99: strNodeDesc;
1.1 cvs 100:
101: typedef struct _RuleDesc
1.2 cvs 102: {
1.10 cvs 103: STRING RuleName;
1.4 cvs 104: strNodeDesc *OptionNodes;
105: strNodeDesc *NewNodes;
1.12 cvs 106: ThotBool DeleteRule;
1.5 cvs 107: struct _RuleDesc *NextRule;
1.4 cvs 108: struct _RuleDesc *Next;
1.2 cvs 109: }
1.4 cvs 110: strRuleDesc;
1.1 cvs 111:
112: #ifndef PPSTANDALONE
113: typedef struct _ListElem
1.2 cvs 114: {
1.4 cvs 115: Element Elem;
116: int Id;
117: int Rank;
118: struct _ListElem *Next;
1.2 cvs 119: }
1.4 cvs 120: strListElem;
1.2 cvs 121:
1.1 cvs 122: #endif
123:
124: typedef struct _ListSymb
1.2 cvs 125: {
1.4 cvs 126: struct _SymbDesc *Symbol;
127: struct _ListSymb *Next;
1.2 cvs 128: }
1.4 cvs 129: strListSymb;
1.1 cvs 130:
1.4 cvs 131: /* pattern node (symbol) */
1.1 cvs 132: typedef struct _SymbDesc
1.2 cvs 133: {
1.10 cvs 134: STRING SymbolName;
135: STRING Tag;
1.4 cvs 136: strRuleDesc *Rule;
1.12 cvs 137: ThotBool IsOptional;
138: ThotBool IsActiveSymb;
139: ThotBool IsOptChild;
1.4 cvs 140: int Depth;
141: strAttrDesc *Attributes;
142: strListSymb *Children;
143: strListSymb *Followings;
144: struct _SymbDesc *Next;
1.2 cvs 145: }
1.4 cvs 146: strSymbDesc;
1.1 cvs 147:
1.4 cvs 148: /* transformation descriptor */
1.1 cvs 149: typedef struct _TransDesc
1.2 cvs 150: {
1.10 cvs 151: STRING NameTrans;
1.4 cvs 152: int NbPatSymb;
153: int NbRules;
154: int PatDepth;
155: strListSymb *First;
156: strSymbDesc *RootDesc;
157: strSymbDesc *Symbols;
158: strRuleDesc *Rules;
1.12 cvs 159: ThotBool IsActiveTrans;
1.10 cvs 160: STRING DestinationTag;
1.4 cvs 161: struct _TransDesc *Next;
1.2 cvs 162: }
1.4 cvs 163: strTransDesc;
1.1 cvs 164:
1.6 cvs 165: typedef struct _TransSet
166: {
167: /* name of the transformation set (eg, name of file without suffix .trans) */
1.14 ! cvs 168: char TransFileName [20];
1.9 cvs 169: #ifndef PPSTANDALONE
170: SSchema Schema;
171: #endif
1.6 cvs 172: time_t timeLastWrite;
173: /* number of transformations */
174: int NbTrans;
175: /* patterns max depth */
176: int MaxDepth;
177: /* transformation descriptor list */
178: strTransDesc *Transformations;
179: /* next set */
180: struct _TransSet *Next;
181: }
182: strTransSet;
183:
1.4 cvs 184: /* transformation environement */
185: struct _strMatchEnv
1.6 cvs 186: {
1.1 cvs 187: #ifndef PPSTANDALONE
1.6 cvs 188: StructureTree SourceTree;
189: strListElem *ListSubTrees;
1.1 cvs 190: #endif
1.6 cvs 191: strTransSet *TransSets;
192: }
1.4 cvs 193: strMatchEnv;
1.1 cvs 194:
195:
196:
1.6 cvs 197:
1.1 cvs 198: #ifndef PPSTANDALONE
1.4 cvs 199: /* document to wich a transformation is to be applied */
1.2 cvs 200: Document TransDoc;
201:
1.4 cvs 202: /* dialog and messages */
1.2 cvs 203: int TransBaseDialog;
204:
1.1 cvs 205: #define TransMenu 1
206: #define MAX_TRANS_DLG 2
1.2 cvs 207:
1.13 cvs 208: #endif /* PPSTANDALONE */
1.2 cvs 209: #endif /* _TRANS_H__ */
Webmaster