#include <string.h>
#include "udanax.h"
Include dependency graph for edit.cxx:

Go to the source code of this file.
Functions | |
| int | deletecutsectionnd (typecorecrum *ptr, typewid *offset, typeknives *knives) |
| ??? | |
| void | deletend (typecuc *fullcrumptr, Tumbler *origin, Tumbler *width, int index) |
| ??? | |
| void | makeoffsetsfor3or4cuts (typeknives *knives, Tumbler diff[]) |
| ??? | |
| int | rearrangecutsectionnd (typecorecrum *ptr, typewid *offset, typeknives *knives) |
| ??? | |
| void | sortknives (typeknives *knifeptr) |
| ??? | |
| void | rearrangend (typecuc *fullcrumptr, typecutseq *cutseqptr, int index) |
| ??? | |
| int | insertcutsectionnd (typecorecrum *ptr, typewid *offset, typeknives *knives) |
| ??? | |
(to be defined)
Definition in file edit.cxx.
|
||||||||||||||||
|
??? (to be defined) Definition at line 92 of file edit.cxx. References typeknives::blades, typeknives::dimension, typeknives::nblades, ONMYLEFTBORDER, THRUME, typecorecrum, and whereoncrum(). Referenced by deletend().
00096 {
00097 int i, cmp;
00098
00099 for (i = knives->nblades - 1; i >= 0; --i) { /* unique to delete */
00100 cmp = whereoncrum(ptr, offset, &knives->blades[i], knives->dimension);
00101 if (cmp == THRUME) {
00102 return (-1);
00103 } else if (cmp <= ONMYLEFTBORDER) { /* compare last to first */
00104 return (i + 1);
00105 }
00106 }
00107 return (0);
00108 }
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 119 of file edit.cxx. References assert, typeknives::blades, typecorecrumhedr::cdsp, clear, deletecutsectionnd(), typeknives::dimension, disown(), typewid::dsas, findleftson(), findrightbro, makecutsnd(), movetumbler, typeknives::nblades, newfindintersectionnd(), NULL, prologuend(), recombine(), setwispupwards(), subtreefree(), tumbleradd, tumblersub(), typecorecrum, and typedsp. Referenced by deletevspanpm().
00124 {
00125 typeknives knives;
00126 typewid offset, grasp, reach;
00127 typecuc *father, *ptr, *next;
00128 typewid foffset, fgrasp;
00129
00130 clear(&offset, sizeof(offset)); /* fullcrum alway has zero offset */
00131 prologuend((typecorecrum *) fullcrumptr, &offset, &grasp, &reach);
00132 movetumbler(origin, &knives.blades[0]);
00133 tumbleradd(origin, width, &knives.blades[1]);
00134 knives.nblades = 2;
00135 knives.dimension = index;
00136 makecutsnd(fullcrumptr, &knives);
00137 newfindintersectionnd(fullcrumptr, &knives, &father, &foffset);
00138 prologuend((typecorecrum *) father, &foffset, &fgrasp, (typedsp *) NULL);
00139 for (ptr = (typecuc *) findleftson(father); ptr; ptr = next) {
00140 next = (typecuc *) findrightbro((typecorecrum *) ptr);
00141 switch (deletecutsectionnd((typecorecrum *) ptr, &fgrasp, &knives)) {
00142 case -1:
00143 assert(0); // deletend can't classify crum
00144 case 0:
00145 break;
00146 case 1:
00147 disown((typecorecrum *) ptr);
00148 subtreefree((typecorecrum *) ptr);
00149 break;
00150 case 2:
00151 tumblersub(&ptr->cdsp.dsas[index], width, &ptr->cdsp.dsas[index]);
00152 /* This will get set to modified in setwisp */
00153 break;
00154 default:
00155 assert(0); // unexpected cutsection
00156 }
00157 }
00158 setwispupwards(father, 1);
00159 recombine(father);
00160 }
|
|
||||||||||||||||
|
??? (to be defined) Definition at line 347 of file edit.cxx. References typeknives::blades, typecorecrumhedr::cenftype, typecorecrumhedr::cwid, typeknives::dimension, typewid::dsas, dumpwid(), typeknives::nblades, ONMYLEFTBORDER, THRUME, typecorecrum, and whereoncrum(). Referenced by makegappm().
00351 {
00352 int i, cmp; /* hacked from delete */
00353
00354 /* for (i = knives->nblades-1; i >= 0; --i){ */
00355 if (knives->nblades == 2) {
00356 i = 1;
00357 cmp = whereoncrum(ptr, offset, &knives->blades[i], knives->dimension);
00358 if ( /* false&& */ cmp == THRUME) {
00359 dumpwid((typewid *) &ptr->cwid.dsas[i], ptr->cenftype);
00360 return -1;
00361 } else if (cmp <= ONMYLEFTBORDER) { /* compare last to first */
00362 return 2;
00363 }
00364 }
00365
00366 i = 0;
00367
00368 cmp = whereoncrum(ptr, offset, &knives->blades[i], knives->dimension);
00369 if (cmp == THRUME) {
00370 dumpwid((typewid *) &ptr->cwid.dsas[i], ptr->cenftype);
00371 return -1;
00372 } else if (cmp <= ONMYLEFTBORDER) { /* compare last to first */
00373 return 1;
00374 }
00375
00376 /* } */
00377 return 0;
00378 }
|
|
||||||||||||
|
??? (to be defined) Definition at line 172 of file edit.cxx. References assert, typeknives::blades, movetumbler, typeknives::nblades, Tumbler::sign, tumblerclear, and tumblersub(). Referenced by rearrangend().
00175 {
00176 Tumbler a, b;
00177
00178 /* diff[0] is simply ignored */
00179 if (knives->nblades == 4) {
00180 tumblersub(&knives->blades[2], &knives->blades[0], &(diff[1]));
00181 tumblersub(&knives->blades[1], &knives->blades[0], &a);
00182 tumblersub(&knives->blades[3], &knives->blades[2], &b);
00183 tumblersub(&b, &a, &(diff[2]));
00184 /* tumblersub (&knives->blades[0], &knives->blades[2], &(diff[3])); *//* should be <0 */
00185 movetumbler(&diff[1], &diff[3]);
00186 diff[3].sign = !diff[1].sign;
00187 } else if (knives->nblades == 3) {
00188 tumblersub(&knives->blades[2], &knives->blades[1], &diff[1]);
00189 tumblersub(&knives->blades[1], &knives->blades[0], &diff[2]); /* should be negative */
00190 diff[2].sign = !diff[2].sign;
00191 tumblerclear(&(diff[3]));
00192 } else
00193 assert(0); // Wrong number of cuts
00194 }
|
|
||||||||||||||||
|
??? (to be defined) Definition at line 206 of file edit.cxx. References typeknives::blades, typeknives::dimension, typeknives::nblades, ONMYLEFTBORDER, THRUME, typecorecrum, and whereoncrum(). Referenced by rearrangend().
00210 {
00211 int i, cmp;
00212
00213 for (i = knives->nblades - 1; i >= 0; --i) {
00214 cmp = whereoncrum(ptr, offset, &knives->blades[i], knives->dimension);
00215 if (cmp == THRUME) {
00216 return -1;
00217 } else if (cmp <= ONMYLEFTBORDER) {
00218 return i + 1;
00219 }
00220 }
00221 return 0;
00222 }
|
|
||||||||||||||||
|
??? (to be defined) Definition at line 256 of file edit.cxx. References assert, typeknives::blades, typecorecrumhedr::cdsp, typecuc::cenftype, typecutseq::cutsarray, typeknives::dimension, typewid::dsas, dumppoomwisps(), findleftson(), findrightbro, fixincoresubtreewids(), ivemodified(), L, makecutsnd(), makeoffsetsfor3or4cuts(), movetumbler, typeknives::nblades, newfindintersectionnd(), NULL, typecutseq::numberofcuts, POOM, prologuend(), rearrangecutsectionnd(), recombine(), setwispupwards(), showspanf(), sortknives(), SPAN, splitcrumupwards(), tumbleradd, typecorecrum, and typedsp. Referenced by rearrangepm().
00260 {
00261 typecuc *father, *ptr;
00262 typewid foffset, fgrasp;
00263 typeknives knives;
00264 Tumbler diff[4];
00265 int i;
00266
00267 #ifdef UNdeFined
00268 L("entering rearrangend\n");
00269 fixincoresubtreewids(fullcrumptr); /* 1999 // a temp kluge zzz till we find where setwisp * isnt called//
00270 *//* this is a brute force kluge, if this fixes anything it means that the wids aren't being set properly somplace else probably near here */
00271 L("in rearrangend \n");
00272 switch (fullcrumptr->cenftype) {
00273 case POOM:
00274 L("in rearrangend dumppoomwisps\n");
00275 dumppoomwisps(fullcrumptr);
00276 break;
00277 case SPAN:
00278 L("in rearrangend showspanf\n");
00279 showspanf(fullcrumptr);
00280 break;
00281 }
00282 #endif
00283 /* displaycutspm(cutseqptr); */
00284 knives.dimension = index;
00285 knives.nblades = cutseqptr->numberofcuts;
00286 for (i = 0; i < knives.nblades; i++) {
00287 movetumbler(&cutseqptr->cutsarray[i], &knives.blades[i]);
00288 }
00289 sortknives(&knives);
00290 makeoffsetsfor3or4cuts(&knives, diff);
00291 /* for(i=1;i<=knives.nblades;i++){L("\noffset for cut %d = ",i);dumptumbler(&diff[i]);} */
00292 makecutsnd(fullcrumptr, &knives);
00293 newfindintersectionnd(fullcrumptr, &knives, &father, &foffset);
00294 prologuend((typecorecrum *) father, &foffset, &fgrasp, (typedsp *) NULL);
00295 for (ptr = (typecuc *) findleftson(father); ptr; ptr = (typecuc *) findrightbro((typecorecrum *) ptr)) {
00296 i = rearrangecutsectionnd((typecorecrum *) ptr, &fgrasp, &knives);
00297 switch (i) {
00298 case -1:
00299 assert(0); // rearrangend can't classify crum
00300 case 0:
00301 case 4: /* these never move */
00302 break;
00303 case 1:
00304 case 2:
00305 case 3: /* 3 only moves in 4 cuts */
00306 tumbleradd(&ptr->cdsp.dsas[index], &diff[i], &ptr->cdsp.dsas[index]);
00307 /* L("\nptr = %x i = %d ",ptr,i); dump(ptr); */
00308 ivemodified((typecorecrum *) ptr);
00309 break;
00310 default:
00311 assert(0); // unexpected cutsection
00312 }
00313 }
00314 setwispupwards(father, 1); /* should do nothing, */
00315 /* but, just on general principles.. */
00316 recombine(fullcrumptr);
00317
00318 (void)splitcrumupwards(fullcrumptr); /* can we move this before recombine ? */
00319 #ifdef UnDEfINed
00320 L("leaving rearrangend\n");
00321
00322 fixincoresubtreewids(fullcrumptr); /* 1999 // a temp kluge zzz till we find where setwisp * isnt called//
00323 *//* this is a brute force kluge, if this fixes anything it means that the wids aren't being set properly somplace else probably near here */
00324 L("in rearrangend \n");
00325 switch (fullcrumptr->cenftype) {
00326 case POOM:
00327 L("in rearrangend dumppoomwisps\n");
00328 dumppoomwisps(fullcrumptr);
00329 break;
00330 case SPAN:
00331 L("in rearrangend showspanf\n");
00332 showspanf(fullcrumptr);
00333 break;
00334 }
00335 #endif
00336
00337 }
|
|
|
??? (to be defined) Definition at line 232 of file edit.cxx. References typeknives::blades, GREATER, movetumbler, typeknives::nblades, and tumblercmp(). Referenced by rearrangend().
00234 {
00235 Tumbler temp;
00236 int i;
00237
00238 for (i = 0; i < knifeptr->nblades - 1; ++i) {
00239 if (tumblercmp(&knifeptr->blades[i], &knifeptr->blades[i + 1]) == GREATER) {
00240 movetumbler(&knifeptr->blades[i + 1], &temp);
00241 movetumbler(&knifeptr->blades[i], &knifeptr->blades[i + 1]);
00242 movetumbler(&temp, &knifeptr->blades[i]);
00243 --i;
00244 }
00245 }
00246 }
|
1.3.4