Annotation of docbook2mdoc/rules.c, Revision 1.15
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.14 kristaps 90: case (NODE_APPLICATION):
91: switch (parent) {
92: case (NODE_EMPHASIS):
93: case (NODE_ENTRY):
94: case (NODE_FUNCSYNOPSISINFO):
95: case (NODE_LINK):
96: case (NODE_PARA):
97: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 98: case (NODE_QUOTE):
1.14 kristaps 99: case (NODE_REFCLASS):
100: case (NODE_REFDESCRIPTOR):
101: case (NODE_REFENTRYTITLE):
102: case (NODE_REFNAME):
103: case (NODE_REFPURPOSE):
104: case (NODE_SCREEN):
105: case (NODE_SYNOPSIS):
106: case (NODE_TERM):
107: case (NODE_TITLE):
108: case (NODE_ULINK):
109: return(1);
110: default:
111: break;
112: }
113: return(0);
1.1 kristaps 114: case (NODE_ARG):
115: switch (parent) {
116: case (NODE_ARG):
117: case (NODE_CMDSYNOPSIS):
1.11 kristaps 118: case (NODE_GROUP):
1.1 kristaps 119: return(1);
120: default:
121: break;
122: }
123: return(0);
124: case (NODE_CITEREFENTRY):
125: switch (parent) {
126: case (NODE_EMPHASIS):
1.12 kristaps 127: case (NODE_ENTRY):
1.1 kristaps 128: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 129: case (NODE_LINK):
1.1 kristaps 130: case (NODE_PARA):
131: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 132: case (NODE_QUOTE):
1.1 kristaps 133: case (NODE_REFDESCRIPTOR):
134: case (NODE_REFENTRYTITLE):
135: case (NODE_REFNAME):
136: case (NODE_REFPURPOSE):
1.9 kristaps 137: case (NODE_SCREEN):
1.1 kristaps 138: case (NODE_SYNOPSIS):
139: case (NODE_TERM):
140: case (NODE_TITLE):
1.2 kristaps 141: case (NODE_ULINK):
1.1 kristaps 142: return(1);
143: default:
144: break;
145: }
146: return(0);
147: case (NODE_CMDSYNOPSIS):
148: switch (parent) {
1.12 kristaps 149: case (NODE_ENTRY):
1.4 kristaps 150: case (NODE_ITEMIZEDLIST):
1.1 kristaps 151: case (NODE_LISTITEM):
1.8 kristaps 152: case (NODE_ORDEREDLIST):
1.1 kristaps 153: case (NODE_PARA):
154: case (NODE_REFSECT1):
1.7 kristaps 155: case (NODE_REFSECT2):
1.1 kristaps 156: case (NODE_REFSYNOPSISDIV):
157: case (NODE_VARIABLELIST):
158: return(1);
159: default:
160: break;
161: }
162: return(0);
163: case (NODE_CODE):
164: switch (parent) {
165: case (NODE_EMPHASIS):
1.12 kristaps 166: case (NODE_ENTRY):
1.1 kristaps 167: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 168: case (NODE_LINK):
1.1 kristaps 169: case (NODE_PARA):
170: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 171: case (NODE_QUOTE):
1.1 kristaps 172: case (NODE_REFDESCRIPTOR):
173: case (NODE_REFENTRYTITLE):
174: case (NODE_REFNAME):
175: case (NODE_REFPURPOSE):
1.9 kristaps 176: case (NODE_SCREEN):
1.1 kristaps 177: case (NODE_SYNOPSIS):
178: case (NODE_TERM):
179: case (NODE_TITLE):
1.2 kristaps 180: case (NODE_ULINK):
1.10 kristaps 181: case (NODE_USERINPUT):
1.1 kristaps 182: return(1);
183: default:
184: break;
185: }
186: return(0);
187: case (NODE_COMMAND):
188: switch (parent) {
189: case (NODE_CMDSYNOPSIS):
190: case (NODE_EMPHASIS):
1.12 kristaps 191: case (NODE_ENTRY):
1.1 kristaps 192: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 193: case (NODE_LINK):
1.1 kristaps 194: case (NODE_PARA):
195: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 196: case (NODE_QUOTE):
1.1 kristaps 197: case (NODE_REFDESCRIPTOR):
198: case (NODE_REFENTRYTITLE):
199: case (NODE_REFNAME):
200: case (NODE_REFPURPOSE):
1.9 kristaps 201: case (NODE_SCREEN):
1.1 kristaps 202: case (NODE_SYNOPSIS):
203: case (NODE_TERM):
204: case (NODE_TITLE):
1.2 kristaps 205: case (NODE_ULINK):
1.10 kristaps 206: case (NODE_USERINPUT):
1.1 kristaps 207: return(1);
208: default:
209: break;
210: }
211: return(0);
1.3 kristaps 212: case (NODE_DATE):
213: switch (parent) {
214: case (NODE_EMPHASIS):
1.12 kristaps 215: case (NODE_ENTRY):
1.3 kristaps 216: case (NODE_FUNCSYNOPSISINFO):
217: case (NODE_LINK):
218: case (NODE_PARA):
219: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 220: case (NODE_QUOTE):
1.3 kristaps 221: case (NODE_REFDESCRIPTOR):
222: case (NODE_REFENTRYINFO):
223: case (NODE_REFENTRYTITLE):
224: case (NODE_REFNAME):
225: case (NODE_REFPURPOSE):
1.9 kristaps 226: case (NODE_SCREEN):
1.3 kristaps 227: case (NODE_SYNOPSIS):
228: case (NODE_TITLE):
229: case (NODE_ULINK):
230: return(1);
231: default:
232: break;
233: }
234: return(0);
1.1 kristaps 235: case (NODE_EMPHASIS):
236: switch (parent) {
237: case (NODE_EMPHASIS):
1.12 kristaps 238: case (NODE_ENTRY):
1.1 kristaps 239: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 240: case (NODE_LINK):
1.1 kristaps 241: case (NODE_PARA):
242: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 243: case (NODE_QUOTE):
1.1 kristaps 244: case (NODE_REFDESCRIPTOR):
245: case (NODE_REFENTRYTITLE):
246: case (NODE_REFNAME):
247: case (NODE_REFPURPOSE):
1.9 kristaps 248: case (NODE_SCREEN):
1.1 kristaps 249: case (NODE_SYNOPSIS):
250: case (NODE_TERM):
251: case (NODE_TITLE):
1.2 kristaps 252: case (NODE_ULINK):
1.1 kristaps 253: return(1);
254: default:
255: break;
256: }
257: return(0);
1.12 kristaps 258: case (NODE_ENTRY):
259: return(NODE_ROW == parent);
1.8 kristaps 260: case (NODE_ENVAR):
261: switch (parent) {
262: case (NODE_EMPHASIS):
1.12 kristaps 263: case (NODE_ENTRY):
1.8 kristaps 264: case (NODE_FUNCSYNOPSISINFO):
265: case (NODE_LINK):
266: case (NODE_PARA):
267: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 268: case (NODE_QUOTE):
1.8 kristaps 269: case (NODE_REFDESCRIPTOR):
270: case (NODE_REFENTRYTITLE):
271: case (NODE_REFNAME):
272: case (NODE_REFPURPOSE):
1.9 kristaps 273: case (NODE_SCREEN):
1.8 kristaps 274: case (NODE_SYNOPSIS):
275: case (NODE_TERM):
276: case (NODE_TITLE):
277: case (NODE_ULINK):
1.10 kristaps 278: case (NODE_USERINPUT):
1.8 kristaps 279: return(1);
280: default:
281: break;
282: }
283: return(0);
1.5 kristaps 284: case (NODE_FILENAME):
285: switch (parent) {
286: case (NODE_EMPHASIS):
1.12 kristaps 287: case (NODE_ENTRY):
1.5 kristaps 288: case (NODE_FUNCSYNOPSISINFO):
289: case (NODE_LINK):
290: case (NODE_PARA):
291: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 292: case (NODE_QUOTE):
1.5 kristaps 293: case (NODE_REFDESCRIPTOR):
294: case (NODE_REFENTRYTITLE):
295: case (NODE_REFNAME):
296: case (NODE_REFPURPOSE):
1.9 kristaps 297: case (NODE_SCREEN):
1.5 kristaps 298: case (NODE_SYNOPSIS):
299: case (NODE_TERM):
300: case (NODE_TITLE):
301: case (NODE_ULINK):
1.10 kristaps 302: case (NODE_USERINPUT):
1.5 kristaps 303: return(1);
304: default:
305: break;
306: }
307: return(0);
1.1 kristaps 308: case (NODE_FUNCDEF):
309: return(NODE_FUNCPROTOTYPE == parent);
310: case (NODE_FUNCPROTOTYPE):
311: return(NODE_FUNCSYNOPSIS == parent);
312: case (NODE_FUNCSYNOPSIS):
313: switch (parent) {
1.12 kristaps 314: case (NODE_ENTRY):
1.4 kristaps 315: case (NODE_ITEMIZEDLIST):
1.1 kristaps 316: case (NODE_LISTITEM):
1.8 kristaps 317: case (NODE_ORDEREDLIST):
1.1 kristaps 318: case (NODE_PARA):
319: case (NODE_REFSECT1):
1.7 kristaps 320: case (NODE_REFSECT2):
1.1 kristaps 321: case (NODE_REFSYNOPSISDIV):
322: case (NODE_VARIABLELIST):
323: return(1);
324: default:
325: break;
326: }
327: return(0);
328: case (NODE_FUNCSYNOPSISINFO):
329: return(NODE_FUNCSYNOPSIS == parent);
330: case (NODE_FUNCTION):
331: switch (parent) {
332: case (NODE_CODE):
333: case (NODE_EMPHASIS):
1.12 kristaps 334: case (NODE_ENTRY):
1.1 kristaps 335: case (NODE_FUNCDEF):
336: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 337: case (NODE_LINK):
1.1 kristaps 338: case (NODE_PARA):
339: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 340: case (NODE_QUOTE):
1.1 kristaps 341: case (NODE_REFDESCRIPTOR):
342: case (NODE_REFENTRYTITLE):
343: case (NODE_REFNAME):
344: case (NODE_REFPURPOSE):
1.9 kristaps 345: case (NODE_SCREEN):
1.1 kristaps 346: case (NODE_SYNOPSIS):
347: case (NODE_TERM):
348: case (NODE_TITLE):
1.2 kristaps 349: case (NODE_ULINK):
350: return(1);
351: default:
352: break;
353: }
354: return(0);
1.4 kristaps 355: case (NODE_ITEMIZEDLIST):
356: switch (parent) {
1.12 kristaps 357: case (NODE_ENTRY):
1.4 kristaps 358: case (NODE_ITEMIZEDLIST):
359: case (NODE_LISTITEM):
1.8 kristaps 360: case (NODE_ORDEREDLIST):
1.4 kristaps 361: case (NODE_REFSECT1):
1.7 kristaps 362: case (NODE_REFSECT2):
1.4 kristaps 363: case (NODE_REFSYNOPSISDIV):
364: case (NODE_VARIABLELIST):
365: return(1);
366: default:
367: break;
368: }
369: return(0);
1.11 kristaps 370: case (NODE_GROUP):
371: switch (parent) {
372: case (NODE_ARG):
373: case (NODE_CMDSYNOPSIS):
374: case (NODE_GROUP):
375: return(1);
376: default:
377: break;
378: }
379: return(0);
1.2 kristaps 380: case (NODE_LINK):
1.4 kristaps 381: case (NODE_ULINK): /* Synonyms. */
1.2 kristaps 382: switch (parent) {
1.8 kristaps 383: case (NODE_ACRONYM):
1.14 kristaps 384: case (NODE_APPLICATION):
1.2 kristaps 385: case (NODE_ARG):
386: case (NODE_CODE):
387: case (NODE_COMMAND):
388: case (NODE_EMPHASIS):
1.12 kristaps 389: case (NODE_ENTRY):
1.8 kristaps 390: case (NODE_ENVAR):
1.5 kristaps 391: case (NODE_FILENAME):
1.2 kristaps 392: case (NODE_FUNCDEF):
393: case (NODE_FUNCSYNOPSISINFO):
394: case (NODE_FUNCTION):
395: case (NODE_LINK):
1.6 kristaps 396: case (NODE_LITERAL):
1.2 kristaps 397: case (NODE_MANVOLNUM):
398: case (NODE_OPTION):
399: case (NODE_PARA):
400: case (NODE_PARAMDEF):
401: case (NODE_PARAMETER):
402: case (NODE_PROGRAMLISTING):
1.9 kristaps 403: case (NODE_PROMPT):
1.15 ! kristaps 404: case (NODE_QUOTE):
1.2 kristaps 405: case (NODE_REFDESCRIPTOR):
406: case (NODE_REFENTRYTITLE):
407: case (NODE_REFMISCINFO):
408: case (NODE_REFNAME):
409: case (NODE_REPLACEABLE):
1.9 kristaps 410: case (NODE_SCREEN):
1.2 kristaps 411: case (NODE_SYNOPSIS):
412: case (NODE_TERM):
413: case (NODE_ULINK):
1.10 kristaps 414: case (NODE_USERINPUT):
1.13 kristaps 415: case (NODE_VARNAME):
1.1 kristaps 416: return(1);
417: default:
418: break;
419: }
420: return(0);
421: case (NODE_LISTITEM):
1.4 kristaps 422: switch (parent) {
423: case (NODE_ITEMIZEDLIST):
1.8 kristaps 424: case (NODE_ORDEREDLIST):
1.4 kristaps 425: case (NODE_VARLISTENTRY):
426: return(1);
427: default:
428: break;
429: }
430: return(0);
1.6 kristaps 431: case (NODE_LITERAL):
432: switch (parent) {
433: case (NODE_EMPHASIS):
1.12 kristaps 434: case (NODE_ENTRY):
1.6 kristaps 435: case (NODE_FUNCSYNOPSISINFO):
436: case (NODE_LINK):
437: case (NODE_PARA):
438: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 439: case (NODE_QUOTE):
1.6 kristaps 440: case (NODE_REFDESCRIPTOR):
441: case (NODE_REFENTRYTITLE):
442: case (NODE_REFNAME):
443: case (NODE_REFPURPOSE):
1.9 kristaps 444: case (NODE_SCREEN):
1.6 kristaps 445: case (NODE_SYNOPSIS):
446: case (NODE_TERM):
447: case (NODE_TITLE):
448: case (NODE_ULINK):
1.10 kristaps 449: case (NODE_USERINPUT):
1.6 kristaps 450: return(1);
451: default:
452: break;
453: }
454: return(0);
1.1 kristaps 455: case (NODE_MANVOLNUM):
456: switch (parent) {
457: case (NODE_CITEREFENTRY):
458: case (NODE_REFMETA):
459: return(1);
460: default:
461: break;
462: }
463: return(0);
464: case (NODE_OPTION):
465: switch (parent) {
466: case (NODE_ARG):
467: case (NODE_EMPHASIS):
1.12 kristaps 468: case (NODE_ENTRY):
1.1 kristaps 469: case (NODE_FUNCSYNOPSISINFO):
1.11 kristaps 470: case (NODE_GROUP):
1.2 kristaps 471: case (NODE_LINK):
1.1 kristaps 472: case (NODE_PARA):
473: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 474: case (NODE_QUOTE):
1.1 kristaps 475: case (NODE_REFDESCRIPTOR):
476: case (NODE_REFENTRYTITLE):
477: case (NODE_REFNAME):
478: case (NODE_REFPURPOSE):
1.9 kristaps 479: case (NODE_SCREEN):
1.1 kristaps 480: case (NODE_SYNOPSIS):
481: case (NODE_TERM):
482: case (NODE_TITLE):
1.2 kristaps 483: case (NODE_ULINK):
1.10 kristaps 484: case (NODE_USERINPUT):
1.1 kristaps 485: return(1);
486: default:
487: break;
488: }
489: return(0);
1.8 kristaps 490: case (NODE_ORDEREDLIST):
491: switch (parent) {
1.12 kristaps 492: case (NODE_ENTRY):
1.8 kristaps 493: case (NODE_ITEMIZEDLIST):
494: case (NODE_LISTITEM):
495: case (NODE_ORDEREDLIST):
496: case (NODE_PARA):
497: case (NODE_REFSECT1):
498: case (NODE_REFSECT2):
499: case (NODE_REFSYNOPSISDIV):
500: case (NODE_VARIABLELIST):
501: return(1);
502: default:
503: break;
504: }
505: return(0);
1.1 kristaps 506: case (NODE_PARA):
507: switch (parent) {
1.12 kristaps 508: case (NODE_ENTRY):
1.4 kristaps 509: case (NODE_ITEMIZEDLIST):
1.1 kristaps 510: case (NODE_LISTITEM):
1.8 kristaps 511: case (NODE_ORDEREDLIST):
1.1 kristaps 512: case (NODE_REFSECT1):
1.7 kristaps 513: case (NODE_REFSECT2):
1.1 kristaps 514: case (NODE_REFSYNOPSISDIV):
515: case (NODE_VARIABLELIST):
516: return(1);
517: default:
518: break;
519: }
520: return(0);
521: case (NODE_PARAMDEF):
522: return(NODE_FUNCPROTOTYPE == parent);
523: case (NODE_PARAMETER):
524: switch (parent) {
525: case (NODE_CODE):
1.12 kristaps 526: case (NODE_ENTRY):
1.1 kristaps 527: case (NODE_FUNCSYNOPSISINFO):
1.2 kristaps 528: case (NODE_LINK):
1.1 kristaps 529: case (NODE_PARA):
530: case (NODE_PARAMDEF):
531: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 532: case (NODE_QUOTE):
1.1 kristaps 533: case (NODE_REFDESCRIPTOR):
534: case (NODE_REFENTRYTITLE):
535: case (NODE_REFNAME):
536: case (NODE_REFPURPOSE):
1.9 kristaps 537: case (NODE_SCREEN):
1.1 kristaps 538: case (NODE_SYNOPSIS):
539: case (NODE_TERM):
540: case (NODE_TITLE):
1.2 kristaps 541: case (NODE_ULINK):
1.10 kristaps 542: case (NODE_USERINPUT):
1.1 kristaps 543: return(1);
544: default:
545: break;
546: }
547: return(0);
548: case (NODE_PROGRAMLISTING):
549: switch (parent) {
1.12 kristaps 550: case (NODE_ENTRY):
1.4 kristaps 551: case (NODE_ITEMIZEDLIST):
1.1 kristaps 552: case (NODE_LISTITEM):
1.8 kristaps 553: case (NODE_ORDEREDLIST):
1.1 kristaps 554: case (NODE_PARA):
555: case (NODE_REFSECT1):
1.7 kristaps 556: case (NODE_REFSECT2):
1.1 kristaps 557: case (NODE_REFSYNOPSISDIV):
1.9 kristaps 558: case (NODE_VARIABLELIST):
559: return(1);
560: default:
561: break;
562: }
563: return(0);
564: case (NODE_PROMPT):
565: switch (parent) {
566: case (NODE_EMPHASIS):
1.12 kristaps 567: case (NODE_ENTRY):
1.9 kristaps 568: case (NODE_FUNCSYNOPSISINFO):
569: case (NODE_LINK):
570: case (NODE_PARA):
571: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 572: case (NODE_QUOTE):
1.9 kristaps 573: case (NODE_REFDESCRIPTOR):
574: case (NODE_REFENTRYTITLE):
575: case (NODE_REFNAME):
576: case (NODE_REFPURPOSE):
577: case (NODE_SCREEN):
578: case (NODE_SYNOPSIS):
579: case (NODE_TERM):
580: case (NODE_TITLE):
581: case (NODE_ULINK):
1.10 kristaps 582: case (NODE_USERINPUT):
1.1 kristaps 583: return(1);
584: default:
585: break;
586: }
587: return(0);
1.15 ! kristaps 588: case (NODE_QUOTE):
! 589: switch (parent) {
! 590: case (NODE_EMPHASIS):
! 591: case (NODE_ENTRY):
! 592: case (NODE_FUNCSYNOPSISINFO):
! 593: case (NODE_LINK):
! 594: case (NODE_PARA):
! 595: case (NODE_PROGRAMLISTING):
! 596: case (NODE_QUOTE):
! 597: case (NODE_REFDESCRIPTOR):
! 598: case (NODE_REFENTRYTITLE):
! 599: case (NODE_REFNAME):
! 600: case (NODE_REFPURPOSE):
! 601: case (NODE_SCREEN):
! 602: case (NODE_SYNOPSIS):
! 603: case (NODE_TERM):
! 604: case (NODE_TITLE):
! 605: case (NODE_ULINK):
! 606: return(1);
! 607: default:
! 608: break;
! 609: }
! 610: return(0);
! 611:
1.1 kristaps 612: case (NODE_REFCLASS):
613: return(parent == NODE_REFNAMEDIV);
614: case (NODE_REFDESCRIPTOR):
615: return(parent == NODE_REFNAMEDIV);
616: case (NODE_REFENTRY):
617: return(parent == NODE_ROOT);
1.3 kristaps 618: case (NODE_REFENTRYINFO):
619: return(parent == NODE_REFENTRY);
1.1 kristaps 620: case (NODE_REFENTRYTITLE):
621: switch (parent) {
622: case (NODE_CITEREFENTRY):
623: case (NODE_REFMETA):
624: return(1);
625: default:
626: break;
627: }
628: case (NODE_REFMETA):
629: return(parent == NODE_REFENTRY);
630: case (NODE_REFMISCINFO):
631: return(parent == NODE_REFMETA);
632: case (NODE_REFNAME):
633: return(parent == NODE_REFNAMEDIV);
634: case (NODE_REFNAMEDIV):
635: return(parent == NODE_REFENTRY);
636: case (NODE_REFPURPOSE):
637: return(parent == NODE_REFNAMEDIV);
638: case (NODE_REFSECT1):
639: return(parent == NODE_REFENTRY);
1.7 kristaps 640: case (NODE_REFSECT2):
641: switch (parent) {
642: case (NODE_REFSYNOPSISDIV):
643: case (NODE_REFSECT1):
644: return(1);
645: default:
646: break;
647: }
648: return(0);
1.1 kristaps 649: case (NODE_REFSYNOPSISDIV):
650: return(parent == NODE_REFENTRY);
651: case (NODE_REPLACEABLE):
652: switch (parent) {
1.8 kristaps 653: case (NODE_ACRONYM):
1.14 kristaps 654: case (NODE_APPLICATION):
1.1 kristaps 655: case (NODE_ARG):
656: case (NODE_CODE):
657: case (NODE_COMMAND):
658: case (NODE_EMPHASIS):
1.12 kristaps 659: case (NODE_ENTRY):
1.8 kristaps 660: case (NODE_ENVAR):
1.5 kristaps 661: case (NODE_FILENAME):
1.1 kristaps 662: case (NODE_FUNCDEF):
663: case (NODE_FUNCSYNOPSISINFO):
664: case (NODE_FUNCTION):
1.11 kristaps 665: case (NODE_GROUP):
1.2 kristaps 666: case (NODE_LINK):
1.6 kristaps 667: case (NODE_LITERAL):
1.1 kristaps 668: case (NODE_MANVOLNUM):
669: case (NODE_OPTION):
670: case (NODE_PARA):
671: case (NODE_PARAMDEF):
672: case (NODE_PARAMETER):
673: case (NODE_PROGRAMLISTING):
1.9 kristaps 674: case (NODE_PROMPT):
1.15 ! kristaps 675: case (NODE_QUOTE):
1.1 kristaps 676: case (NODE_REFDESCRIPTOR):
677: case (NODE_REFENTRYTITLE):
678: case (NODE_REFMISCINFO):
679: case (NODE_REFNAME):
680: case (NODE_REFPURPOSE):
681: case (NODE_REPLACEABLE):
1.9 kristaps 682: case (NODE_SCREEN):
1.1 kristaps 683: case (NODE_SYNOPSIS):
684: case (NODE_TERM):
685: case (NODE_TITLE):
1.2 kristaps 686: case (NODE_ULINK):
1.10 kristaps 687: case (NODE_USERINPUT):
1.13 kristaps 688: case (NODE_VARNAME):
1.1 kristaps 689: default:
690: return(1);
1.6 kristaps 691: }
692: return(0);
1.12 kristaps 693: case (NODE_ROW):
694: switch (parent) {
695: case (NODE_TBODY):
696: case (NODE_TFOOT):
697: case (NODE_THEAD):
698: return(1);
699: default:
700: break;
701: }
702: return(0);
1.6 kristaps 703: case (NODE_SBR):
704: switch (parent) {
705: case (NODE_ARG):
706: case (NODE_CMDSYNOPSIS):
1.11 kristaps 707: case (NODE_GROUP):
1.9 kristaps 708: return(1);
709: default:
710: break;
711: }
712: return(0);
713: case (NODE_SCREEN):
714: switch (parent) {
1.12 kristaps 715: case (NODE_ENTRY):
1.9 kristaps 716: case (NODE_ITEMIZEDLIST):
717: case (NODE_LISTITEM):
718: case (NODE_ORDEREDLIST):
719: case (NODE_PARA):
720: case (NODE_REFSECT1):
721: case (NODE_REFSECT2):
722: case (NODE_REFSYNOPSISDIV):
723: case (NODE_VARIABLELIST):
1.6 kristaps 724: return(1);
725: default:
726: break;
1.1 kristaps 727: }
728: return(0);
729: case (NODE_STRUCTNAME):
730: switch (parent) {
731: case (NODE_CODE):
732: case (NODE_FUNCSYNOPSISINFO):
733: case (NODE_FUNCTION):
734: case (NODE_OPTION):
735: case (NODE_PARA):
736: case (NODE_PARAMETER):
737: case (NODE_PROGRAMLISTING):
738: case (NODE_REFDESCRIPTOR):
739: case (NODE_REFENTRYTITLE):
740: case (NODE_REFNAME):
741: case (NODE_REFPURPOSE):
742: case (NODE_SYNOPSIS):
743: case (NODE_TITLE):
744: return(1);
745: default:
746: break;
747: }
748: return(0);
749: case (NODE_SYNOPSIS):
750: switch (parent) {
1.12 kristaps 751: case (NODE_ENTRY):
1.4 kristaps 752: case (NODE_ITEMIZEDLIST):
1.1 kristaps 753: case (NODE_LISTITEM):
1.8 kristaps 754: case (NODE_ORDEREDLIST):
1.1 kristaps 755: case (NODE_REFSYNOPSISDIV):
756: case (NODE_REFSECT1):
1.7 kristaps 757: case (NODE_REFSECT2):
1.1 kristaps 758: return(1);
759: default:
760: break;
761: }
762: return(0);
1.12 kristaps 763: case (NODE_TABLE):
764: switch (parent) {
765: case (NODE_ENTRY):
766: case (NODE_ITEMIZEDLIST):
767: case (NODE_LISTITEM):
768: case (NODE_ORDEREDLIST):
769: case (NODE_PARA):
770: case (NODE_REFSECT1):
771: case (NODE_REFSYNOPSISDIV):
772: case (NODE_VARIABLELIST):
773: return(1);
774: default:
775: break;
776: }
777: return(0);
778: case (NODE_TBODY):
779: return(NODE_TGROUP == parent);
780: case (NODE_TFOOT):
781: return(NODE_TGROUP == parent);
782: case (NODE_TGROUP):
783: return(NODE_TABLE == parent);
784: case (NODE_THEAD):
785: return(NODE_TGROUP == parent);
1.1 kristaps 786: case (NODE_TITLE):
787: switch (parent) {
1.4 kristaps 788: case (NODE_ITEMIZEDLIST):
1.8 kristaps 789: case (NODE_ORDEREDLIST):
1.3 kristaps 790: case (NODE_REFENTRYINFO):
1.1 kristaps 791: case (NODE_REFSECT1):
1.7 kristaps 792: case (NODE_REFSECT2):
1.1 kristaps 793: case (NODE_REFSYNOPSISDIV):
1.12 kristaps 794: case (NODE_TABLE):
1.1 kristaps 795: case (NODE_VARIABLELIST):
796: return(1);
797: default:
798: break;
799: }
800: return(0);
801: case (NODE_TERM):
802: return(NODE_VARLISTENTRY == parent);
803: case (NODE_TEXT):
804: return(1);
1.10 kristaps 805: case (NODE_USERINPUT):
806: switch (parent) {
807: case (NODE_EMPHASIS):
1.12 kristaps 808: case (NODE_ENTRY):
1.10 kristaps 809: case (NODE_FUNCSYNOPSISINFO):
810: case (NODE_LINK):
811: case (NODE_PARA):
812: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 813: case (NODE_QUOTE):
1.10 kristaps 814: case (NODE_REFDESCRIPTOR):
815: case (NODE_REFENTRYTITLE):
816: case (NODE_REFNAME):
817: case (NODE_REFPURPOSE):
818: case (NODE_SCREEN):
819: case (NODE_SYNOPSIS):
820: case (NODE_TERM):
821: case (NODE_TITLE):
822: case (NODE_ULINK):
823: case (NODE_USERINPUT):
824: return(1);
825: default:
826: break;
827: }
828: return(0);
1.1 kristaps 829: case (NODE_VARIABLELIST):
830: switch (parent) {
1.12 kristaps 831: case (NODE_ENTRY):
1.4 kristaps 832: case (NODE_ITEMIZEDLIST):
1.8 kristaps 833: case (NODE_ORDEREDLIST):
1.1 kristaps 834: case (NODE_PARA):
835: case (NODE_REFSECT1):
1.7 kristaps 836: case (NODE_REFSECT2):
1.1 kristaps 837: case (NODE_REFSYNOPSISDIV):
838: case (NODE_VARIABLELIST):
1.13 kristaps 839: return(1);
840: default:
841: break;
842: }
843: return(0);
844: case (NODE_VARNAME):
845: switch (parent) {
846: case (NODE_CODE):
847: case (NODE_EMPHASIS):
848: case (NODE_ENTRY):
849: case (NODE_FUNCSYNOPSISINFO):
850: case (NODE_LINK):
851: case (NODE_PARA):
852: case (NODE_PROGRAMLISTING):
1.15 ! kristaps 853: case (NODE_QUOTE):
1.13 kristaps 854: case (NODE_REFDESCRIPTOR):
855: case (NODE_REFENTRYTITLE):
856: case (NODE_REFNAME):
857: case (NODE_REFPURPOSE):
858: case (NODE_SCREEN):
859: case (NODE_SYNOPSIS):
860: case (NODE_TERM):
861: case (NODE_TITLE):
862: case (NODE_ULINK):
1.1 kristaps 863: return(1);
864: default:
865: break;
866: }
867: return(0);
868: case (NODE_VARLISTENTRY):
869: return (NODE_VARIABLELIST == parent);
870: case (NODE__MAX):
871: break;
872: }
873:
874: abort();
875: return(0);
876: }
877:
CVSweb