/ Add a column in the column list. */ /
| 34 | /* Add a column in the column list. */ |
| 35 | /***********************************************************************/ |
| 36 | void INCOL::AddCol(PGLOBAL g, PCOL colp, char *jp) |
| 37 | { |
| 38 | char *p; |
| 39 | PKC kp, kcp; |
| 40 | |
| 41 | if ((p = strchr(jp, '.'))) { |
| 42 | PINCOL icp; |
| 43 | |
| 44 | *p++ = 0; |
| 45 | |
| 46 | for (kp = Klist; kp; kp = kp->Next) |
| 47 | if (kp->Incolp && !strcmp(jp, kp->Key)) |
| 48 | break; |
| 49 | |
| 50 | if (!kp) { |
| 51 | icp = new(g) INCOL(); |
| 52 | kcp = (PKC)PlugSubAlloc(g, NULL, sizeof(KEYCOL)); |
| 53 | kcp->Next = NULL; |
| 54 | kcp->Incolp = icp; |
| 55 | kcp->Colp = NULL; |
| 56 | kcp->Key = PlugDup(g, jp); |
| 57 | kcp->Array = IsArray(p); |
| 58 | |
| 59 | if (Klist) { |
| 60 | for (kp = Klist; kp->Next; kp = kp->Next); |
| 61 | |
| 62 | kp->Next = kcp; |
| 63 | } else |
| 64 | Klist = kcp; |
| 65 | |
| 66 | } else |
| 67 | icp = kp->Incolp; |
| 68 | |
| 69 | *(p - 1) = '.'; |
| 70 | icp->AddCol(g, colp, p); |
| 71 | } else { |
| 72 | kcp = (PKC)PlugSubAlloc(g, NULL, sizeof(KEYCOL)); |
| 73 | |
| 74 | kcp->Next = NULL; |
| 75 | kcp->Incolp = NULL; |
| 76 | kcp->Colp = colp; |
| 77 | kcp->Key = jp; |
| 78 | kcp->Array = IsArray(jp); |
| 79 | |
| 80 | if (Klist) { |
| 81 | for (kp = Klist; kp->Next; kp = kp->Next); |
| 82 | |
| 83 | kp->Next = kcp; |
| 84 | } else |
| 85 | Klist = kcp; |
| 86 | |
| 87 | } // endif jp |
| 88 | |
| 89 | } // end of AddCol |
| 90 | |
| 91 | /***********************************************************************/ |
| 92 | /* Clear. */ |
no test coverage detected