source: trunk/Lucide/SOURCE/plugins/ludoc/luinode.cpp @ 2

Last change on this file since 2 was 2, checked in by Eugene Romanenko, 15 years ago

First import

File size: 3.6 KB
Line 
1
2/*
3 *  This file was generated by the SOM Compiler.
4 *  Generated using:
5 *     SOM incremental update: 2.24
6 */
7
8
9/*
10 *  This file was generated by the SOM Compiler and Emitter Framework.
11 *  Generated using template emitter:
12 *      SOM Emitter emitxtm: 2.23.1.9
13 */
14
15#ifndef SOM_Module_luinode_Source
16#define SOM_Module_luinode_Source
17#endif
18#define LuIndexNode_Class_Source
19
20#include <string.h>
21#include <vector>
22using namespace std;
23
24#include "luinode.xih"
25
26
27
28static char *newstrdup( const char *s )
29{
30    if ( s == NULL ) {
31        return NULL;
32    }
33    char *temp = new char[ strlen( s ) + 1 ];
34    strcpy( temp, s );
35    return temp;
36}
37
38
39typedef vector<LuIndexNode *> NodeList;
40
41
42struct LuINodeData
43{
44    LuLink link;
45    NodeList *nodes;
46    int index;
47
48    LuINodeData( LuLink *l );
49    ~LuINodeData();
50};
51
52LuINodeData::LuINodeData( LuLink *l )
53{
54    memset( &link, 0, sizeof( LuLink ) );
55    if ( l != NULL )
56    {
57        link.title = newstrdup( l->title );
58        link.uri = newstrdup( l->uri );
59        link.type = l->type;
60        link.page = l->page;
61    }
62
63    nodes = new NodeList;
64
65    index = 0;
66}
67
68LuINodeData::~LuINodeData()
69{
70    delete link.title;
71    delete link.uri;
72
73    for ( int i = 0; i < nodes->size(); i++ ) {
74        delete (*nodes)[i];
75    }
76    delete nodes;
77}
78
79
80SOM_Scope void SOMLINK LuIndexNodeInit(LuIndexNode *somSelf,
81                                        Environment *ev, somInitCtrl* ctrl,
82                                       LuLink* link)
83{
84    LuIndexNodeData *somThis;
85    somInitCtrl globalCtrl;
86    somBooleanVector myMask;
87    LuIndexNode_BeginInitializer_LuIndexNodeInit;
88
89    LuIndexNode_Init_SOMObject_somDefaultInit(somSelf, ctrl);
90
91    // local LuIndexNode initialization code added by programmer
92    LuINodeData *d = new LuINodeData( link );
93    somThis->data = d;
94}
95
96
97SOM_Scope void  SOMLINK addChild(LuIndexNode *somSelf,  Environment *ev,
98                                 LuIndexNode* node)
99{
100    LuIndexNodeData *somThis = LuIndexNodeGetData(somSelf);
101    LuINodeData *d = (LuINodeData *)somThis->data;
102    d->nodes->push_back( node );
103}
104
105
106SOM_Scope LuIndexNode*  SOMLINK getFirstChild(LuIndexNode *somSelf,
107                                               Environment *ev)
108{
109    LuIndexNodeData *somThis = LuIndexNodeGetData(somSelf);
110    LuINodeData *d = (LuINodeData *)somThis->data;
111    d->index = 0;
112    if ( d->nodes->size() == 0 ) {
113        return NULL;
114    }
115    return (*(d->nodes))[ d->index++ ];
116}
117
118
119SOM_Scope LuIndexNode*  SOMLINK getNextChild(LuIndexNode *somSelf,
120                                              Environment *ev)
121{
122    LuIndexNodeData *somThis = LuIndexNodeGetData(somSelf);
123    LuINodeData *d = (LuINodeData *)somThis->data;
124    if ( d->index >= d->nodes->size() ) {
125        return NULL;
126    }
127    return (*(d->nodes))[ d->index++ ];
128}
129
130
131SOM_Scope LuLink*  SOMLINK getLink(LuIndexNode *somSelf,  Environment *ev)
132{
133    LuIndexNodeData *somThis = LuIndexNodeGetData(somSelf);
134    LuINodeData *d = (LuINodeData *)somThis->data;
135    return &(d->link);
136}
137
138
139SOM_Scope void SOMLINK somDestruct(LuIndexNode *somSelf, octet doFree,
140                                   som3DestructCtrl* ctrl)
141{
142    LuIndexNodeData *somThis;
143    somDestructCtrl globalCtrl;
144    somBooleanVector myMask;
145    LuIndexNode_BeginDestructor;
146
147    // local LuIndexNode deinitialization code begin
148    LuINodeData *d = (LuINodeData *)somThis->data;
149    //somPrintf( "LuIndexNode destructor, title %s\n", d->link.title );
150    delete d;
151    // local LuIndexNode deinitialization code end
152
153    LuIndexNode_EndDestructor;
154}
155
156
Note: See TracBrowser for help on using the repository browser.