Lines Matching full:parent

515  * Allocate a box as the last child of the parent node.
518 eqn_box_alloc(struct eqn_node *ep, struct eqn_box *parent) in eqn_box_alloc() argument
523 bp->parent = parent; in eqn_box_alloc()
524 bp->parent->args++; in eqn_box_alloc()
525 bp->font = bp->parent->font; in eqn_box_alloc()
528 if (NULL != parent->first) { in eqn_box_alloc()
529 parent->last->next = bp; in eqn_box_alloc()
530 bp->prev = parent->last; in eqn_box_alloc()
532 parent->first = bp; in eqn_box_alloc()
534 parent->last = bp; in eqn_box_alloc()
539 * Reparent the current last node (of the current parent) under a new
541 * Then return the new parent.
545 eqn_box_makebinary(struct eqn_node *ep, struct eqn_box *parent) in eqn_box_makebinary() argument
549 assert(NULL != parent->last); in eqn_box_makebinary()
550 b = parent->last; in eqn_box_makebinary()
551 if (parent->last == parent->first) in eqn_box_makebinary()
552 parent->first = NULL; in eqn_box_makebinary()
553 parent->args--; in eqn_box_makebinary()
554 parent->last = b->prev; in eqn_box_makebinary()
556 newb = eqn_box_alloc(ep, parent); in eqn_box_makebinary()
562 b->parent = newb; in eqn_box_makebinary()
664 struct eqn_box *cur, *nbox, *parent, *split; in eqn_parse() local
671 parent = ep->node->eqn; in eqn_parse()
672 assert(parent != NULL); in eqn_parse()
722 if (parent->last == NULL) { in eqn_parse()
725 cur = eqn_box_alloc(ep, parent); in eqn_parse()
729 parent = eqn_box_makebinary(ep, parent); in eqn_parse()
730 parent->type = EQN_LIST; in eqn_parse()
731 parent->expectargs = 1; in eqn_parse()
732 parent->font = EQNFONT_ROMAN; in eqn_parse()
735 parent->top = mandoc_strdup("\\[ad]"); in eqn_parse()
738 parent->top = mandoc_strdup("\\[->]"); in eqn_parse()
741 parent->top = mandoc_strdup("\\[<>]"); in eqn_parse()
744 parent->top = mandoc_strdup("\\[a~]"); in eqn_parse()
747 parent->bottom = mandoc_strdup("\\[ul]"); in eqn_parse()
750 parent->top = mandoc_strdup("\\[rn]"); in eqn_parse()
753 parent->top = mandoc_strdup("\\[a.]"); in eqn_parse()
756 parent->top = mandoc_strdup("\\[ha]"); in eqn_parse()
761 parent = parent->parent; in eqn_parse()
775 while (parent->args == parent->expectargs) in eqn_parse()
776 parent = parent->parent; in eqn_parse()
782 parent = eqn_box_alloc(ep, parent); in eqn_parse()
783 parent->type = EQN_LIST; in eqn_parse()
784 parent->expectargs = 1; in eqn_parse()
787 parent->font = EQNFONT_FAT; in eqn_parse()
790 parent->font = EQNFONT_ROMAN; in eqn_parse()
793 parent->font = EQNFONT_ITALIC; in eqn_parse()
796 parent->font = EQNFONT_BOLD; in eqn_parse()
820 while (parent->args == parent->expectargs) in eqn_parse()
821 parent = parent->parent; in eqn_parse()
822 parent = eqn_box_alloc(ep, parent); in eqn_parse()
823 parent->type = EQN_LIST; in eqn_parse()
824 parent->expectargs = 1; in eqn_parse()
825 parent->size = size; in eqn_parse()
836 if (parent->last == NULL) { in eqn_parse()
839 cur = eqn_box_alloc(ep, parent); in eqn_parse()
843 while (parent->expectargs == 1 && parent->args == 1) in eqn_parse()
844 parent = parent->parent; in eqn_parse()
846 for (cur = parent; cur != NULL; cur = cur->parent) in eqn_parse()
854 parent = cur->parent; in eqn_parse()
856 if (tok == EQN_TOK_SUP && parent->pos == EQNPOS_SUB) { in eqn_parse()
857 parent->expectargs = 3; in eqn_parse()
858 parent->pos = EQNPOS_SUBSUP; in eqn_parse()
861 if (tok == EQN_TOK_TO && parent->pos == EQNPOS_FROM) { in eqn_parse()
862 parent->expectargs = 3; in eqn_parse()
863 parent->pos = EQNPOS_FROMTO; in eqn_parse()
866 parent = eqn_box_makebinary(ep, parent); in eqn_parse()
869 parent->pos = EQNPOS_FROM; in eqn_parse()
872 parent->pos = EQNPOS_TO; in eqn_parse()
875 parent->pos = EQNPOS_SUP; in eqn_parse()
878 parent->pos = EQNPOS_SUB; in eqn_parse()
885 while (parent->args == parent->expectargs) in eqn_parse()
886 parent = parent->parent; in eqn_parse()
892 parent = eqn_box_alloc(ep, parent); in eqn_parse()
893 parent->type = EQN_SUBEXPR; in eqn_parse()
894 parent->pos = EQNPOS_SQRT; in eqn_parse()
895 parent->expectargs = 1; in eqn_parse()
903 if (parent->last == NULL) { in eqn_parse()
906 cur = eqn_box_alloc(ep, parent); in eqn_parse()
910 while (parent->args == parent->expectargs) in eqn_parse()
911 parent = parent->parent; in eqn_parse()
912 while (EQN_SUBEXPR == parent->type) in eqn_parse()
913 parent = parent->parent; in eqn_parse()
914 parent = eqn_box_makebinary(ep, parent); in eqn_parse()
915 parent->pos = EQNPOS_OVER; in eqn_parse()
924 for (cur = parent; cur != NULL; cur = cur->parent) in eqn_parse()
935 parent = cur; in eqn_parse()
945 parent->right = mandoc_strdup("\\[rc]"); in eqn_parse()
947 parent->right = mandoc_strdup("\\[rf]"); in eqn_parse()
949 parent->right = in eqn_parse()
952 parent = parent->parent; in eqn_parse()
954 (parent->type == EQN_PILE || in eqn_parse()
955 parent->type == EQN_MATRIX)) in eqn_parse()
956 parent = parent->parent; in eqn_parse()
958 while (parent->type == EQN_LIST && in eqn_parse()
959 parent->expectargs == 1 && in eqn_parse()
960 parent->args == 1) in eqn_parse()
961 parent = parent->parent; in eqn_parse()
970 while (parent->args == parent->expectargs) in eqn_parse()
971 parent = parent->parent; in eqn_parse()
978 parent = eqn_box_alloc(ep, parent); in eqn_parse()
979 parent->type = EQN_LIST; in eqn_parse()
982 parent->left = mandoc_strdup("\\[lc]"); in eqn_parse()
984 parent->left = mandoc_strdup("\\[lf]"); in eqn_parse()
986 parent->left = in eqn_parse()
997 while (parent->args == parent->expectargs) in eqn_parse()
998 parent = parent->parent; in eqn_parse()
999 parent = eqn_box_alloc(ep, parent); in eqn_parse()
1000 parent->type = EQN_PILE; in eqn_parse()
1001 parent->expectargs = 1; in eqn_parse()
1004 for (cur = parent; cur != NULL; cur = cur->parent) in eqn_parse()
1012 parent = eqn_box_alloc(ep, cur); in eqn_parse()
1013 parent->type = EQN_LIST; in eqn_parse()
1016 while (parent->args == parent->expectargs) in eqn_parse()
1017 parent = parent->parent; in eqn_parse()
1018 parent = eqn_box_alloc(ep, parent); in eqn_parse()
1019 parent->type = EQN_MATRIX; in eqn_parse()
1020 parent->expectargs = 1; in eqn_parse()
1034 while (parent->args == parent->expectargs) in eqn_parse()
1035 parent = parent->parent; in eqn_parse()
1036 cur = eqn_box_alloc(ep, parent); in eqn_parse()
1077 if (parent->args == parent->expectargs) { in eqn_parse()
1080 parent->first = cur->next; in eqn_parse()
1083 parent->last = cur->prev; in eqn_parse()
1084 parent->args--; in eqn_parse()
1086 split = eqn_box_alloc(ep, parent); in eqn_parse()
1090 cur->parent = split; in eqn_parse()
1092 parent = split; in eqn_parse()
1095 nbox = eqn_box_alloc(ep, parent); in eqn_parse()
1110 parent = split->parent; in eqn_parse()