Initial revision
[TestXSLT.git] / libsablot / src / engine / sdom.h
1 /* 
2  * The contents of this file are subject to the Mozilla Public
3  * License Version 1.1 (the "License"); you may not use this file
4  * except in compliance with the License. You may obtain a copy of
5  * the License at http://www.mozilla.org/MPL/
6  * 
7  * Software distributed under the License is distributed on an "AS
8  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9  * implied. See the License for the specific language governing
10  * rights and limitations under the License.
11  * 
12  * The Original Code is the Sablotron XSLT Processor.
13  * 
14  * The Initial Developer of the Original Code is Ginger Alliance Ltd.
15  * Portions created by Ginger Alliance are Copyright (C) 2000-2002
16  * Ginger Alliance Ltd. All Rights Reserved.
17  * 
18  * Contributor(s):
19  * 
20  * Alternatively, the contents of this file may be used under the
21  * terms of the GNU General Public License Version 2 or later (the
22  * "GPL"), in which case the provisions of the GPL are applicable 
23  * instead of those above.  If you wish to allow use of your 
24  * version of this file only under the terms of the GPL and not to
25  * allow others to use your version of this file under the MPL,
26  * indicate your decision by deleting the provisions above and
27  * replace them with the notice and other provisions required by
28  * the GPL.  If you do not delete the provisions above, a recipient
29  * may use your version of this file under either the MPL or the
30  * GPL.
31  */
32
33 /* sdom.h */
34
35 #ifndef SDomHIncl
36 #define SDomHIncl
37
38 //used for DISABLE_DOM only anything else is DANGEROUS
39 #ifdef HAVE_CONFIG_H
40 #include <config.h>
41 #endif
42
43 #ifndef DISABLE_DOM
44
45 #include "sablot.h"
46
47 /**
48  **
49  **  types
50  **
51  **/
52
53 typedef void* SDOM_Node;
54 typedef void* SDOM_NodeList;
55 /* typedef void* SDOM_Document; */
56
57 typedef enum
58 {
59   SDOM_ELEMENT_NODE = 1,
60   SDOM_ATTRIBUTE_NODE = 2,
61   SDOM_TEXT_NODE = 3,
62   SDOM_CDATA_SECTION_NODE = 4,
63   SDOM_ENTITY_REFERENCE_NODE = 5,
64   SDOM_ENTITY_NODE = 6,
65   SDOM_PROCESSING_INSTRUCTION_NODE = 7,
66   SDOM_COMMENT_NODE = 8,
67   SDOM_DOCUMENT_NODE = 9,
68   SDOM_DOCUMENT_TYPE_NODE = 10,
69   SDOM_DOCUMENT_FRAGMENT_NODE = 11,
70   SDOM_NOTATION_NODE = 12,
71   SDOM_OTHER_NODE    /* not in spec */
72
73 SDOM_NodeType;
74
75 /*
76  *  we define DOM_char as char, although the spec says strings should be
77  *  UTF_16. Needs check.
78  */
79 typedef char SDOM_char;
80
81
82 /*
83  *  DomException
84  *  will be an enum of all the values given in the spec.
85  */
86  
87 /*
88   INDEX_SIZE_ERR, 1
89   STRING_SIZE_ERR, 2
90   HIERARCHY_REQUEST_ERR, 3
91   WRONG_DOCUMENT_ERR, 4
92   INVALID_CHARACTER_ERR, 5
93   NO_DATA_ALLOWED_ERR, 6
94   NO_MODIFICATION_ALLOWED_ERR, 7
95   NOT_FOUND_ERR, 8
96   NOT_SUPPORTED_ERR, 9
97   INUSE_ATTRIBUTE_ERR, 10
98   INVALID_STATE_ERR, 11
99   SYNTAX_ERR, 12
100   INVALID_MODIFICATION_ERR, 13
101   NAMESPACE_ERR, 14
102   INVALID_ACCESS_ERR, 15
103 */
104
105 typedef enum 
106 {
107     SDOM_OK,
108     SDOM_INDEX_SIZE_ERR = 1,
109     SDOM_DOMSTRING_SIZE_ERR = 2,
110     SDOM_HIERARCHY_REQUEST_ERR = 3,
111     SDOM_WRONG_DOCUMENT_ERR = 4,
112     SDOM_INVALID_CHARACTER_ERR = 5,
113     SDOM_NO_DATA_ALLOWED_ERR = 6,
114     SDOM_NO_MODIFICATION_ALLOWED_ERR = 7,
115     SDOM_NOT_FOUND_ERR = 8,
116     SDOM_NOT_SUPPORTED_ERR = 9,
117     SDOM_INUSE_ATTRIBUTE_ERR = 10,
118     SDOM_INVALID_STATE_ERR = 11,
119     SDOM_SYNTAX_ERR = 12,
120     SDOM_INVALID_MODIFICATION_ERR = 13,
121     SDOM_NAMESPACE_ERR = 14,
122     SDOM_INVALID_ACCESS_ERR = 15,
123     /* not in spec below this point: */
124     SDOM_INVALID_NODE_TYPE, /* eg passing a non-element for an element */
125     SDOM_QUERY_PARSE_ERR,
126     SDOM_QUERY_EXECUTION_ERR,
127     SDOM_NOT_OK
128 } SDOM_Exception;
129
130 /**
131  **
132  **  Node
133  **  n is always the node the function is to operate on (kind of 'this')
134  **
135  **/
136
137 /*
138     createElement
139     Creates a new element Node with NULL parent and specified owner, 
140     and returns it in *pn.
141     Raises:
142  */
143 Declare(
144 SDOM_Exception SDOM_createElement(
145                                   SablotSituation s, 
146                                   SDOM_Document d, 
147                                   SDOM_Node *pn, 
148                                   const SDOM_char *tagName);
149 )       
150
151 //_JP_ v
152 /*
153     createElementNS
154     Creates a new element Node with NULL parent and specified owner, 
155     and returns it in *pn.
156     Raises:
157     SDOM_NAMESPACE_ERR or SDOM_INVALID_CHARACTER_ERR when qName or uri malformed
158  */
159 Declare(
160 SDOM_Exception SDOM_createElementNS(
161                                     SablotSituation s, 
162                                     SDOM_Document d, 
163                                     SDOM_Node *pn, 
164                                     const SDOM_char *uri,
165                                     const SDOM_char *qName);
166 )       
167 //_JP_ ^
168
169 /*
170     createAttribute
171     Creates a new attribute Node and returns it in *pn.
172     Raises:
173  */
174
175 Declare
176 (
177 SDOM_Exception SDOM_createAttribute(
178     SablotSituation s, 
179     SDOM_Document d, 
180     SDOM_Node *pn, 
181     const SDOM_char *name);
182 )
183
184 //_JP_ v
185 /*
186     createAttributeNS
187     Creates a new attribute Node and returns it in *pn.
188     Raises:
189     SDOM_NAMESPACE_ERR or SDOM_INVALID_CHARACTER_ERR when qName or uri malformed
190  */
191 Declare(
192 SDOM_Exception SDOM_createAttributeNS(
193     SablotSituation s, 
194     SDOM_Document d, 
195     SDOM_Node *pn, 
196     const SDOM_char *uri,
197     const SDOM_char *qName);
198 )       
199 //_JP_ ^
200
201
202 /*
203     createTextNode
204     Raises:
205  */
206
207 Declare
208 (
209 SDOM_Exception SDOM_createTextNode(
210     SablotSituation s, 
211     SDOM_Document d, 
212     SDOM_Node *pn, 
213     const SDOM_char *data);
214 )
215
216 /*
217     createAttribute
218     Creates a new attribute Node and returns it in *pn.
219     Raises:
220  */
221
222 Declare
223 (
224 SDOM_Exception SDOM_createCDATASection(
225     SablotSituation s, 
226     SDOM_Document d, 
227     SDOM_Node *pn,
228     const SDOM_char *data);
229 )
230
231 /*
232     createComment
233     Raises:
234  */
235
236 Declare
237 (
238 SDOM_Exception SDOM_createComment(
239     SablotSituation s, 
240     SDOM_Document d, 
241     SDOM_Node *pn, 
242     const SDOM_char *data);
243 )
244
245 /*
246     createProcessingInstruction
247     Raises:
248  */
249
250 Declare
251 (
252 SDOM_Exception SDOM_createProcessingInstruction(
253     SablotSituation s, 
254     SDOM_Document d, 
255     SDOM_Node *pn, 
256     const SDOM_char *target,
257     const SDOM_char *data);
258 )
259
260 /*
261     disposeNode
262     Frees all memory used by the node.
263     Raises:
264     !SPEC: Not in the spec.
265  */
266
267 Declare
268 (
269 SDOM_Exception SDOM_disposeNode(
270     SablotSituation s,
271     SDOM_Node n);
272 )
273
274
275 /*
276     getNodeType
277     Returns the node type in *pType.
278     Raises:
279  */
280
281 Declare
282 (
283 SDOM_Exception SDOM_getNodeType(
284     SablotSituation s,
285     SDOM_Node n, 
286     SDOM_NodeType *pType);
287 )
288
289
290 /*
291     getNodeName
292     Returns the pointer to the name of the node in *pName.
293 */
294
295 Declare
296 (
297 SDOM_Exception SDOM_getNodeName(
298     SablotSituation s, 
299     SDOM_Node n, 
300     SDOM_char **pName);
301 )
302
303 Declare
304 (
305 SDOM_Exception SDOM_getNodeNSUri(
306     SablotSituation s, 
307     SDOM_Node n, 
308     SDOM_char **pName);
309 )
310
311 Declare
312 (
313 SDOM_Exception SDOM_getNodePrefix(
314     SablotSituation s, 
315     SDOM_Node n, 
316     SDOM_char **pName);
317 )
318
319 Declare
320 (
321 SDOM_Exception SDOM_getNodeLocalName(
322     SablotSituation s, 
323     SDOM_Node n, 
324     SDOM_char **pName);
325 )
326
327 /*
328     setNodeName
329     Sets the node name.
330 */
331 Declare(
332 SDOM_Exception SDOM_setNodeName(
333     SablotSituation s,
334     SDOM_Node n, 
335     const SDOM_char *name);
336 )
337
338 /*
339     getNodeValue
340     Returns in *pValue the string value of the node.
341 */
342 Declare(
343 SDOM_Exception SDOM_getNodeValue(
344     SablotSituation s,
345     SDOM_Node n, 
346     SDOM_char **pValue);
347 )
348
349 /*
350     setNodeValue
351     Sets the node value.
352 */
353 Declare(
354 SDOM_Exception SDOM_setNodeValue(
355     SablotSituation s,
356     SDOM_Node n, 
357     const SDOM_char *value);
358 )
359
360 /*
361     getParentNode
362     Returns the parent in *pParent.
363 */
364 Declare(
365 SDOM_Exception SDOM_getParentNode(
366     SablotSituation s,
367     SDOM_Node n, 
368     SDOM_Node *pParent);
369 )
370
371 /*
372     getFirstChild
373     Returns the first child in *pFirstChild.
374 */
375 Declare(
376 SDOM_Exception SDOM_getFirstChild(
377     SablotSituation s,
378     SDOM_Node n, 
379     SDOM_Node *pFirstChild);
380 )
381
382 /*
383     getLastChild
384     Returns the last child in *pLastChild.
385 */
386 Declare(
387 SDOM_Exception SDOM_getLastChild(
388     SablotSituation s,
389     SDOM_Node n, 
390     SDOM_Node *pLastChild);
391 )
392
393 /*
394     getPreviousSibling
395     Returns the previous sibling in *pPreviousSibling.
396 */
397 Declare(
398 SDOM_Exception SDOM_getPreviousSibling(
399     SablotSituation s,
400     SDOM_Node n, 
401     SDOM_Node *pPreviousSibling);
402 )
403
404 /*
405     getNextSibling
406     Returns the next sibling in *pNextSibling.
407 */
408 Declare(
409 SDOM_Exception SDOM_getNextSibling(
410     SablotSituation s,
411     SDOM_Node n, 
412     SDOM_Node *pNextSibling);
413 )
414
415 /*
416     getChildNode
417     Returns the child node in specified index or NULL.
418 */
419 Declare(
420 SDOM_Exception SDOM_getChildNodeIndex(
421     SablotSituation s,
422     SDOM_Node n,
423     int index,
424     SDOM_Node *pChildNode);
425 )
426
427 /*
428     getChildNodeCount
429     Returns the count of child nodes.
430 */
431 Declare(
432 SDOM_Exception SDOM_getChildNodeCount(
433     SablotSituation s,
434     SDOM_Node n,
435     int *count);
436 )
437
438 /*
439     getOwnerDocument
440     Returns, in *pOwnerDocument, the Document owning the node.
441     !SPEC: If the node is standalone, returns NULL.
442 */
443 Declare(
444 SDOM_Exception SDOM_getOwnerDocument(
445     SablotSituation s,
446     SDOM_Node n, 
447     SDOM_Document *pOwnerDocument);
448 )
449
450 /*
451     insertBefore
452     Inserts newChild as n's child, just before refChild.
453 */
454 Declare(
455 SDOM_Exception SDOM_insertBefore(
456     SablotSituation s, 
457     SDOM_Node n, 
458     SDOM_Node newChild, 
459     SDOM_Node refChild);
460 )
461
462 /*
463     removeChild
464     Removes oldChild (a child of n) without deallocating it.
465 */
466
467 Declare(
468 SDOM_Exception SDOM_removeChild(
469     SablotSituation s, 
470     SDOM_Node n, 
471     SDOM_Node oldChild);
472 )
473
474 /*
475     replaceChild
476     Replaces oldChild (a child of n) by newChild.
477 */
478 Declare(
479 SDOM_Exception SDOM_replaceChild(
480     SablotSituation s,
481     SDOM_Node n, 
482     SDOM_Node newChild, 
483     SDOM_Node oldChild);
484 )
485
486 /*
487     appendChild
488     Appends newChild as the last of n's children.
489 */
490 Declare(
491 SDOM_Exception SDOM_appendChild(
492     SablotSituation s,
493     SDOM_Node n, 
494     SDOM_Node newChild);
495 )
496
497 /*
498     cloneNode
499     Duplicates the node, returning the result in *clone.
500     If deep is nonzero, the cloning process will be recursive.
501 */
502
503 Declare(
504 SDOM_Exception SDOM_cloneNode(
505     SablotSituation s,
506     SDOM_Node n, 
507     int deep, 
508     SDOM_Node *clone);
509 )
510
511 /*
512     cloneForeignNode
513     Duplicates a node from a different doc, returning the result in *clone.
514     If deep is nonzero, the cloning process will be recursive.
515     As opposed to cloneNode, represents a Document method
516 */
517
518 Declare(
519 SDOM_Exception SDOM_cloneForeignNode(
520     SablotSituation s,
521     SDOM_Document d,
522     SDOM_Node n, 
523     int deep, 
524     SDOM_Node *clone);
525 )
526
527 /*
528     getAttribute
529     Returns, in *pValue, the contents of the attribute (of n) named 'name'.
530 */
531 Declare(
532 SDOM_Exception SDOM_getAttribute(
533     SablotSituation s,
534     SDOM_Node n, 
535     const SDOM_char *name, 
536     SDOM_char **pValue);
537 )
538
539 /*
540     getAttributeNS
541     Returns, in *pValue, the contents of the attribute (of n) with 'uri' and 'local'.
542 */
543 Declare(
544 SDOM_Exception SDOM_getAttributeNS(
545     SablotSituation s, 
546     SDOM_Node n, 
547     SDOM_char *uri, 
548     SDOM_char *local, 
549     SDOM_char **pValue);
550 )
551
552 /*
553     getAttributeNode
554     Returns, in *attr, the attribute named 'name'.
555 */
556 Declare(
557 SDOM_Exception SDOM_getAttributeNode(
558     SablotSituation s,
559     SDOM_Node n, 
560     const SDOM_char *name, 
561     SDOM_Node *attr);
562 )
563
564 /*
565     getAttributeNodeNS
566     Returns, in *attr, the n's attribute with uri and local.
567 */
568 Declare(
569 SDOM_Exception SDOM_getAttributeNodeNS(
570     SablotSituation s,
571     SDOM_Node n, 
572     SDOM_char *uri, 
573     SDOM_char *local, 
574     SDOM_Node *attr);
575 )
576
577 //_JP_ v
578 /*
579     getAttributeNodeIndex
580     Returns, in *attr, the index'th attribute, namespaces precede other atts.
581 */
582 Declare(
583 SDOM_Exception SDOM_getAttributeNodeIndex(
584     SablotSituation s, 
585     SDOM_Node n, 
586     const int index, 
587     SDOM_Node *attr);
588 )
589
590 /*
591     getAttributeNodeCount
592     Returns, in *count, the count of atts, including namespaces in scope.
593 */
594 Declare(
595 SDOM_Exception SDOM_getAttributeNodeCount(
596     SablotSituation s, 
597     SDOM_Node n, 
598     int *count);
599 )
600 //_JP_ ^
601
602 /*
603     setAttribute
604     Assigns the given value to n's attribute named 'name'.
605 */
606 Declare(
607 SDOM_Exception SDOM_setAttribute(
608     SablotSituation s,
609     SDOM_Node n, 
610     const SDOM_char *name, 
611     const SDOM_char *value);
612 )
613
614 /*
615     setAttributeNS
616     Assigns the given value to n's attribute with 'uri' and qualified name 'qName'.
617 */
618 Declare(
619 SDOM_Exception SDOM_setAttributeNS(
620     SablotSituation s,
621     SDOM_Node n, 
622     const SDOM_char *uri, 
623     const SDOM_char *qName, 
624     const SDOM_char *value);
625 )
626
627 /*
628     setAttributeNode
629     Assigns the given attnode as n's attribute.
630     Returns replaced, if was replaced some node with the same nodeName.
631 */
632 Declare(
633 SDOM_Exception SDOM_setAttributeNode(
634     SablotSituation s, 
635     SDOM_Node n, 
636     SDOM_Node attnode, 
637     SDOM_Node *replaced);
638 )
639
640 /*
641     setAttributeNodeNS
642     Assigns the given attnode to n's attribute with attnode.uri and attnode.localname.
643     Returns replaced, if was replaced some node.
644 */
645 Declare(
646 SDOM_Exception SDOM_setAttributeNodeNS(
647     SablotSituation s, 
648     SDOM_Node n, 
649     SDOM_Node attnode, 
650     SDOM_Node *replaced);
651 )
652
653 /*
654     removeAttribute
655     Removes the given attribute of n. 
656 */
657 Declare(
658 SDOM_Exception SDOM_removeAttribute(
659     SablotSituation s,
660     SDOM_Node n, 
661     const SDOM_char *name);
662 )
663
664 /*
665     removeAttribute
666     Removes the given attribute of n. 
667 */
668 Declare(
669 SDOM_Exception SDOM_removeAttributeNode(
670     SablotSituation s, 
671     SDOM_Node n, 
672     SDOM_Node attnode,
673     SDOM_Node *removed);
674 )
675 /*
676     attributeElement
677     returns owner element of attribute specified
678 */
679 Declare(
680 SDOM_Exception SDOM_getAttributeElement(
681     SablotSituation s,
682     SDOM_Node attr, 
683     SDOM_Node *owner);
684 )
685
686 /*
687     getAttributeList
688     Returns, in *pAttrList, the list of all attributes of the element n.
689     !SPEC: Not in spec.
690 */
691 Declare(
692 SDOM_Exception SDOM_getAttributeList(
693     SablotSituation s, 
694     SDOM_Node n, 
695     SDOM_NodeList *pAttrList);
696 )
697
698 /**
699  **  END Node
700  **/
701
702
703 /**
704  **  Functions related to Document
705  **/
706
707
708 /*
709     docToString
710     Serializes the document, returning the resulting string in
711     *pSerialized, which is a Sablotron-allocated buffer.
712     !SPEC: Not in spec.
713 */ 
714 Declare(
715 SDOM_Exception SDOM_docToString(
716     SablotSituation s,
717     SDOM_Document d, 
718     SDOM_char **pSerialized);
719 )
720
721 Declare(
722 SDOM_Exception SDOM_nodeToString(
723     SablotSituation s,
724     SDOM_Document d, 
725     SDOM_Node n,
726     SDOM_char **pSerialized);
727 )
728
729 /**
730  **  END Document functions
731  **/
732
733
734 /**
735  **  NodeList
736  **  An ordered collection of nodes, returned by xql.
737  **/
738
739
740 /*
741     getNodeListLength
742     Returns, in *pLength, the number of nodes in the list l. 
743     !SPEC: Not in spec.
744 */
745 Declare(
746 SDOM_Exception SDOM_getNodeListLength(
747     SablotSituation s,
748     SDOM_NodeList l, 
749     int *pLength);
750 )
751
752 /*
753     getNodeListItem
754     Returns, in *pItem, the index'th member of the node list l.
755     !SPEC: Not in spec.
756 */
757 Declare(
758 SDOM_Exception SDOM_getNodeListItem(
759     SablotSituation s,
760     SDOM_NodeList l, 
761     int index, 
762     SDOM_Node *pItem);
763 )
764
765 /*
766     disposeNodeList
767     Destroys the node list l. The nodes themselves are NOT disposed. 
768     !SPEC: Not in spec.
769 */
770 Declare(
771 SDOM_Exception SDOM_disposeNodeList(
772     SablotSituation s,
773     SDOM_NodeList l);
774 )
775
776 /**
777  **  END NodeList
778  **/
779
780
781 /**
782  **  Miscellaneous
783  **/
784
785 /*
786     xql
787     Returns, in *pResult, the list of all nodes satisfying the XPath
788     query given as a string in 'query'. For the evaluation of the query, the
789     current node will be set to currentNode.
790     Note that the query is necessarily rather restricted.
791     After the contents of *pResult have been retrieved, the list should
792     be freed using disposeNodeList.
793     !SPEC: Not in spec.
794 */ 
795 Declare(
796 SDOM_Exception SDOM_xql(
797     SablotSituation s,
798     const SDOM_char *query, 
799     SDOM_Node currentNode, 
800     SDOM_NodeList *pResult);
801 )
802
803 Declare(
804 SDOM_Exception SDOM_xql_ns(
805     SablotSituation s,
806     const SDOM_char *query, 
807     SDOM_Node currentNode,
808     char** nsmap,
809     SDOM_NodeList *pResult);
810 )
811
812 /**
813  **  END Miscellaneous
814  **
815  **
816  **
817  **  Exception retrieval
818  **/
819
820 /*
821     getExceptionCode
822     returns the code of the pending exception
823 */
824
825 Declare
826 (
827     int SDOM_getExceptionCode(SablotSituation s);
828 )
829
830 /*
831     getExceptionMessage
832     returns the message for the pending exception
833 */
834
835 Declare
836 (
837     char* SDOM_getExceptionMessage(SablotSituation s);
838 )
839
840 /*
841     getExceptionDetails
842     returns extra information for the pending exception
843     - on the code and message of the primary error
844     - on the document and file line where the primary error occured
845 */
846
847 Declare
848 (
849     void SDOM_getExceptionDetails(
850         SablotSituation s,
851             int *code,
852             char **message,
853             char **documentURI,
854             int *fileLine);
855 )
856
857 /**
858  **    END Exception retrieval
859  **
860  **
861  **    Internal functions
862  **/
863
864 /*
865     setNodeInstanceData
866     saves a pointer in a node instance
867 */
868
869 Declare(
870 void SDOM_setNodeInstanceData(SDOM_Node n, void *data);
871 )
872
873 /*
874     getNodeInstanceData
875     retrieves the saved pointer
876 */
877 Declare(
878 void* SDOM_getNodeInstanceData(SDOM_Node n);
879 )
880 /*
881     setDisposeNodeCallback
882     sets callback to be called on every node disposal
883 */
884
885 typedef void SDOM_NodeCallback(SDOM_Node n);
886
887 Declare
888 (
889     void SDOM_setDisposeCallback(SDOM_NodeCallback *f);
890 )
891
892 Declare
893 (
894     SDOM_NodeCallback* SDOM_getDisposeCallback();
895 )
896
897 /**
898  **  FOR IMPLEMENTATION IN PERL
899  **  None of these fuctions appear in the spec.
900  **/
901
902
903 /* 
904     ArrayRef getChildNodes(Node n)
905     Returns the array of n's children.
906     Implement using getFirstChild and getNextSibling.
907
908
909     HashRef getAttributes(Node n)
910     Returns the hash of n's attributes.
911     Implement using getAttributeList, getNodeListLength, 
912     getNodeListItem, getNodeName and getNodeValue.
913
914
915     setAttributes(Node n, HashRef atts)
916     Sets n's attributes to atts, keeping the old ones alive but making
917     them standalone.
918     Implement using getAttributeList, getNodeListLength, removeAttribute
919     and setAttribute (not too efficient perhaps).
920 */
921
922      /* _TH_ v */
923 Declare
924 (
925  void SDOM_tmpListDump(SDOM_Document doc, int p);
926 )
927
928 Declare
929 (
930  SDOM_Exception SDOM_compareNodes(
931     SablotSituation s, 
932     SDOM_Node n1,
933     SDOM_Node n2,
934     int *res);
935 )
936
937 #endif /* DISABLE_DOM */
938
939 #endif /* SDomHIncl */