Rudiments
domnode.h
1 // Copyright (c) 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 
171  static domnode *createNullNode(dom *dom);
172 
173 
176  void cascadeOnDelete();
177 
181  void dontCascadeOnDelete();
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 
216  domnode *getPreviousTagSibling() const;
217 
221  domnode *getPreviousTagSibling(const char *name) const;
222 
226  domnode *getPreviousTagSibling(const char *ns,
227  const char *name) const;
228 
232  domnode *getPreviousTagSiblingIgnoringCase(
233  const char *name) const;
234 
238  domnode *getPreviousTagSiblingIgnoringCase(
239  const char *ns,
240  const char *name) const;
241 
251  domnode *getPreviousTagSibling(
252  const char *name,
253  const char *attributename,
254  const char *attributevalue) const;
255 
265  domnode *getPreviousTagSibling(
266  const char *ns,
267  const char *name,
268  const char *attributename,
269  const char *attributevalue) const;
270 
279  domnode *getPreviousTagSiblingIgnoringCase(
280  const char *name,
281  const char *attributename,
282  const char *attributevalue) const;
283 
293  domnode *getPreviousTagSiblingIgnoringCase(
294  const char *ns,
295  const char *name,
296  const char *attributename,
297  const char *attributevalue) const;
298 
301  virtual domnode *getNextSibling() const;
302 
306  domnode *getNextTagSibling() const;
307 
311  domnode *getNextTagSibling(const char *name) const;
312 
316  domnode *getNextTagSibling(const char *ns,
317  const char *name) const;
318 
322  domnode *getNextTagSiblingIgnoringCase(
323  const char *name) const;
324 
328  domnode *getNextTagSiblingIgnoringCase(
329  const char *ns,
330  const char *name) const;
331 
341  domnode *getNextTagSibling(
342  const char *name,
343  const char *attributename,
344  const char *attributevalue) const;
345 
354  domnode *getNextTagSibling(
355  const char *ns,
356  const char *name,
357  const char *attributename,
358  const char *attributevalue) const;
359 
368  domnode *getNextTagSiblingIgnoringCase(
369  const char *name,
370  const char *attributename,
371  const char *attributevalue) const;
372 
381  domnode *getNextTagSiblingIgnoringCase(
382  const char *ns,
383  const char *name,
384  const char *attributename,
385  const char *attributevalue) const;
386 
391  domnode *getNextTagSiblingInSet(
392  const char * const *set) const;
393 
399  domnode *getNextTagSiblingInSet(
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 
422  domnode *getFirstChildIgnoringCase(
423  const char *name) const;
424 
428  domnode *getFirstChildIgnoringCase(
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 
471  domnode *getFirstChildIgnoringCase(
472  const char *name,
473  const char *attributename,
474  const char *attributevalue)
475  const;
476 
484  domnode *getFirstChildIgnoringCase(
485  const char *ns,
486  const char *name,
487  const char *attributename,
488  const char *attributevalue)
489  const;
490 
494  domnode *getFirstTagChild() const;
495 
499  domnode *getFirstTagChild(const char *name) const;
500 
504  domnode *getFirstTagChild(const char *ns,
505  const char *name) const;
506 
510  domnode *getFirstTagChildIgnoringCase(
511  const char *name) const;
512 
517  domnode *getFirstTagChildIgnoringCase(
518  const char *ns,
519  const char *name) const;
520 
530  domnode *getFirstTagChild(
531  const char *name,
532  const char *attributename,
533  const char *attributevalue) const;
534 
542  domnode *getFirstTagChild(
543  const char *ns,
544  const char *name,
545  const char *attributename,
546  const char *attributevalue) const;
547 
556  domnode *getFirstTagChildIgnoringCase(
557  const char *name,
558  const char *attributename,
559  const char *attributevalue) const;
560 
569  domnode *getFirstTagChildIgnoringCase(
570  const char *ns,
571  const char *name,
572  const char *attributename,
573  const char *attributevalue) const;
574 
579  domnode *getFirstTagChildInSet(
580  const char * const *set) const;
581 
587  domnode *getFirstTagChildInSet(
588  const char *ns,
589  const char * const *set) const;
590 
591 
595  domnode *getFirstTagDescendent(const char *name) const;
596 
597 
601  domnode *getFirstTagDescendent(
602  const char *ns,
603  const char *name) const;
604 
605 
609  domnode *getFirstTagDescendentIgnoringCase(
610  const char *name) const;
611 
612 
617  domnode *getFirstTagDescendentIgnoringCase(
618  const char *ns,
619  const char *name) const;
620 
630  domnode *getFirstTagDescendent(
631  const char *name,
632  const char *attributename,
633  const char *attributevalue) const;
634 
642  domnode *getFirstTagDescendent(
643  const char *ns,
644  const char *name,
645  const char *attributename,
646  const char *attributevalue) const;
647 
656  domnode *getFirstTagDescendentIgnoringCase(
657  const char *name,
658  const char *attributename,
659  const char *attributevalue) const;
660 
669  domnode *getFirstTagDescendentIgnoringCase(
670  const char *ns,
671  const char *name,
672  const char *attributename,
673  const char *attributevalue) const;
674 
679  domnode *getFirstTagDescendentInSet(
680  const char * const *set) const;
681 
686  domnode *getFirstTagDescendentInSet(
687  const char *ns,
688  const char * const *set) const;
689 
692  domnode *getNextTag() const;
693 
699  domnode *getNextTag(domnode *top) const;
700 
703  domnode *getPreviousTag() const;
704 
710  domnode *getPreviousTag(domnode *top) const;
711 
712 
714  virtual uint64_t getAttributeCount() const;
715 
718  virtual domnode *getAttribute(const char *name) const;
719 
722  virtual domnode *getAttributeIgnoringCase(
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 
763  domnode *getNullNode() const;
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 
912  bool deleteFirstChildIgnoringCase(
913  const char *name,
914  const char *attributename,
915  const char *attributevalue);
916 
925  bool deleteFirstChildIgnoringCase(
926  const char *ns,
927  const char *name,
928  const char *attributename,
929  const char *attributevalue);
930 
932  bool deleteChildren();
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 
984  bool deleteChildrenIgnoringCase(
985  const char *name,
986  const char *attributename,
987  const char *attributevalue);
988 
997  bool deleteChildrenIgnoringCase(
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 
1054  bool deleteDescendentsIgnoringCase(
1055  const char *name,
1056  const char *attributename,
1057  const char *attributevalue);
1058 
1067  bool deleteDescendentsIgnoringCase(
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 
1139  bool renameDescendentsIgnoringCase(
1140  const char *oldname,
1141  const char *newname);
1142 
1146  bool renameDescendentsIgnoringCase(
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 
1267  domnode *wrapChild(domnode *child,
1268  const char *name);
1269 
1276  domnode *wrapChild(domnode *child,
1277  const char *ns,
1278  const char *name);
1279 
1288  domnode *wrapChildren(domnode *startchild,
1289  domnode *endchild,
1290  const char *name);
1291 
1301  domnode *wrapChildren(domnode *startchild,
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 
1350  stringbuffer *getPath() const;
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: stringbuffer.h:13
Definition: domnode.h:122
Definition: output.h:9