Rudiments
domnode.h
1 // Copyright (c) 1999-2018 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_DOMNODE_H
5 #define RUDIMENTS_DOMNODE_H
6 
7 #include <rudiments/private/domnodeincludes.h>
8 
9 enum domnodetype {
10  NULL_DOMNODETYPE=0,
11  ROOT_DOMNODETYPE,
12  TAG_DOMNODETYPE,
13  ATTRIBUTE_DOMNODETYPE,
14  TEXT_DOMNODETYPE,
15  COMMENT_DOMNODETYPE,
16  CDATA_DOMNODETYPE
17 };
18 
19 class dom;
20 
122 class RUDIMENTS_DLLSPEC domnode {
123  public:
139  domnode(dom *dom, domnode *nullnode);
140 
144  domnode(dom *dom, domnode *nullnode,
145  domnodetype type,
146  const char *name,
147  const char *value);
148 
152  domnode(dom *dom, domnode *nullnode,
153  domnodetype type,
154  const char *ns,
155  const char *name,
156  const char *value);
157 
160  virtual ~domnode();
161 
162 
172 
173 
177 
182 
183 
185  virtual domnodetype getType() const;
186 
188  virtual const char *getNamespace() const;
189 
191  virtual const char *getName() const;
192 
194  virtual const char *getValue() const;
195 
196 
199  dom *getTree() const;
200 
203  virtual domnode *getParent() const;
204 
207  virtual uint64_t getPosition() const;
208 
211  virtual domnode *getPreviousSibling() const;
212 
217 
221  domnode *getPreviousTagSibling(const char *name) const;
222 
227  const char *name) const;
228 
233  const char *name) const;
234 
239  const char *ns,
240  const char *name) const;
241 
252  const char *name,
253  const char *attributename,
254  const char *attributevalue) const;
255 
266  const char *ns,
267  const char *name,
268  const char *attributename,
269  const char *attributevalue) const;
270 
280  const char *name,
281  const char *attributename,
282  const char *attributevalue) const;
283 
294  const char *ns,
295  const char *name,
296  const char *attributename,
297  const char *attributevalue) const;
298 
301  virtual domnode *getNextSibling() const;
302 
307 
311  domnode *getNextTagSibling(const char *name) const;
312 
316  domnode *getNextTagSibling(const char *ns,
317  const char *name) const;
318 
323  const char *name) const;
324 
329  const char *ns,
330  const char *name) const;
331 
342  const char *name,
343  const char *attributename,
344  const char *attributevalue) const;
345 
355  const char *ns,
356  const char *name,
357  const char *attributename,
358  const char *attributevalue) const;
359 
369  const char *name,
370  const char *attributename,
371  const char *attributevalue) const;
372 
382  const char *ns,
383  const char *name,
384  const char *attributename,
385  const char *attributevalue) const;
386 
392  const char * const *set) const;
393 
400  const char *ns,
401  const char * const *set) const;
402 
403 
405  virtual uint64_t getChildCount() const;
406 
409  virtual domnode *getFirstChild() const;
410 
413  domnode *getFirstChild(const char *name) const;
414 
417  domnode *getFirstChild(const char *ns,
418  const char *name) const;
419 
423  const char *name) const;
424 
429  const char *ns,
430  const char *name) const;
431 
434  domnode *getChild(uint64_t position) const;
435 
444  domnode *getFirstChild(const char *name,
445  const char *attributename,
446  const char *attributevalue)
447  const;
448 
457  domnode *getFirstChild(const char *ns,
458  const char *name,
459  const char *attributename,
460  const char *attributevalue)
461  const;
462 
472  const char *name,
473  const char *attributename,
474  const char *attributevalue)
475  const;
476 
485  const char *ns,
486  const char *name,
487  const char *attributename,
488  const char *attributevalue)
489  const;
490 
495 
499  domnode *getFirstTagChild(const char *name) const;
500 
504  domnode *getFirstTagChild(const char *ns,
505  const char *name) const;
506 
511  const char *name) const;
512 
518  const char *ns,
519  const char *name) const;
520 
531  const char *name,
532  const char *attributename,
533  const char *attributevalue) const;
534 
543  const char *ns,
544  const char *name,
545  const char *attributename,
546  const char *attributevalue) const;
547 
557  const char *name,
558  const char *attributename,
559  const char *attributevalue) const;
560 
570  const char *ns,
571  const char *name,
572  const char *attributename,
573  const char *attributevalue) const;
574 
580  const char * const *set) const;
581 
588  const char *ns,
589  const char * const *set) const;
590 
591 
595  domnode *getFirstTagDescendent(const char *name) const;
596 
597 
602  const char *ns,
603  const char *name) const;
604 
605 
610  const char *name) const;
611 
612 
618  const char *ns,
619  const char *name) const;
620 
631  const char *name,
632  const char *attributename,
633  const char *attributevalue) const;
634 
643  const char *ns,
644  const char *name,
645  const char *attributename,
646  const char *attributevalue) const;
647 
657  const char *name,
658  const char *attributename,
659  const char *attributevalue) const;
660 
670  const char *ns,
671  const char *name,
672  const char *attributename,
673  const char *attributevalue) const;
674 
680  const char * const *set) const;
681 
687  const char *ns,
688  const char * const *set) const;
689 
692  domnode *getNextTag() const;
693 
699  domnode *getNextTag(domnode *top) const;
700 
704 
711 
712 
714  virtual uint64_t getAttributeCount() const;
715 
718  virtual domnode *getAttribute(const char *name) const;
719 
723  const char *name) const;
724 
727  virtual domnode *getAttribute(uint64_t position) const;
728 
731  const char *getAttributeValue(const char *name) const;
732 
736  const char *getAttributeValue(uint64_t position) const;
737 
745  constnamevaluepairs *getAttributes() const;
746 
750  void setAttributeValue(const char *name, const char *value);
751 
755  void setAttributeValue(const char *name, int64_t value);
756 
760  void setAttributeValue(const char *name, uint64_t value);
761 
764 
767  virtual bool isNullNode() const;
768 
769 
771  virtual void setType(domnodetype type);
772 
774  virtual void setNamespace(const char *ns);
775 
777  virtual void setName(const char *name);
778 
780  void setName(const char *ns, const char *name);
781 
783  virtual void setValue(const char *value);
784 
786  virtual void setParent(domnode *parent);
787 
789  virtual void setPreviousSibling(domnode *previous);
790 
792  virtual void setNextSibling(domnode *next);
793 
797  bool insertChild(domnode *child, uint64_t position);
798 
800  bool appendChild(domnode *child);
801 
809  domnode *insertTag(const char *tag, uint64_t position);
810 
818  domnode *insertTag(const char *ns,
819  const char *tag,
820  uint64_t position);
821 
827  domnode *appendTag(const char *tag);
828 
834  domnode *appendTag(const char *ns, const char *tag);
835 
841  bool moveChild(domnode *child,
842  domnode *parent, uint64_t position);
843 
847  bool deleteChild(uint64_t position);
848 
854  bool deleteChild(domnode *child);
855 
859  bool deleteFirstChild(const char *name);
860 
864  bool deleteFirstChild(const char *ns, const char *name);
865 
869  bool deleteFirstChildIgnoringCase(const char *name);
870 
874  bool deleteFirstChildIgnoringCase(const char *ns,
875  const char *name);
876 
886  bool deleteFirstChild(const char *name,
887  const char *attributename,
888  const char *attributevalue);
889 
899  bool deleteFirstChild(const char *ns,
900  const char *name,
901  const char *attributename,
902  const char *attributevalue);
903 
913  const char *name,
914  const char *attributename,
915  const char *attributevalue);
916 
926  const char *ns,
927  const char *name,
928  const char *attributename,
929  const char *attributevalue);
930 
933 
935  bool deleteChildren(const char *name);
936 
939  bool deleteChildren(const char *ns, const char *name);
940 
942  bool deleteChildrenIgnoringCase(const char *name);
943 
946  bool deleteChildrenIgnoringCase(const char *ns,
947  const char *name);
948 
958  bool deleteChildren(const char *name,
959  const char *attributename,
960  const char *attributevalue);
961 
971  bool deleteChildren(const char *ns,
972  const char *name,
973  const char *attributename,
974  const char *attributevalue);
975 
985  const char *name,
986  const char *attributename,
987  const char *attributevalue);
988 
998  const char *ns,
999  const char *name,
1000  const char *attributename,
1001  const char *attributevalue);
1002 
1004  bool deleteDescendents(const char *name);
1005 
1008  bool deleteDescendents(const char *ns,
1009  const char *name);
1010 
1012  bool deleteDescendentsIgnoringCase(const char *name);
1013 
1016  bool deleteDescendentsIgnoringCase(const char *ns,
1017  const char *name);
1018 
1028  bool deleteDescendents(const char *name,
1029  const char *attributename,
1030  const char *attributevalue);
1031 
1041  bool deleteDescendents(const char *ns,
1042  const char *name,
1043  const char *attributename,
1044  const char *attributevalue);
1045 
1055  const char *name,
1056  const char *attributename,
1057  const char *attributevalue);
1058 
1068  const char *ns,
1069  const char *name,
1070  const char *attributename,
1071  const char *attributevalue);
1072 
1073 
1076  bool renameFirstChild(const char *oldname,
1077  const char *newname);
1078 
1079 
1082  bool renameFirstChild(const char *oldns,
1083  const char *oldname,
1084  const char *newns,
1085  const char *newname);
1086 
1089  bool renameFirstChildIgnoringCase(const char *oldname,
1090  const char *newname);
1091 
1095  bool renameFirstChildIgnoringCase(const char *oldns,
1096  const char *oldname,
1097  const char *newns,
1098  const char *newname);
1099 
1102  bool renameChildren(const char *oldname,
1103  const char *newname);
1104 
1107  bool renameChildren(const char *oldns,
1108  const char *oldname,
1109  const char *newns,
1110  const char *newname);
1111 
1114  bool renameChildrenIgnoringCase(const char *oldname,
1115  const char *newname);
1116 
1120  bool renameChildrenIgnoringCase(const char *oldns,
1121  const char *oldname,
1122  const char *newns,
1123  const char *newname);
1124 
1127  bool renameDescendents(const char *oldname,
1128  const char *newname);
1129 
1132  bool renameDescendents(const char *oldns,
1133  const char *oldname,
1134  const char *newns,
1135  const char *newname);
1136 
1140  const char *oldname,
1141  const char *newname);
1142 
1147  const char *oldns,
1148  const char *oldname,
1149  const char *newns,
1150  const char *newname);
1151 
1152 
1157  bool insertText(const char *value, uint64_t position);
1158 
1161  bool appendText(const char *value);
1162 
1166  bool insertAttribute(domnode *attribute,
1167  uint64_t position);
1168 
1170  bool appendAttribute(domnode *attribute);
1171 
1176  bool insertAttribute(const char *name, const char *value,
1177  uint64_t position);
1178 
1181  bool appendAttribute(const char *name, const char *value);
1182 
1186  bool deleteAttribute(uint64_t position);
1187 
1192  bool deleteAttribute(const char *name);
1193 
1197  bool deleteAttribute(domnode *attribute);
1198 
1199 
1205  bool unwrapChild(domnode *child);
1206 
1209  bool unwrapFirstChild(const char *name);
1210 
1213  bool unwrapFirstChild(const char *ns, const char *name);
1214 
1217  bool unwrapFirstChildIgnoringCase(const char *name);
1218 
1222  bool unwrapFirstChildIgnoringCase(const char *ns,
1223  const char *name);
1224 
1227  bool unwrapChildren(const char *name);
1228 
1231  bool unwrapChildren(const char *ns, const char *name);
1232 
1235  bool unwrapChildrenIgnoringCase(const char *name);
1236 
1240  bool unwrapChildrenIgnoringCase(const char *ns,
1241  const char *name);
1242 
1245  bool unwrapDescendents(const char *name);
1246 
1249  bool unwrapDescendents(const char *ns, const char *name);
1250 
1253  bool unwrapDescendentsIgnoringCase(const char *name);
1254 
1258  bool unwrapDescendentsIgnoringCase(const char *ns,
1259  const char *name);
1260 
1261 
1268  const char *name);
1269 
1277  const char *ns,
1278  const char *name);
1279 
1289  domnode *endchild,
1290  const char *name);
1291 
1302  domnode *endchild,
1303  const char *ns,
1304  const char *name);
1305 
1308  domnode *wrapChildren(const char *name);
1309 
1313  domnode *wrapChildren(const char *ns, const char *name);
1314 
1315 
1318  virtual domnode *clone();
1319 
1322  virtual domnode *clone(dom *dom);
1323 
1324 
1329  void write(output *out) const;
1330 
1339  void write(output *out, bool indent) const;
1340 
1351 
1358  domnode *getChildByPath(const char *path) const;
1359 
1368  domnode *getAttributeByPath(const char *path,
1369  uint64_t position) const;
1370 
1378  domnode *getAttributeByPath(const char *path,
1379  const char *name) const;
1380 
1389  const char *getAttributeValueByPath(const char *path,
1390  uint64_t position) const;
1391 
1400  const char *getAttributeValueByPath(const char *path,
1401  const char *name) const;
1402 
1404  void setData(void *data);
1405 
1408  void *getData();
1409 
1410  #include <rudiments/private/domnode.h>
1411 };
1412 
1413 #endif
Definition: dom.h:10
Definition: domnode.h:122
domnode * wrapChildren(domnode *startchild, domnode *endchild, const char *ns, const char *name)
virtual const char * getName() const
const char * getAttributeValue(const char *name) const
bool deleteFirstChildIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue)
domnode * getFirstTagChildIgnoringCase(const char *ns, const char *name) const
domnode * getNextTagSibling() const
domnode * insertTag(const char *tag, uint64_t position)
domnode * getChildByPath(const char *path) const
bool deleteChildrenIgnoringCase(const char *name, const char *attributename, const char *attributevalue)
domnode * wrapChildren(const char *ns, const char *name)
bool deleteDescendentsIgnoringCase(const char *ns, const char *name)
bool renameChildrenIgnoringCase(const char *oldname, const char *newname)
stringbuffer * getPath() const
domnode * getFirstTagDescendent(const char *ns, const char *name) const
virtual domnode * getAttribute(uint64_t position) const
domnode(dom *dom, domnode *nullnode, domnodetype type, const char *name, const char *value)
bool renameDescendentsIgnoringCase(const char *oldname, const char *newname)
virtual domnode * getPreviousSibling() const
domnode * getNextTagSiblingIgnoringCase(const char *ns, const char *name) const
domnode * getFirstTagDescendentInSet(const char *const *set) const
domnode * getFirstTagDescendentIgnoringCase(const char *ns, const char *name) const
bool appendChild(domnode *child)
domnode * getNextTagSibling(const char *ns, const char *name) const
domnode * getNextTagSiblingIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
domnode * getPreviousTagSiblingIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
bool renameDescendents(const char *oldns, const char *oldname, const char *newns, const char *newname)
domnode * getNextTagSibling(const char *name, const char *attributename, const char *attributevalue) const
bool appendAttribute(domnode *attribute)
bool deleteAttribute(uint64_t position)
virtual domnodetype getType() const
virtual domnode * getAttribute(const char *name) const
bool renameFirstChild(const char *oldns, const char *oldname, const char *newns, const char *newname)
domnode * getFirstChildIgnoringCase(const char *name) const
domnode * wrapChild(domnode *child, const char *ns, const char *name)
domnode * getFirstTagChildInSet(const char *const *set) const
void * getData()
bool unwrapFirstChild(const char *ns, const char *name)
domnode * wrapChild(domnode *child, const char *name)
bool renameDescendents(const char *oldname, const char *newname)
domnode * getPreviousTagSibling(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
domnode * getNextTagSiblingInSet(const char *ns, const char *const *set) const
domnode * getFirstTagChild(const char *name) const
bool renameChildren(const char *oldns, const char *oldname, const char *newns, const char *newname)
bool unwrapFirstChildIgnoringCase(const char *name)
virtual void setNamespace(const char *ns)
bool deleteDescendentsIgnoringCase(const char *name, const char *attributename, const char *attributevalue)
domnode(dom *dom, domnode *nullnode)
domnode * getFirstTagDescendentIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
domnode * getNullNode() const
domnode * getFirstTagChild(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
bool deleteDescendentsIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue)
bool unwrapDescendents(const char *ns, const char *name)
bool deleteChild(domnode *child)
bool renameChildren(const char *oldname, const char *newname)
domnode * getNextTagSibling(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
domnode * getPreviousTagSibling(const char *name) const
domnode * getFirstTagDescendent(const char *name, const char *attributename, const char *attributevalue) const
dom * getTree() const
domnode * getFirstTagDescendentInSet(const char *ns, const char *const *set) const
bool deleteChildren(const char *ns, const char *name)
bool deleteAttribute(const char *name)
domnode * getNextTagSiblingInSet(const char *const *set) const
bool deleteFirstChildIgnoringCase(const char *name)
bool renameFirstChild(const char *oldname, const char *newname)
bool unwrapFirstChild(const char *name)
domnode * getChild(uint64_t position) const
virtual void setPreviousSibling(domnode *previous)
bool unwrapFirstChildIgnoringCase(const char *ns, const char *name)
domnode * getFirstTagChild(const char *name, const char *attributename, const char *attributevalue) const
bool deleteChildren(const char *name, const char *attributename, const char *attributevalue)
domnode * getFirstTagChildIgnoringCase(const char *name) const
domnode * getNextTag(domnode *top) const
bool unwrapChildrenIgnoringCase(const char *ns, const char *name)
domnode * getFirstChild(const char *ns, const char *name) const
bool moveChild(domnode *child, domnode *parent, uint64_t position)
virtual const char * getNamespace() const
bool deleteDescendents(const char *name)
bool renameFirstChildIgnoringCase(const char *oldname, const char *newname)
domnode * getNextTagSiblingIgnoringCase(const char *name, const char *attributename, const char *attributevalue) const
bool deleteChildrenIgnoringCase(const char *name)
virtual uint64_t getAttributeCount() const
virtual domnode * clone(dom *dom)
static domnode * createNullNode(dom *dom)
bool unwrapChild(domnode *child)
domnode * getFirstTagChildIgnoringCase(const char *name, const char *attributename, const char *attributevalue) const
domnode * getPreviousTagSiblingIgnoringCase(const char *ns, const char *name) const
virtual domnode * getFirstChild() const
bool deleteDescendentsIgnoringCase(const char *name)
bool renameFirstChildIgnoringCase(const char *oldns, const char *oldname, const char *newns, const char *newname)
domnode * getFirstChild(const char *name) const
virtual void setParent(domnode *parent)
virtual bool isNullNode() const
domnode(dom *dom, domnode *nullnode, domnodetype type, const char *ns, const char *name, const char *value)
bool deleteDescendents(const char *ns, const char *name)
domnode * appendTag(const char *ns, const char *tag)
virtual void setName(const char *name)
void setData(void *data)
domnode * getAttributeByPath(const char *path, uint64_t position) const
bool appendText(const char *value)
bool deleteFirstChild(const char *name)
domnode * getNextTag() const
void write(output *out, bool indent) const
domnode * getFirstTagChildIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
bool deleteChildrenIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue)
domnode * getFirstTagChild() const
domnode * getPreviousTag() const
void setAttributeValue(const char *name, int64_t value)
bool insertAttribute(const char *name, const char *value, uint64_t position)
void write(output *out) const
virtual uint64_t getChildCount() const
bool appendAttribute(const char *name, const char *value)
bool deleteDescendents(const char *name, const char *attributename, const char *attributevalue)
domnode * getFirstTagChildInSet(const char *ns, const char *const *set) const
domnode * appendTag(const char *tag)
virtual void setType(domnodetype type)
bool renameDescendentsIgnoringCase(const char *oldns, const char *oldname, const char *newns, const char *newname)
virtual domnode * clone()
domnode * getFirstTagDescendent(const char *name) const
const char * getAttributeValueByPath(const char *path, uint64_t position) const
domnode * getFirstTagChild(const char *ns, const char *name) const
virtual domnode * getParent() const
domnode * wrapChildren(const char *name)
bool deleteChildrenIgnoringCase(const char *ns, const char *name)
domnode * getNextTagSiblingIgnoringCase(const char *name) const
domnode * getFirstChild(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
bool unwrapChildren(const char *name)
domnode * getFirstChildIgnoringCase(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
bool unwrapDescendentsIgnoringCase(const char *ns, const char *name)
bool renameChildrenIgnoringCase(const char *oldns, const char *oldname, const char *newns, const char *newname)
domnode * getPreviousTagSibling() const
domnode * getFirstTagDescendentIgnoringCase(const char *name) const
bool insertText(const char *value, uint64_t position)
virtual ~domnode()
domnode * getFirstChildIgnoringCase(const char *name, const char *attributename, const char *attributevalue) const
bool deleteFirstChildIgnoringCase(const char *ns, const char *name)
void dontCascadeOnDelete()
virtual void setValue(const char *value)
bool deleteFirstChild(const char *ns, const char *name, const char *attributename, const char *attributevalue)
bool deleteChildren(const char *name)
domnode * getFirstChild(const char *name, const char *attributename, const char *attributevalue) const
domnode * getNextTagSibling(const char *name) const
bool insertAttribute(domnode *attribute, uint64_t position)
bool insertChild(domnode *child, uint64_t position)
virtual domnode * getNextSibling() const
virtual domnode * getAttributeIgnoringCase(const char *name) const
domnode * getFirstTagDescendent(const char *ns, const char *name, const char *attributename, const char *attributevalue) const
bool deleteFirstChildIgnoringCase(const char *name, const char *attributename, const char *attributevalue)
virtual const char * getValue() const
bool unwrapChildren(const char *ns, const char *name)
void cascadeOnDelete()
bool deleteFirstChild(const char *name, const char *attributename, const char *attributevalue)
const char * getAttributeValue(uint64_t position) const
bool deleteChild(uint64_t position)
bool deleteAttribute(domnode *attribute)
constnamevaluepairs * getAttributes() const
domnode * getPreviousTagSibling(const char *name, const char *attributename, const char *attributevalue) const
const char * getAttributeValueByPath(const char *path, const char *name) const
domnode * wrapChildren(domnode *startchild, domnode *endchild, const char *name)
bool deleteDescendents(const char *ns, const char *name, const char *attributename, const char *attributevalue)
virtual void setNextSibling(domnode *next)
void setAttributeValue(const char *name, uint64_t value)
domnode * insertTag(const char *ns, const char *tag, uint64_t position)
domnode * getPreviousTagSibling(const char *ns, const char *name) const
domnode * getPreviousTagSiblingIgnoringCase(const char *name) const
void setAttributeValue(const char *name, const char *value)
domnode * getPreviousTag(domnode *top) const
bool unwrapChildrenIgnoringCase(const char *name)
domnode * getAttributeByPath(const char *path, const char *name) const
void setName(const char *ns, const char *name)
domnode * getFirstTagDescendentIgnoringCase(const char *name, const char *attributename, const char *attributevalue) const
bool unwrapDescendentsIgnoringCase(const char *name)
domnode * getPreviousTagSiblingIgnoringCase(const char *name, const char *attributename, const char *attributevalue) const
bool deleteFirstChild(const char *ns, const char *name)
bool deleteChildren(const char *ns, const char *name, const char *attributename, const char *attributevalue)
domnode * getFirstChildIgnoringCase(const char *ns, const char *name) const
bool deleteChildren()
bool unwrapDescendents(const char *name)
virtual uint64_t getPosition() const
Definition: output.h:9
Definition: stringbuffer.h:13