[BACK]Return to rules.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / docbook2mdoc

Annotation of docbook2mdoc/rules.c, Revision 1.16

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

CVSweb