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