Annotation of docbook2mdoc/rules.c, Revision 1.21
1.1 kristaps 1: #include <stdlib.h>
2:
3: #include "extern.h"
4:
5: int
6: isattrkey(enum nodeid node, enum attrkey key)
7: {
8:
9: switch (key) {
10: case (ATTRKEY_CHOICE):
1.11 kristaps 11: switch (node) {
12: case (NODE_ARG):
13: case (NODE_GROUP):
14: return(1);
15: default:
16: break;
17: }
18: return(0);
1.1 kristaps 19: case (ATTRKEY_ID):
20: /* Common to all. */
21: return(1);
22: case (ATTRKEY_REP):
1.11 kristaps 23: switch (node) {
24: case (NODE_ARG):
25: case (NODE_GROUP):
26: return(1);
27: default:
28: break;
29: }
30: return(0);
1.1 kristaps 31: default:
32: break;
33: }
34: abort();
35: return(0);
36: }
37:
38: int
39: isattrval(enum attrkey key, enum attrval val)
40: {
41:
42: switch (val) {
43: case (ATTRVAL_OPT):
44: case (ATTRVAL_PLAIN):
45: case (ATTRVAL_REQ):
46: return(key == ATTRKEY_CHOICE);
47: case (ATTRVAL_REPEAT):
48: case (ATTRVAL_NOREPEAT):
49: return(key == ATTRKEY_REP);
50: default:
51: break;
52: }
53: abort();
54: return(0);
55: }
56:
57: /*
58: * Look up whether "parent" is a valid parent for "node".
59: * This is sucked directly from the DocBook specification: look at the
60: * "children" and "parent" sections of each node.
61: */
62: int
63: isparent(enum nodeid node, enum nodeid parent)
64: {
65:
66: switch (node) {
67: case (NODE_ROOT):
68: return(0);
1.8 kristaps 69: case (NODE_ACRONYM):
70: switch (parent) {
71: case (NODE_EMPHASIS):
1.12 kristaps 72: case (NODE_ENTRY):
1.8 kristaps 73: case (NODE_FUNCSYNOPSISINFO):
1.12 kristaps 74: case (NODE_PARA):
1.8 kristaps 75: case (NODE_PROGRAMLISTING):
1.15 kristaps 76: case (NODE_QUOTE):
1.8 kristaps 77: case (NODE_REFDESCRIPTOR):
78: case (NODE_REFENTRYTITLE):
79: case (NODE_REFNAME):
80: case (NODE_REFPURPOSE):
1.9 kristaps 81: case (NODE_SCREEN):
1.8 kristaps 82: case (NODE_SYNOPSIS):
83: case (NODE_TERM):
84: case (NODE_TITLE):
85: return(1);
86: default:
87: break;
88: }
89: return(0);
1.17 kristaps 90: case (NODE_ANCHOR):
91: /* We'll ignore this. */
92: return(1);
1.14 kristaps 93: case (NODE_APPLICATION):
94: switch (parent) {
95: case (NODE_EMPHASIS):
96: case (NODE_ENTRY):
97: case (NODE_FUNCSYNOPSISINFO):
98: case (NODE_LINK):
99: case (NODE_PARA):
100: case (NODE_PROGRAMLISTING):
1.15 kristaps 101: case (NODE_QUOTE):
1.14 kristaps 102: case (NODE_REFCLASS):
103: case (NODE_REFDESCRIPTOR):
104: case (NODE_REFENTRYTITLE):
105: case (NODE_REFNAME):
106: case (NODE_REFPURPOSE):
107: case (NODE_SCREEN):
108: case (NODE_SYNOPSIS):
109: case (NODE_TERM):
110: case (NODE_TITLE):
111: case (NODE_ULINK):
112: return(1);
113: default:
114: break;
115: }
116: return(0);
1.1 kristaps 117: case (NODE_ARG):
118: switch (parent) {
119: case (NODE_ARG):
120: case (NODE_CMDSYNOPSIS):
1.11 kristaps 121: case (NODE_GROUP):
1.1 kristaps 122: return(1);
123: default:
124: break;
125: }
126: return(0);
1.16 kristaps 127: case (NODE_CAUTION):
128: switch (parent) {
129: case (NODE_CAUTION):
130: case (NODE_ENTRY):
131: case (NODE_ITEMIZEDLIST):
132: case (NODE_LISTITEM):
133: case (NODE_NOTE):
134: case (NODE_ORDEREDLIST):
135: case (NODE_PARA):
136: case (NODE_REFSECT1):
137: case (NODE_REFSECT2):
138: case (NODE_REFSECT3):
139: case (NODE_REFSECTION):
140: case (NODE_REFSYNOPSISDIV):
141: case (NODE_TIP):
142: case (NODE_VARIABLELIST):
143: case (NODE_WARNING):
144: return(1);
145: default:
146: break;
147: }
148: return(0);
1.1 kristaps 149: case (NODE_CITEREFENTRY):
150: switch (parent) {
151: case (NODE_EMPHASIS):
1.12 kristaps 152: case (NODE_ENTRY):
1.1 kristaps 153: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 154: case (NODE_LINK):
1.1 kristaps 155: case (NODE_PARA):
156: case (NODE_PROGRAMLISTING):
1.15 kristaps 157: case (NODE_QUOTE):
1.1 kristaps 158: case (NODE_REFDESCRIPTOR):
159: case (NODE_REFENTRYTITLE):
160: case (NODE_REFNAME):
161: case (NODE_REFPURPOSE):
1.9 kristaps 162: case (NODE_SCREEN):
1.1 kristaps 163: case (NODE_SYNOPSIS):
164: case (NODE_TERM):
165: case (NODE_TITLE):
1.2 kristaps 166: case (NODE_ULINK):
1.1 kristaps 167: return(1);
168: default:
169: break;
170: }
171: return(0);
172: case (NODE_CMDSYNOPSIS):
173: switch (parent) {
1.16 kristaps 174: case (NODE_CAUTION):
1.12 kristaps 175: case (NODE_ENTRY):
1.4 kristaps 176: case (NODE_ITEMIZEDLIST):
1.1 kristaps 177: case (NODE_LISTITEM):
1.8 kristaps 178: case (NODE_ORDEREDLIST):
1.16 kristaps 179: case (NODE_NOTE):
1.1 kristaps 180: case (NODE_PARA):
181: case (NODE_REFSECT1):
1.7 kristaps 182: case (NODE_REFSECT2):
1.16 kristaps 183: case (NODE_REFSECT3):
184: case (NODE_REFSECTION):
1.1 kristaps 185: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 186: case (NODE_TIP):
1.1 kristaps 187: case (NODE_VARIABLELIST):
1.16 kristaps 188: case (NODE_WARNING):
1.1 kristaps 189: return(1);
190: default:
191: break;
192: }
193: return(0);
194: case (NODE_CODE):
195: switch (parent) {
196: case (NODE_EMPHASIS):
1.12 kristaps 197: case (NODE_ENTRY):
1.1 kristaps 198: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 199: case (NODE_LINK):
1.1 kristaps 200: case (NODE_PARA):
201: case (NODE_PROGRAMLISTING):
1.15 kristaps 202: case (NODE_QUOTE):
1.1 kristaps 203: case (NODE_REFDESCRIPTOR):
204: case (NODE_REFENTRYTITLE):
205: case (NODE_REFNAME):
206: case (NODE_REFPURPOSE):
1.9 kristaps 207: case (NODE_SCREEN):
1.1 kristaps 208: case (NODE_SYNOPSIS):
209: case (NODE_TERM):
210: case (NODE_TITLE):
1.2 kristaps 211: case (NODE_ULINK):
1.10 kristaps 212: case (NODE_USERINPUT):
1.1 kristaps 213: return(1);
214: default:
215: break;
216: }
217: return(0);
218: case (NODE_COMMAND):
219: switch (parent) {
220: case (NODE_CMDSYNOPSIS):
221: case (NODE_EMPHASIS):
1.12 kristaps 222: case (NODE_ENTRY):
1.1 kristaps 223: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 224: case (NODE_LINK):
1.1 kristaps 225: case (NODE_PARA):
226: case (NODE_PROGRAMLISTING):
1.15 kristaps 227: case (NODE_QUOTE):
1.1 kristaps 228: case (NODE_REFDESCRIPTOR):
229: case (NODE_REFENTRYTITLE):
230: case (NODE_REFNAME):
231: case (NODE_REFPURPOSE):
1.9 kristaps 232: case (NODE_SCREEN):
1.1 kristaps 233: case (NODE_SYNOPSIS):
234: case (NODE_TERM):
235: case (NODE_TITLE):
1.2 kristaps 236: case (NODE_ULINK):
1.10 kristaps 237: case (NODE_USERINPUT):
1.1 kristaps 238: return(1);
239: default:
240: break;
241: }
242: return(0);
1.18 kristaps 243: case (NODE_CONSTANT):
244: switch (parent) {
245: case (NODE_EMPHASIS):
246: case (NODE_ENTRY):
247: case (NODE_FUNCSYNOPSISINFO):
248: case (NODE_LINK):
249: case (NODE_ULINK):
250: case (NODE_PARA):
251: case (NODE_PROGRAMLISTING):
252: case (NODE_QUOTE):
253: case (NODE_REFDESCRIPTOR):
254: case (NODE_REFENTRYTITLE):
255: case (NODE_REFNAME):
256: case (NODE_REFPURPOSE):
257: case (NODE_SCREEN):
258: case (NODE_SYNOPSIS):
259: case (NODE_TERM):
260: case (NODE_TITLE):
261: case (NODE_USERINPUT):
262: return(1);
263: default:
264: break;
265: }
266: return(0);
267: case (NODE_COPYRIGHT):
268: switch (parent) {
269: case (NODE_INFO):
1.21 ! kristaps 270: case (NODE_REFENTRYINFO):
! 271: case (NODE_REFMETAINFO):
1.18 kristaps 272: return(1);
273: default:
274: break;
275: }
276: return(0);
1.3 kristaps 277: case (NODE_DATE):
278: switch (parent) {
279: case (NODE_EMPHASIS):
1.12 kristaps 280: case (NODE_ENTRY):
1.3 kristaps 281: case (NODE_FUNCSYNOPSISINFO):
1.18 kristaps 282: case (NODE_INFO):
1.3 kristaps 283: case (NODE_LINK):
284: case (NODE_PARA):
285: case (NODE_PROGRAMLISTING):
1.15 kristaps 286: case (NODE_QUOTE):
1.3 kristaps 287: case (NODE_REFDESCRIPTOR):
288: case (NODE_REFENTRYINFO):
289: case (NODE_REFENTRYTITLE):
290: case (NODE_REFNAME):
291: case (NODE_REFPURPOSE):
1.9 kristaps 292: case (NODE_SCREEN):
1.3 kristaps 293: case (NODE_SYNOPSIS):
294: case (NODE_TITLE):
295: case (NODE_ULINK):
296: return(1);
297: default:
298: break;
299: }
300: return(0);
1.1 kristaps 301: case (NODE_EMPHASIS):
302: switch (parent) {
303: case (NODE_EMPHASIS):
1.12 kristaps 304: case (NODE_ENTRY):
1.1 kristaps 305: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 306: case (NODE_LINK):
1.1 kristaps 307: case (NODE_PARA):
308: case (NODE_PROGRAMLISTING):
1.15 kristaps 309: case (NODE_QUOTE):
1.1 kristaps 310: case (NODE_REFDESCRIPTOR):
311: case (NODE_REFENTRYTITLE):
312: case (NODE_REFNAME):
313: case (NODE_REFPURPOSE):
1.9 kristaps 314: case (NODE_SCREEN):
1.1 kristaps 315: case (NODE_SYNOPSIS):
316: case (NODE_TERM):
317: case (NODE_TITLE):
1.2 kristaps 318: case (NODE_ULINK):
1.1 kristaps 319: return(1);
320: default:
321: break;
322: }
323: return(0);
1.12 kristaps 324: case (NODE_ENTRY):
325: return(NODE_ROW == parent);
1.8 kristaps 326: case (NODE_ENVAR):
327: switch (parent) {
328: case (NODE_EMPHASIS):
1.12 kristaps 329: case (NODE_ENTRY):
1.8 kristaps 330: case (NODE_FUNCSYNOPSISINFO):
331: case (NODE_LINK):
332: case (NODE_PARA):
333: case (NODE_PROGRAMLISTING):
1.15 kristaps 334: case (NODE_QUOTE):
1.8 kristaps 335: case (NODE_REFDESCRIPTOR):
336: case (NODE_REFENTRYTITLE):
337: case (NODE_REFNAME):
338: case (NODE_REFPURPOSE):
1.9 kristaps 339: case (NODE_SCREEN):
1.8 kristaps 340: case (NODE_SYNOPSIS):
341: case (NODE_TERM):
342: case (NODE_TITLE):
343: case (NODE_ULINK):
1.10 kristaps 344: case (NODE_USERINPUT):
1.8 kristaps 345: return(1);
346: default:
347: break;
348: }
349: return(0);
1.5 kristaps 350: case (NODE_FILENAME):
351: switch (parent) {
352: case (NODE_EMPHASIS):
1.12 kristaps 353: case (NODE_ENTRY):
1.5 kristaps 354: case (NODE_FUNCSYNOPSISINFO):
355: case (NODE_LINK):
356: case (NODE_PARA):
357: case (NODE_PROGRAMLISTING):
1.15 kristaps 358: case (NODE_QUOTE):
1.5 kristaps 359: case (NODE_REFDESCRIPTOR):
360: case (NODE_REFENTRYTITLE):
361: case (NODE_REFNAME):
362: case (NODE_REFPURPOSE):
1.9 kristaps 363: case (NODE_SCREEN):
1.5 kristaps 364: case (NODE_SYNOPSIS):
365: case (NODE_TERM):
366: case (NODE_TITLE):
367: case (NODE_ULINK):
1.10 kristaps 368: case (NODE_USERINPUT):
1.5 kristaps 369: return(1);
370: default:
371: break;
372: }
373: return(0);
1.1 kristaps 374: case (NODE_FUNCDEF):
375: return(NODE_FUNCPROTOTYPE == parent);
376: case (NODE_FUNCPROTOTYPE):
377: return(NODE_FUNCSYNOPSIS == parent);
378: case (NODE_FUNCSYNOPSIS):
379: switch (parent) {
1.16 kristaps 380: case (NODE_CAUTION):
1.12 kristaps 381: case (NODE_ENTRY):
1.4 kristaps 382: case (NODE_ITEMIZEDLIST):
1.1 kristaps 383: case (NODE_LISTITEM):
1.8 kristaps 384: case (NODE_ORDEREDLIST):
1.16 kristaps 385: case (NODE_NOTE):
1.1 kristaps 386: case (NODE_PARA):
387: case (NODE_REFSECT1):
1.7 kristaps 388: case (NODE_REFSECT2):
1.16 kristaps 389: case (NODE_REFSECT3):
390: case (NODE_REFSECTION):
1.1 kristaps 391: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 392: case (NODE_TIP):
1.1 kristaps 393: case (NODE_VARIABLELIST):
1.16 kristaps 394: case (NODE_WARNING):
1.1 kristaps 395: return(1);
396: default:
397: break;
398: }
399: return(0);
400: case (NODE_FUNCSYNOPSISINFO):
401: return(NODE_FUNCSYNOPSIS == parent);
402: case (NODE_FUNCTION):
403: switch (parent) {
404: case (NODE_CODE):
405: case (NODE_EMPHASIS):
1.12 kristaps 406: case (NODE_ENTRY):
1.1 kristaps 407: case (NODE_FUNCDEF):
408: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 409: case (NODE_LINK):
1.1 kristaps 410: case (NODE_PARA):
411: case (NODE_PROGRAMLISTING):
1.15 kristaps 412: case (NODE_QUOTE):
1.1 kristaps 413: case (NODE_REFDESCRIPTOR):
414: case (NODE_REFENTRYTITLE):
415: case (NODE_REFNAME):
416: case (NODE_REFPURPOSE):
1.9 kristaps 417: case (NODE_SCREEN):
1.1 kristaps 418: case (NODE_SYNOPSIS):
419: case (NODE_TERM):
420: case (NODE_TITLE):
1.2 kristaps 421: case (NODE_ULINK):
422: return(1);
423: default:
424: break;
425: }
426: return(0);
1.18 kristaps 427: case (NODE_GROUP):
428: switch (parent) {
429: case (NODE_ARG):
430: case (NODE_CMDSYNOPSIS):
431: case (NODE_GROUP):
432: return(1);
433: default:
434: break;
435: }
436: return(0);
437: case (NODE_HOLDER):
438: switch (parent) {
439: case (NODE_COPYRIGHT):
440: return(1);
441: default:
442: break;
443: }
444: return(0);
445: case (NODE_INFO):
1.4 kristaps 446: switch (parent) {
1.16 kristaps 447: case (NODE_CAUTION):
1.18 kristaps 448: case (NODE_CMDSYNOPSIS):
449: case (NODE_FUNCSYNOPSIS):
450: case (NODE_FUNCSYNOPSISINFO):
1.20 kristaps 451: case (NODE_INFORMALTABLE):
1.4 kristaps 452: case (NODE_ITEMIZEDLIST):
1.16 kristaps 453: case (NODE_NOTE):
1.8 kristaps 454: case (NODE_ORDEREDLIST):
1.16 kristaps 455: case (NODE_PARA):
1.18 kristaps 456: case (NODE_PROGRAMLISTING):
457: case (NODE_REFENTRY):
1.4 kristaps 458: case (NODE_REFSECT1):
1.7 kristaps 459: case (NODE_REFSECT2):
1.16 kristaps 460: case (NODE_REFSECT3):
461: case (NODE_REFSECTION):
1.4 kristaps 462: case (NODE_REFSYNOPSISDIV):
1.18 kristaps 463: case (NODE_SCREEN):
464: case (NODE_SYNOPSIS):
465: case (NODE_TABLE):
1.4 kristaps 466: case (NODE_VARIABLELIST):
1.16 kristaps 467: case (NODE_WARNING):
1.4 kristaps 468: return(1);
469: default:
470: break;
471: }
472: return(0);
1.18 kristaps 473: case (NODE_ITEMIZEDLIST):
1.11 kristaps 474: switch (parent) {
1.18 kristaps 475: case (NODE_CAUTION):
476: case (NODE_ENTRY):
477: case (NODE_ITEMIZEDLIST):
478: case (NODE_LISTITEM):
479: case (NODE_NOTE):
480: case (NODE_ORDEREDLIST):
481: case (NODE_PARA):
482: case (NODE_REFSECT1):
483: case (NODE_REFSECT2):
484: case (NODE_REFSECT3):
485: case (NODE_REFSECTION):
486: case (NODE_REFSYNOPSISDIV):
487: case (NODE_TIP):
488: case (NODE_VARIABLELIST):
489: case (NODE_WARNING):
1.11 kristaps 490: return(1);
491: default:
492: break;
493: }
494: return(0);
1.2 kristaps 495: case (NODE_LINK):
1.4 kristaps 496: case (NODE_ULINK): /* Synonyms. */
1.2 kristaps 497: switch (parent) {
1.8 kristaps 498: case (NODE_ACRONYM):
1.14 kristaps 499: case (NODE_APPLICATION):
1.2 kristaps 500: case (NODE_ARG):
501: case (NODE_CODE):
502: case (NODE_COMMAND):
1.18 kristaps 503: case (NODE_CONSTANT):
1.2 kristaps 504: case (NODE_EMPHASIS):
1.12 kristaps 505: case (NODE_ENTRY):
1.8 kristaps 506: case (NODE_ENVAR):
1.5 kristaps 507: case (NODE_FILENAME):
1.2 kristaps 508: case (NODE_FUNCDEF):
509: case (NODE_FUNCSYNOPSISINFO):
510: case (NODE_FUNCTION):
1.18 kristaps 511: case (NODE_HOLDER):
1.2 kristaps 512: case (NODE_LINK):
1.6 kristaps 513: case (NODE_LITERAL):
1.2 kristaps 514: case (NODE_MANVOLNUM):
515: case (NODE_OPTION):
516: case (NODE_PARA):
517: case (NODE_PARAMDEF):
518: case (NODE_PARAMETER):
519: case (NODE_PROGRAMLISTING):
1.9 kristaps 520: case (NODE_PROMPT):
1.15 kristaps 521: case (NODE_QUOTE):
1.2 kristaps 522: case (NODE_REFDESCRIPTOR):
523: case (NODE_REFENTRYTITLE):
524: case (NODE_REFMISCINFO):
525: case (NODE_REFNAME):
526: case (NODE_REPLACEABLE):
1.9 kristaps 527: case (NODE_SCREEN):
1.2 kristaps 528: case (NODE_SYNOPSIS):
529: case (NODE_TERM):
1.19 kristaps 530: case (NODE_TRADEMARK):
1.2 kristaps 531: case (NODE_ULINK):
1.10 kristaps 532: case (NODE_USERINPUT):
1.13 kristaps 533: case (NODE_VARNAME):
1.17 kristaps 534: case (NODE_WORDASWORD):
1.18 kristaps 535: case (NODE_YEAR):
1.1 kristaps 536: return(1);
537: default:
538: break;
539: }
540: return(0);
541: case (NODE_LISTITEM):
1.4 kristaps 542: switch (parent) {
543: case (NODE_ITEMIZEDLIST):
1.8 kristaps 544: case (NODE_ORDEREDLIST):
1.4 kristaps 545: case (NODE_VARLISTENTRY):
546: return(1);
547: default:
548: break;
549: }
550: return(0);
1.6 kristaps 551: case (NODE_LITERAL):
552: switch (parent) {
553: case (NODE_EMPHASIS):
1.12 kristaps 554: case (NODE_ENTRY):
1.6 kristaps 555: case (NODE_FUNCSYNOPSISINFO):
556: case (NODE_LINK):
557: case (NODE_PARA):
558: case (NODE_PROGRAMLISTING):
1.15 kristaps 559: case (NODE_QUOTE):
1.6 kristaps 560: case (NODE_REFDESCRIPTOR):
561: case (NODE_REFENTRYTITLE):
562: case (NODE_REFNAME):
563: case (NODE_REFPURPOSE):
1.9 kristaps 564: case (NODE_SCREEN):
1.6 kristaps 565: case (NODE_SYNOPSIS):
566: case (NODE_TERM):
567: case (NODE_TITLE):
568: case (NODE_ULINK):
1.10 kristaps 569: case (NODE_USERINPUT):
1.6 kristaps 570: return(1);
571: default:
572: break;
573: }
574: return(0);
1.1 kristaps 575: case (NODE_MANVOLNUM):
576: switch (parent) {
577: case (NODE_CITEREFENTRY):
578: case (NODE_REFMETA):
579: return(1);
580: default:
581: break;
582: }
583: return(0);
1.16 kristaps 584: case (NODE_NOTE):
585: switch (parent) {
586: case (NODE_CAUTION):
587: case (NODE_ENTRY):
588: case (NODE_ITEMIZEDLIST):
589: case (NODE_LISTITEM):
590: case (NODE_NOTE):
591: case (NODE_ORDEREDLIST):
592: case (NODE_PARA):
593: case (NODE_REFSECT1):
594: case (NODE_REFSECT2):
595: case (NODE_REFSECT3):
596: case (NODE_REFSECTION):
597: case (NODE_REFSYNOPSISDIV):
598: case (NODE_TIP):
599: case (NODE_VARIABLELIST):
600: case (NODE_WARNING):
601: return(1);
602: default:
603: break;
604: }
605: return(0);
1.1 kristaps 606: case (NODE_OPTION):
607: switch (parent) {
608: case (NODE_ARG):
609: case (NODE_EMPHASIS):
1.12 kristaps 610: case (NODE_ENTRY):
1.1 kristaps 611: case (NODE_FUNCSYNOPSISINFO):
1.11 kristaps 612: case (NODE_GROUP):
1.2 kristaps 613: case (NODE_LINK):
1.1 kristaps 614: case (NODE_PARA):
615: case (NODE_PROGRAMLISTING):
1.15 kristaps 616: case (NODE_QUOTE):
1.1 kristaps 617: case (NODE_REFDESCRIPTOR):
618: case (NODE_REFENTRYTITLE):
619: case (NODE_REFNAME):
620: case (NODE_REFPURPOSE):
1.9 kristaps 621: case (NODE_SCREEN):
1.1 kristaps 622: case (NODE_SYNOPSIS):
623: case (NODE_TERM):
624: case (NODE_TITLE):
1.2 kristaps 625: case (NODE_ULINK):
1.10 kristaps 626: case (NODE_USERINPUT):
1.1 kristaps 627: return(1);
628: default:
629: break;
630: }
631: return(0);
1.8 kristaps 632: case (NODE_ORDEREDLIST):
633: switch (parent) {
1.16 kristaps 634: case (NODE_CAUTION):
1.12 kristaps 635: case (NODE_ENTRY):
1.8 kristaps 636: case (NODE_ITEMIZEDLIST):
637: case (NODE_LISTITEM):
638: case (NODE_ORDEREDLIST):
1.16 kristaps 639: case (NODE_NOTE):
1.8 kristaps 640: case (NODE_PARA):
641: case (NODE_REFSECT1):
642: case (NODE_REFSECT2):
1.16 kristaps 643: case (NODE_REFSECT3):
644: case (NODE_REFSECTION):
1.8 kristaps 645: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 646: case (NODE_TIP):
1.8 kristaps 647: case (NODE_VARIABLELIST):
1.16 kristaps 648: case (NODE_WARNING):
1.8 kristaps 649: return(1);
650: default:
651: break;
652: }
653: return(0);
1.1 kristaps 654: case (NODE_PARA):
655: switch (parent) {
1.16 kristaps 656: case (NODE_CAUTION):
1.12 kristaps 657: case (NODE_ENTRY):
1.4 kristaps 658: case (NODE_ITEMIZEDLIST):
1.1 kristaps 659: case (NODE_LISTITEM):
1.16 kristaps 660: case (NODE_NOTE):
1.8 kristaps 661: case (NODE_ORDEREDLIST):
1.1 kristaps 662: case (NODE_REFSECT1):
1.7 kristaps 663: case (NODE_REFSECT2):
1.16 kristaps 664: case (NODE_REFSECT3):
665: case (NODE_REFSECTION):
1.1 kristaps 666: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 667: case (NODE_TIP):
1.1 kristaps 668: case (NODE_VARIABLELIST):
1.16 kristaps 669: case (NODE_WARNING):
1.1 kristaps 670: return(1);
671: default:
672: break;
673: }
674: return(0);
675: case (NODE_PARAMDEF):
676: return(NODE_FUNCPROTOTYPE == parent);
677: case (NODE_PARAMETER):
678: switch (parent) {
679: case (NODE_CODE):
1.12 kristaps 680: case (NODE_ENTRY):
1.1 kristaps 681: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 682: case (NODE_LINK):
1.1 kristaps 683: case (NODE_PARA):
684: case (NODE_PARAMDEF):
685: case (NODE_PROGRAMLISTING):
1.15 kristaps 686: case (NODE_QUOTE):
1.1 kristaps 687: case (NODE_REFDESCRIPTOR):
688: case (NODE_REFENTRYTITLE):
689: case (NODE_REFNAME):
690: case (NODE_REFPURPOSE):
1.9 kristaps 691: case (NODE_SCREEN):
1.1 kristaps 692: case (NODE_SYNOPSIS):
693: case (NODE_TERM):
694: case (NODE_TITLE):
1.2 kristaps 695: case (NODE_ULINK):
1.10 kristaps 696: case (NODE_USERINPUT):
1.1 kristaps 697: return(1);
698: default:
699: break;
700: }
701: return(0);
702: case (NODE_PROGRAMLISTING):
703: switch (parent) {
1.16 kristaps 704: case (NODE_CAUTION):
1.12 kristaps 705: case (NODE_ENTRY):
1.4 kristaps 706: case (NODE_ITEMIZEDLIST):
1.1 kristaps 707: case (NODE_LISTITEM):
1.8 kristaps 708: case (NODE_ORDEREDLIST):
1.16 kristaps 709: case (NODE_NOTE):
1.1 kristaps 710: case (NODE_PARA):
711: case (NODE_REFSECT1):
1.7 kristaps 712: case (NODE_REFSECT2):
1.16 kristaps 713: case (NODE_REFSECT3):
714: case (NODE_REFSECTION):
1.1 kristaps 715: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 716: case (NODE_TIP):
1.9 kristaps 717: case (NODE_VARIABLELIST):
1.16 kristaps 718: case (NODE_WARNING):
1.9 kristaps 719: return(1);
720: default:
721: break;
722: }
723: return(0);
724: case (NODE_PROMPT):
725: switch (parent) {
726: case (NODE_EMPHASIS):
1.12 kristaps 727: case (NODE_ENTRY):
1.9 kristaps 728: case (NODE_FUNCSYNOPSISINFO):
729: case (NODE_LINK):
730: case (NODE_PARA):
731: case (NODE_PROGRAMLISTING):
1.15 kristaps 732: case (NODE_QUOTE):
1.9 kristaps 733: case (NODE_REFDESCRIPTOR):
734: case (NODE_REFENTRYTITLE):
735: case (NODE_REFNAME):
736: case (NODE_REFPURPOSE):
737: case (NODE_SCREEN):
738: case (NODE_SYNOPSIS):
739: case (NODE_TERM):
740: case (NODE_TITLE):
741: case (NODE_ULINK):
1.10 kristaps 742: case (NODE_USERINPUT):
1.1 kristaps 743: return(1);
744: default:
745: break;
746: }
747: return(0);
1.15 kristaps 748: case (NODE_QUOTE):
749: switch (parent) {
750: case (NODE_EMPHASIS):
751: case (NODE_ENTRY):
752: case (NODE_FUNCSYNOPSISINFO):
753: case (NODE_LINK):
754: case (NODE_PARA):
755: case (NODE_PROGRAMLISTING):
756: case (NODE_QUOTE):
757: case (NODE_REFDESCRIPTOR):
758: case (NODE_REFENTRYTITLE):
759: case (NODE_REFNAME):
760: case (NODE_REFPURPOSE):
761: case (NODE_SCREEN):
762: case (NODE_SYNOPSIS):
763: case (NODE_TERM):
764: case (NODE_TITLE):
765: case (NODE_ULINK):
766: return(1);
767: default:
768: break;
769: }
770: return(0);
1.1 kristaps 771: case (NODE_REFCLASS):
772: return(parent == NODE_REFNAMEDIV);
773: case (NODE_REFDESCRIPTOR):
774: return(parent == NODE_REFNAMEDIV);
775: case (NODE_REFENTRY):
776: return(parent == NODE_ROOT);
1.3 kristaps 777: case (NODE_REFENTRYINFO):
778: return(parent == NODE_REFENTRY);
1.1 kristaps 779: case (NODE_REFENTRYTITLE):
780: switch (parent) {
781: case (NODE_CITEREFENTRY):
782: case (NODE_REFMETA):
783: return(1);
784: default:
785: break;
786: }
787: case (NODE_REFMETA):
788: return(parent == NODE_REFENTRY);
1.21 ! kristaps 789: case (NODE_REFMETAINFO):
! 790: return(parent == NODE_REFMETA);
1.1 kristaps 791: case (NODE_REFMISCINFO):
792: return(parent == NODE_REFMETA);
793: case (NODE_REFNAME):
794: return(parent == NODE_REFNAMEDIV);
795: case (NODE_REFNAMEDIV):
796: return(parent == NODE_REFENTRY);
797: case (NODE_REFPURPOSE):
798: return(parent == NODE_REFNAMEDIV);
799: case (NODE_REFSECT1):
800: return(parent == NODE_REFENTRY);
1.7 kristaps 801: case (NODE_REFSECT2):
802: switch (parent) {
803: case (NODE_REFSYNOPSISDIV):
804: case (NODE_REFSECT1):
805: return(1);
806: default:
807: break;
808: }
809: return(0);
1.16 kristaps 810: case (NODE_REFSECT3):
811: return(parent == NODE_REFSECT2);
812: case (NODE_REFSECTION):
813: switch (parent) {
814: case (NODE_REFENTRY):
815: case (NODE_REFSECTION):
816: case (NODE_REFSYNOPSISDIV):
817: return(1);
818: default:
819: break;
820: }
821: return(0);
1.1 kristaps 822: case (NODE_REFSYNOPSISDIV):
823: return(parent == NODE_REFENTRY);
824: case (NODE_REPLACEABLE):
825: switch (parent) {
1.8 kristaps 826: case (NODE_ACRONYM):
1.14 kristaps 827: case (NODE_APPLICATION):
1.1 kristaps 828: case (NODE_ARG):
829: case (NODE_CODE):
830: case (NODE_COMMAND):
1.18 kristaps 831: case (NODE_CONSTANT):
1.1 kristaps 832: case (NODE_EMPHASIS):
1.12 kristaps 833: case (NODE_ENTRY):
1.8 kristaps 834: case (NODE_ENVAR):
1.5 kristaps 835: case (NODE_FILENAME):
1.1 kristaps 836: case (NODE_FUNCDEF):
837: case (NODE_FUNCSYNOPSISINFO):
838: case (NODE_FUNCTION):
1.11 kristaps 839: case (NODE_GROUP):
1.18 kristaps 840: case (NODE_HOLDER):
1.2 kristaps 841: case (NODE_LINK):
1.6 kristaps 842: case (NODE_LITERAL):
1.1 kristaps 843: case (NODE_MANVOLNUM):
844: case (NODE_OPTION):
845: case (NODE_PARA):
846: case (NODE_PARAMDEF):
847: case (NODE_PARAMETER):
848: case (NODE_PROGRAMLISTING):
1.9 kristaps 849: case (NODE_PROMPT):
1.15 kristaps 850: case (NODE_QUOTE):
1.1 kristaps 851: case (NODE_REFDESCRIPTOR):
852: case (NODE_REFENTRYTITLE):
853: case (NODE_REFMISCINFO):
854: case (NODE_REFNAME):
855: case (NODE_REFPURPOSE):
856: case (NODE_REPLACEABLE):
1.9 kristaps 857: case (NODE_SCREEN):
1.17 kristaps 858: case (NODE_SGMLTAG):
1.1 kristaps 859: case (NODE_SYNOPSIS):
860: case (NODE_TERM):
861: case (NODE_TITLE):
1.19 kristaps 862: case (NODE_TRADEMARK):
1.2 kristaps 863: case (NODE_ULINK):
1.10 kristaps 864: case (NODE_USERINPUT):
1.13 kristaps 865: case (NODE_VARNAME):
1.17 kristaps 866: case (NODE_WORDASWORD):
1.18 kristaps 867: case (NODE_YEAR):
1.1 kristaps 868: default:
869: return(1);
1.6 kristaps 870: }
871: return(0);
1.12 kristaps 872: case (NODE_ROW):
873: switch (parent) {
874: case (NODE_TBODY):
875: case (NODE_TFOOT):
876: case (NODE_THEAD):
877: return(1);
878: default:
879: break;
880: }
881: return(0);
1.6 kristaps 882: case (NODE_SBR):
883: switch (parent) {
884: case (NODE_ARG):
885: case (NODE_CMDSYNOPSIS):
1.11 kristaps 886: case (NODE_GROUP):
1.9 kristaps 887: return(1);
888: default:
889: break;
890: }
891: return(0);
892: case (NODE_SCREEN):
893: switch (parent) {
1.16 kristaps 894: case (NODE_CAUTION):
1.12 kristaps 895: case (NODE_ENTRY):
1.9 kristaps 896: case (NODE_ITEMIZEDLIST):
897: case (NODE_LISTITEM):
898: case (NODE_ORDEREDLIST):
1.16 kristaps 899: case (NODE_NOTE):
1.9 kristaps 900: case (NODE_PARA):
901: case (NODE_REFSECT1):
902: case (NODE_REFSECT2):
1.16 kristaps 903: case (NODE_REFSECT3):
904: case (NODE_REFSECTION):
1.9 kristaps 905: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 906: case (NODE_TIP):
1.9 kristaps 907: case (NODE_VARIABLELIST):
1.16 kristaps 908: case (NODE_WARNING):
1.6 kristaps 909: return(1);
910: default:
911: break;
1.1 kristaps 912: }
913: return(0);
1.17 kristaps 914: case (NODE_SGMLTAG):
915: switch (parent) {
916: case (NODE_APPLICATION):
917: case (NODE_CODE):
918: case (NODE_COMMAND):
919: case (NODE_EMPHASIS):
920: case (NODE_ENTRY):
921: case (NODE_FILENAME):
922: case (NODE_FUNCSYNOPSISINFO):
923: case (NODE_FUNCTION):
924: case (NODE_LINK):
925: case (NODE_LITERAL):
926: case (NODE_OPTION):
927: case (NODE_PARA):
928: case (NODE_PARAMETER):
929: case (NODE_PROGRAMLISTING):
930: case (NODE_QUOTE):
931: case (NODE_REFDESCRIPTOR):
932: case (NODE_REFENTRYTITLE):
933: case (NODE_REFNAME):
934: case (NODE_REFPURPOSE):
935: case (NODE_SCREEN):
936: case (NODE_SYNOPSIS):
937: case (NODE_TERM):
938: case (NODE_TITLE):
939: case (NODE_USERINPUT):
940: return(1);
941: default:
942: break;
943: }
944: return(0);
1.1 kristaps 945: case (NODE_STRUCTNAME):
946: switch (parent) {
947: case (NODE_CODE):
948: case (NODE_FUNCSYNOPSISINFO):
949: case (NODE_FUNCTION):
950: case (NODE_OPTION):
951: case (NODE_PARA):
952: case (NODE_PARAMETER):
953: case (NODE_PROGRAMLISTING):
954: case (NODE_REFDESCRIPTOR):
955: case (NODE_REFENTRYTITLE):
956: case (NODE_REFNAME):
957: case (NODE_REFPURPOSE):
958: case (NODE_SYNOPSIS):
959: case (NODE_TITLE):
960: return(1);
961: default:
962: break;
963: }
964: return(0);
965: case (NODE_SYNOPSIS):
966: switch (parent) {
1.16 kristaps 967: case (NODE_CAUTION):
1.12 kristaps 968: case (NODE_ENTRY):
1.4 kristaps 969: case (NODE_ITEMIZEDLIST):
1.1 kristaps 970: case (NODE_LISTITEM):
1.8 kristaps 971: case (NODE_ORDEREDLIST):
1.16 kristaps 972: case (NODE_NOTE):
973: case (NODE_PARA):
1.1 kristaps 974: case (NODE_REFSYNOPSISDIV):
975: case (NODE_REFSECT1):
1.7 kristaps 976: case (NODE_REFSECT2):
1.16 kristaps 977: case (NODE_REFSECT3):
978: case (NODE_REFSECTION):
979: case (NODE_TIP):
980: case (NODE_WARNING):
1.1 kristaps 981: return(1);
982: default:
983: break;
984: }
985: return(0);
1.20 kristaps 986: case (NODE_INFORMALTABLE):
987: /* FALLTHROUGH */
1.12 kristaps 988: case (NODE_TABLE):
989: switch (parent) {
1.16 kristaps 990: case (NODE_CAUTION):
1.12 kristaps 991: case (NODE_ENTRY):
992: case (NODE_ITEMIZEDLIST):
993: case (NODE_LISTITEM):
994: case (NODE_ORDEREDLIST):
1.16 kristaps 995: case (NODE_NOTE):
1.12 kristaps 996: case (NODE_PARA):
997: case (NODE_REFSECT1):
1.16 kristaps 998: case (NODE_REFSECT2):
999: case (NODE_REFSECT3):
1000: case (NODE_REFSECTION):
1.12 kristaps 1001: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 1002: case (NODE_TIP):
1.12 kristaps 1003: case (NODE_VARIABLELIST):
1.16 kristaps 1004: case (NODE_WARNING):
1.12 kristaps 1005: return(1);
1006: default:
1007: break;
1008: }
1009: return(0);
1010: case (NODE_TBODY):
1011: return(NODE_TGROUP == parent);
1012: case (NODE_TFOOT):
1013: return(NODE_TGROUP == parent);
1014: case (NODE_TGROUP):
1.20 kristaps 1015: switch (parent) {
1016: case (NODE_INFORMALTABLE):
1017: case (NODE_TABLE):
1018: return(1);
1019: default:
1020: break;
1021: }
1022: return(0);
1.12 kristaps 1023: case (NODE_THEAD):
1024: return(NODE_TGROUP == parent);
1.1 kristaps 1025: case (NODE_TITLE):
1026: switch (parent) {
1.18 kristaps 1027: case (NODE_INFO):
1.20 kristaps 1028: case (NODE_INFORMALTABLE):
1.4 kristaps 1029: case (NODE_ITEMIZEDLIST):
1.8 kristaps 1030: case (NODE_ORDEREDLIST):
1.3 kristaps 1031: case (NODE_REFENTRYINFO):
1.1 kristaps 1032: case (NODE_REFSECT1):
1.7 kristaps 1033: case (NODE_REFSECT2):
1.16 kristaps 1034: case (NODE_REFSECT3):
1035: case (NODE_REFSECTION):
1.1 kristaps 1036: case (NODE_REFSYNOPSISDIV):
1.12 kristaps 1037: case (NODE_TABLE):
1.1 kristaps 1038: case (NODE_VARIABLELIST):
1039: return(1);
1040: default:
1041: break;
1042: }
1043: return(0);
1044: case (NODE_TERM):
1045: return(NODE_VARLISTENTRY == parent);
1046: case (NODE_TEXT):
1047: return(1);
1.16 kristaps 1048: case (NODE_TIP):
1049: switch (parent) {
1050: case (NODE_CAUTION):
1051: case (NODE_ENTRY):
1052: case (NODE_ITEMIZEDLIST):
1053: case (NODE_LISTITEM):
1054: case (NODE_NOTE):
1055: case (NODE_ORDEREDLIST):
1056: case (NODE_PARA):
1057: case (NODE_REFSECT1):
1058: case (NODE_REFSECT2):
1059: case (NODE_REFSECT3):
1060: case (NODE_REFSECTION):
1061: case (NODE_REFSYNOPSISDIV):
1062: case (NODE_TIP):
1063: case (NODE_VARIABLELIST):
1064: case (NODE_WARNING):
1.19 kristaps 1065: return(1);
1066: default:
1067: break;
1068: }
1069: return(0);
1070: case (NODE_TRADEMARK):
1071: switch (parent) {
1072: case (NODE_ACRONYM):
1073: case (NODE_EMPHASIS):
1074: case (NODE_ENTRY):
1075: case (NODE_FUNCSYNOPSISINFO):
1076: case (NODE_LINK):
1077: case (NODE_ULINK):
1078: case (NODE_PARA):
1079: case (NODE_PROGRAMLISTING):
1080: case (NODE_QUOTE):
1081: case (NODE_REFDESCRIPTOR):
1082: case (NODE_REFENTRYTITLE):
1083: case (NODE_REFNAME):
1084: case (NODE_REFPURPOSE):
1085: case (NODE_SCREEN):
1086: case (NODE_SYNOPSIS):
1087: case (NODE_TERM):
1088: case (NODE_TITLE):
1.16 kristaps 1089: return(1);
1090: default:
1091: break;
1092: }
1093: return(0);
1.10 kristaps 1094: case (NODE_USERINPUT):
1095: switch (parent) {
1096: case (NODE_EMPHASIS):
1.12 kristaps 1097: case (NODE_ENTRY):
1.10 kristaps 1098: case (NODE_FUNCSYNOPSISINFO):
1099: case (NODE_LINK):
1100: case (NODE_PARA):
1101: case (NODE_PROGRAMLISTING):
1.15 kristaps 1102: case (NODE_QUOTE):
1.10 kristaps 1103: case (NODE_REFDESCRIPTOR):
1104: case (NODE_REFENTRYTITLE):
1105: case (NODE_REFNAME):
1106: case (NODE_REFPURPOSE):
1107: case (NODE_SCREEN):
1108: case (NODE_SYNOPSIS):
1109: case (NODE_TERM):
1110: case (NODE_TITLE):
1111: case (NODE_ULINK):
1112: case (NODE_USERINPUT):
1113: return(1);
1114: default:
1115: break;
1116: }
1117: return(0);
1.1 kristaps 1118: case (NODE_VARIABLELIST):
1119: switch (parent) {
1.16 kristaps 1120: case (NODE_CAUTION):
1.12 kristaps 1121: case (NODE_ENTRY):
1.4 kristaps 1122: case (NODE_ITEMIZEDLIST):
1.8 kristaps 1123: case (NODE_ORDEREDLIST):
1.16 kristaps 1124: case (NODE_NOTE):
1.1 kristaps 1125: case (NODE_PARA):
1126: case (NODE_REFSECT1):
1.7 kristaps 1127: case (NODE_REFSECT2):
1.16 kristaps 1128: case (NODE_REFSECT3):
1129: case (NODE_REFSECTION):
1.1 kristaps 1130: case (NODE_REFSYNOPSISDIV):
1.16 kristaps 1131: case (NODE_TIP):
1.1 kristaps 1132: case (NODE_VARIABLELIST):
1.16 kristaps 1133: case (NODE_WARNING):
1.13 kristaps 1134: return(1);
1135: default:
1136: break;
1137: }
1138: return(0);
1139: case (NODE_VARNAME):
1140: switch (parent) {
1141: case (NODE_CODE):
1142: case (NODE_EMPHASIS):
1143: case (NODE_ENTRY):
1144: case (NODE_FUNCSYNOPSISINFO):
1145: case (NODE_LINK):
1146: case (NODE_PARA):
1147: case (NODE_PROGRAMLISTING):
1.15 kristaps 1148: case (NODE_QUOTE):
1.13 kristaps 1149: case (NODE_REFDESCRIPTOR):
1150: case (NODE_REFENTRYTITLE):
1151: case (NODE_REFNAME):
1152: case (NODE_REFPURPOSE):
1153: case (NODE_SCREEN):
1154: case (NODE_SYNOPSIS):
1155: case (NODE_TERM):
1156: case (NODE_TITLE):
1157: case (NODE_ULINK):
1.1 kristaps 1158: return(1);
1159: default:
1160: break;
1161: }
1162: return(0);
1163: case (NODE_VARLISTENTRY):
1164: return (NODE_VARIABLELIST == parent);
1.16 kristaps 1165: case (NODE_WARNING):
1166: switch (parent) {
1167: case (NODE_CAUTION):
1168: case (NODE_ENTRY):
1169: case (NODE_ITEMIZEDLIST):
1170: case (NODE_LISTITEM):
1171: case (NODE_NOTE):
1172: case (NODE_ORDEREDLIST):
1173: case (NODE_PARA):
1174: case (NODE_REFSECT1):
1175: case (NODE_REFSECT2):
1176: case (NODE_REFSECT3):
1177: case (NODE_REFSECTION):
1178: case (NODE_REFSYNOPSISDIV):
1179: case (NODE_TIP):
1180: case (NODE_VARIABLELIST):
1181: case (NODE_WARNING):
1.17 kristaps 1182: return(1);
1183: default:
1184: break;
1185: }
1186: return(0);
1187: case (NODE_WORDASWORD):
1188: switch (parent) {
1189: case (NODE_EMPHASIS):
1190: case (NODE_ENTRY):
1191: case (NODE_FUNCSYNOPSISINFO):
1192: case (NODE_LINK):
1193: case (NODE_PARA):
1194: case (NODE_PROGRAMLISTING):
1195: case (NODE_QUOTE):
1196: case (NODE_REFDESCRIPTOR):
1197: case (NODE_REFENTRYTITLE):
1198: case (NODE_REFNAME):
1199: case (NODE_REFPURPOSE):
1200: case (NODE_SCREEN):
1201: case (NODE_SYNOPSIS):
1202: case (NODE_TERM):
1203: case (NODE_TITLE):
1204: case (NODE_ULINK):
1.18 kristaps 1205: return(1);
1206: default:
1207: break;
1208: }
1209: return(0);
1210: case (NODE_YEAR):
1211: switch (parent) {
1212: case (NODE_COPYRIGHT):
1.16 kristaps 1213: return(1);
1214: default:
1215: break;
1216: }
1217: return(0);
1.1 kristaps 1218: case (NODE__MAX):
1219: break;
1220: }
1221:
1222: abort();
1223: return(0);
1224: }
1225:
CVSweb