EnglishРусский  

   ..

   sp.tbl

   sp.txt

   spt.txt

   tblget.g

   xml.g

   xmlfuncs.g

   xmluser.g

Ads

Perfect Automation tool
All-In-One: Script editor, Launcher, Scheduler, Keyboard & Mouse Recorder. Try now!

CreateInstall
Freeware and commercial installers.

Cell Phone Batteries
Batteries Plus offers batteries for laptop, camcorder, cell phone, camera.

Gentee needs your help!
How to advertise with us
 
laptop battery

source\lib\xml\xmlfuncs.g
  1 extern{ func f_endtagname }
  2 //*****************************************************************************
  3 
  4 //1-начало сущности & ;
  5 func f_begent
  6 {  
  7    if !X_curtext->xtext.txtype && 
  8       X_curtext->xtext.txaddr_code != X_ia 
  9    {  //Сохраняем текст
 10       X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code
 11       X_curtext->xtext.txtype = $TX_TEXT
 12    }
 13    if X_curtext->xtext.txtype 
 14    {      
 15       //Заготовка текста      
 16       if ++X_ncurtext == X_maxtext
 17       {         
 18          X_maxtext += (X_n = X_maxtext * 3 / 10)
 19          X_x->xml.texts.expand(X_n)
 20       }      
 21       X_curtext = &X_x->xml.texts[X_ncurtext]
 22    }      
 23    X_curnameoff = X_ia + 1       
 24 }
 25 
 26 //2-конец сущ
 27 func f_endent
 28 {
 29    //Сохраняем текст-сущность   
 30    X_sname.clear()
 31    X_curtext->xtext.txaddr_code = &X_x->xml.hentities[ X_sname.append( X_curnameoff, X_ia - X_curnameoff )]       
 32    X_curtext->xtext.txtype = $TX_ENTITY  
 33    //Заготовка текста    
 34    if ++X_ncurtext == X_maxtext
 35    {    
 36       X_maxtext += (X_n = X_maxtext * 3 / 10)
 37       X_x->xml.texts.expand(X_n)
 38    }  
 39    X_curtext = &X_x->xml.texts[X_ncurtext]
 40    X_curtext->xtext.txaddr_code = X_ia + 1
 41 }
 42 
 43 //3-конец числ сущ
 44 func f_endentnum
 45 {
 46    //Сохраняем текст-код   
 47    X_sname.clear()   
 48    X_curtext->xtext.txaddr_code = X_sname.append( ++X_curnameoff, X_ia - X_curnameoff ).int()
 49    X_curtext->xtext.txtype = $TX_SYMBOL
 50    //Заготовка текста
 51    if ++X_ncurtext == X_maxtext
 52    {      
 53       X_maxtext += (X_n = X_maxtext * 3 / 10)
 54       X_x->xml.texts.expand(X_n)
 55    }   
 56    X_curtext = &X_x->xml.texts[X_ncurtext]
 57    X_curtext->xtext.txaddr_code = X_ia + 1
 58 } 
 59 
 60 //4-конец шест сущ
 61 func f_endenthex
 62 {
 63    //Сохраняем текст-код
 64    X_sname.clear()
 65    X_sname.appendch( '0' )   
 66    X_curtext->xtext.txaddr_code =  X_sname.append( ++X_curnameoff, X_ia - X_curnameoff ).int()
 67    X_curtext->xtext.txtype = $TX_SYMBOL
 68    //Заготовка текста
 69    if ++X_ncurtext == X_maxtext
 70    {      
 71       X_maxtext += (X_n = X_maxtext * 3 / 10)
 72       X_x->xml.texts.expand(X_n)
 73    }   
 74    X_curtext = &X_x->xml.texts[X_ncurtext]
 75    X_curtext->xtext.txaddr_code = X_ia + 1
 76 }
 77 
 78 //*****************************************************************************
 79 
 80 //5-начало значения атрибута
 81 func f_begatrval
 82 {
 83    //Запоминаем начало текста      
 84    X_curtext->xtext.txtype = 0
 85    X_curtext->xtext.txaddr_code = X_ia + 1   
 86 }
 87 
 88 //6-конец значения атрибута
 89 func f_endatrval
 90 {
 91    if !X_curtext->xtext.txtype && 
 92       X_curtext->xtext.txaddr_code != X_ia
 93    {  //Сохраняем текст
 94       X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code
 95       X_curtext->xtext.txtype = $TX_TEXT
 96    }
 97    if X_curtext->xtext.txtype 
 98    {
 99       //Заготовка текста
100       if ++X_ncurtext == X_maxtext
101       {         
102          X_maxtext += (X_n = X_maxtext * 3 / 10)
103          X_x->xml.texts.expand(X_n)
104       }      
105       X_curtext = &X_x->xml.texts[X_ncurtext]
106    }
107    
108    X_x->xml.attribs[X_ncurattrib-1].attend = X_ncurtext   
109 }
110 
111 //*****************************************************************************
112 
113 //7-начало <? ?>, начало наименования
114 func f_begquest
115 {   
116    if !X_curtext->xtext.txtype && 
117       X_curtext->xtext.txaddr_code != X_ia - 1
118    {  //Сохраняем текст
119       X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code - 1
120       X_curtext->xtext.txtype = $TX_TEXT
121    }
122    if X_curtext->xtext.txtype 
123    {  //Заготовка текста     
124       if ++X_ncurtext == X_maxtext
125       {         
126          X_maxtext += (X_n = X_maxtext * 3 / 10)
127          X_x->xml.texts.expand(X_n)
128       }      
129       X_curtext = &X_x->xml.texts[X_ncurtext]      
130    }   
131    if X_curtag->xmlitem.tgstart != X_ncurtext
132    {  //Сохраняем элемент-текст      
133       X_curtag->xmlitem.tgtype = $TG_TEXT
134       X_curtag->xmlitem.tgend = X_ncurtext
135       X_curtag->xmlitem.nnext = ++X_ncurtag
136       X_curtag->xmlitem.nparent = X_nparenttag
137       //Заготовка нового элемента      
138       if X_ncurtag == X_maxtag
139       {         
140          X_maxtag += (X_n = X_maxtag * 3 / 10)
141          X_x->xml.tags.expand(X_n)
142       }
143       X_curtag = &X_x->xml.tags[X_ncurtag]
144    }
145    //Предварительное описание элемента <?
146    X_curtag->xmlitem.tgtype = $TG_QUEST
147    X_curtag->xmlitem.tgstart = X_ncurattrib
148    X_curtag->xmlitem.nchild = 0
149    X_curtag->xmlitem.nparent = X_nparenttag   
150    X_curnameoff = X_ia + 1  
151 }
152 
153 //8-конец <? ?>
154 func f_endquest
155 {   
156    if !X_curtag->xmlitem.tgid
157    {
158       f_endtagname()
159    }
160    //Сохранение элемента <? 
161    X_curtag->xmlitem.tgend = X_ncurattrib 
162    X_curtag->xmlitem.nnext = ++X_ncurtag
163    
164    //Заготовка элемента
165    if X_ncurtag == X_maxtag
166    {      
167       X_maxtag += (X_n = X_maxtag * 3 / 10)
168       X_x->xml.tags.expand(X_n)
169    }   
170    //Предварительное описание элемента-текста
171    X_curtag = &X_x->xml.tags[X_ncurtag]
172    X_curtag->xmlitem.tgtype = 0   
173    X_curtag->xmlitem.tgstart = X_ncurtext   
174    X_curtag->xmlitem.nparent = X_nparenttag  
175    X_curtext->xtext.txaddr_code = X_ia + 1 
176    
177 }
178 
179 //*****************************************************************************
180 
181 //9-конец наименования
182 func f_endtagname
183 {  
184    X_sname.clear()         
185    //Сохранение имени
186    X_n = &X_x->xml.hnames[ X_sname.append( X_curnameoff, X_ia - X_curnameoff ) ]
187    if !X_n->uint 
188    {
189       X_n->uint = *X_x->xml.names      
190       X_x->xml.names.expand(1) 
191       X_x->xml.names[X_n->uint] = X_sname           
192    }
193    X_curtag->xmlitem.tgid = X_n->uint
194 }
195 
196 //*****************************************************************************
197 
198 //10-начало имени атрибута
199 func f_begatr
200 {     
201    X_curnameoff = X_ia  
202 } 
203 
204 //11-конец имени атрибута
205 func f_endatr
206 {     
207    X_sname.clear()   
208    //Сохранение имени    
209    X_n = &X_x->xml.hnames[ X_sname.append( X_curnameoff, X_ia - X_curnameoff ) ]
210    if !X_n->uint 
211    {
212       X_n->uint = *X_x->xml.names      
213       X_x->xml.names.expand(1) 
214       X_x->xml.names[X_n->uint] = X_sname           
215    }
216    //Сохранение атрибута
217    X_curattrib->xattrib.attid = X_n->uint   
218    X_curattrib->xattrib.attstart = X_ncurtext
219    //Заготовка атрибута
220    if ++X_ncurattrib == X_maxattrib
221    {      
222       X_maxattrib += (X_n = X_maxattrib * 3 / 10)
223       X_x->xml.attribs.expand(X_n)
224    }   
225    X_curattrib = &X_x->xml.attribs[X_ncurattrib]   
226 }
227 
228 //*****************************************************************************
229 
230 //12-начало <
231 func f_begtag
232 {  
233    if !X_curtext->xtext.txtype && 
234       X_curtext->xtext.txaddr_code != X_ia - 1
235    {  //Сохраняем текст      
236       X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code - 1
237       X_curtext->xtext.txtype = $TX_TEXT
238    }
239    if X_curtext->xtext.txtype 
240    {  
241       //Заготовка текста
242       if ++X_ncurtext == X_maxtext
243       {         
244          X_maxtext += (X_n = X_maxtext * 3 / 10)
245          X_x->xml.texts.expand(X_n)
246       }      
247       X_curtext = &X_x->xml.texts[X_ncurtext]      
248    }
249    if X_curtag->xmlitem.tgstart != X_ncurtext
250    {  //Сохраняем элемент текст
251       X_curtag->xmlitem.tgtype = $TG_TEXT
252       X_curtag->xmlitem.tgend = X_ncurtext
253       X_curtag->xmlitem.nnext = ++X_ncurtag
254       //Заготовка элемента
255       if X_ncurtag == X_maxtag
256       {         
257          X_maxtag += (X_n = X_maxtag * 3 / 10)
258          X_x->xml.tags.expand(X_n)
259       }
260       X_curtag = &X_x->xml.tags[X_ncurtag]
261    }     
262    //Предварительное описание элемента-тэга
263    X_curtag->xmlitem.tgtype = $TG_TAG
264    X_curtag->xmlitem.tgstart = X_ncurattrib
265    X_curtag->xmlitem.nparent = X_nparenttag   
266    X_curnameoff = X_ia
267    //print( "< 2\n" ) 
268 }
269 
270 //13-конец >, конец наименования если не было
271 func f_endtag
272 {  
273    if !X_curtag->xmlitem.tgid : f_endtagname()
274       
275    X_curtag->xmlitem.tgend = X_ncurattrib
276    //Запоминаем текущий тэг в стэке     
277    if X_nstack == X_maxstack
278    {
279       X_stacktags.expand( 100 )
280    } 
281    X_stacktags[X_nstack++] = X_ncurtag
282    X_stacktags[X_nstack++] = X_nparenttag
283    X_nparenttag = X_ncurtag++
284    
285    //Заготовка элемента  
286    if X_ncurtag == X_maxtag
287    {      
288       X_maxtag += (X_n = X_maxtag * 3 / 10)
289       X_x->xml.tags.expand(X_n)
290    }   
291    X_curtag = &X_x->xml.tags[X_ncurtag]
292    //Предварительное описание элемента текста
293    X_curtag->xmlitem.tgtype = 0   
294    X_curtag->xmlitem.tgstart = X_ncurtext   
295    X_curtag->xmlitem.nparent = X_nparenttag   
296    X_curtext->xtext.txaddr_code = X_ia + 1      
297 }
298 
299 //14-конец /> конец наименования если не было)
300 func f_endtagend
301 {   
302    if !X_curtag->xmlitem.tgid: f_endtagname()
303    
304    //Сохранение элемента тэга
305    X_curtag->xmlitem.tgtype = $TG_NOCHILD
306    X_curtag->xmlitem.tgend = X_ncurattrib   
307    X_curtag->xmlitem.nnext = ++X_ncurtag   
308    //Заготовка элемента   
309    if X_ncurtag == X_maxtag
310    {  
311       X_maxtag += (X_n = X_maxtag * 3 / 10)
312       X_x->xml.tags.expand(X_n)
313    }
314    X_curtag = &X_x->xml.tags[X_ncurtag]
315    //Предвариельное описание элемента текста
316    X_curtag->xmlitem.tgtype = 0
317    X_curtag->xmlitem.tgstart = X_ncurtext
318    X_curtag->xmlitem.nparent = X_nparenttag
319    X_curtext->xtext.txaddr_code = X_ia + 1   
320 }
321 
322 //*****************************************************************************
323 
324 //15-начало </ начало наименования
325 func f_begendtag
326 {
327    if !X_curtext->xtext.txtype && 
328       X_curtext->xtext.txaddr_code != X_ia - 1
329    {  //Сохраняем текст      
330       X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code - 1
331       X_curtext->xtext.txtype = $TX_TEXT       
332    }
333    if X_curtext->xtext.txtype 
334    {  //Заготовка текста
335       if ++X_ncurtext == X_maxtext
336       {         
337          X_maxtext += (X_n = X_maxtext * 3 / 10)
338          X_x->xml.texts.expand(X_n)
339       }      
340       X_curtext = &X_x->xml.texts[X_ncurtext]               
341    }
342    if X_curtag->xmlitem.tgstart != X_ncurtext
343    {  //Сохраняем элемент текст   
344       X_curtag->xmlitem.tgtype = $TG_TEXT
345       X_curtag->xmlitem.tgend = X_ncurtext   
346       X_curtag->xmlitem.nnext = ++X_ncurtag         
347       //Заготовка элемента
348       if X_ncurtag == X_maxtag
349       {         
350          X_maxtag += (X_n = X_maxtag * 3 / 10)
351          X_x->xml.tags.expand(X_n)
352       }
353       X_curtag = &X_x->xml.tags[X_ncurtag]          
354    }   
355    if X_nstack 
356    {  //Вытаскиваем последний элемент из стэка
357       X_nparenttag = X_stacktags[--X_nstack]      
358       X_tparenttag = &X_x->xml.tags[X_n = X_stacktags[--X_nstack]]            
359       if X_n != X_ncurtag - 1      
360       {       
361          X_tparenttag->xmlitem.nchild = X_n + 1
362          X_x->xml.tags[X_ncurtag-1].nnext = 0
363          if X_n != X_curtag - 2 : X_x->xml.tags[X_ncurtag-2].nnext = 0                  
364          //print( "next4=\(0) \(X_ncurtag-1) \(X_n)\n" )         
365       }
366       X_tparenttag->xmlitem.nnext = X_ncurtag
367    } 
368    else
369    {
370       X_x->xml.err = 2
371    }   
372 }
373 
374 //16-конец </ > 
375 func f_begendtagend
376 {  
377    //Предварительное описание элемента текста
378    X_curtag->xmlitem.tgtype = 0
379    X_curtag->xmlitem.tgstart = X_ncurtext
380    X_curtag->xmlitem.nparent = X_nparenttag   
381    X_curtext->xtext.txaddr_code = X_ia + 1
382 }
383 
384 //*****************************************************************************
385 
386 //17-начало <![CDATA[ ]]>
387 func f_begcdata
388 {     
389    if !X_curtext->xtext.txtype && 
390       X_curtext->xtext.txaddr_code != X_ia - 8
391    {  //Заканчиваем текст
392       X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code - 8
393       X_curtext->xtext.txtype = $TX_TEXT
394    }
395    if X_curtext->xtext.txtype 
396    {      
397       //Добавляем заготовку элемента  
398       if ++X_ncurtext == X_maxtext
399       {         
400          X_maxtext += (X_n = X_maxtext * 3 / 10)
401          X_x->xml.texts.expand(X_n)
402       }    
403       X_curtext = &X_x->xml.texts[X_ncurtext]
404    }   
405    X_curtext->xtext.txaddr_code = X_ia + 1 
406 }
407 
408 //18-конец <![CDATA[ ]]>
409 func f_endcdata
410 {
411    //Заканчиваем текущий текст  
412    X_curtext->xtext.txlen = X_ia - X_curtext->xtext.txaddr_code
413    X_curtext->xtext.txtype = $TX_TEXT   
414    //Добавляем заготовку текста   
415    if ++X_ncurtext == X_maxtext
416    {      
417       X_maxtext += (X_n = X_maxtext * 3 / 10)
418       X_x->xml.texts.expand(X_n)
419    }   
420    X_curtext = &X_x->xml.texts[X_ncurtext]   
421    X_curtext->xtext.txaddr_code = X_ia + 1
422 }
423 
424 //*****************************************************************************
425 
426 func f_error
427 {
428    X_x->xml.err = 1
429    //print( "ERROR \X_n" )
430 }
Edit