#include <memory.h>
#include "udanax.h"
Include dependency graph for wisp.cxx:

Go to the source code of this file.
Defines | |
| #define | widopseq(a, b, c) lockadd((a)->dsas,(b)->dsas,(c)->dsas,widsize(GRAN)) |
Functions | |
| void | dspadd (typedsp *a, typewisp *b, typedsp *c, int enftype) |
| ??? | |
| void | dspsub (typedsp *a, typewisp *b, typedsp *c, int enftype) |
| ??? | |
| bool | setwispupwards (typecuc *ptr, int testflag) |
| ??? | |
| bool | setwidseq (typecuc *father) |
| ??? | |
| void | lockmin (Tumbler *lock1, Tumbler *lock2, Tumbler *lock3, unsigned loxize) |
| ??? | |
| void | lockmax (Tumbler *lock1, Tumbler *lock2, Tumbler *lock3, unsigned loxize) |
| ??? | |
| void | didntchangewisps () |
| ??? | |
| bool | setwispnd (typecuc *father) |
| ??? | |
| bool | setwisp (typecorecrum *ptr) |
| ??? | |
| void | setwidnd (typecuc *father) |
| ??? | |
| bool | iszerolock (Tumbler *lock, unsigned loxize) |
| ??? | |
| bool | lockeq (Tumbler *lock1, Tumbler *lock2, unsigned loxize) |
| ??? | |
| void | lockadd (Tumbler *lock1, Tumbler *lock2, Tumbler *lock3, unsigned loxize) |
| ??? | |
| void | locksubtract (Tumbler *lock1, Tumbler *lock2, Tumbler *lock3, unsigned loxize) |
| ??? | |
| bool | lockis1story (Tumbler *lock, unsigned loxize) |
| ??? | |
(to be defined)
Definition in file wisp.cxx.
|
|
Definition at line 181 of file wisp.cxx. Referenced by setwidseq(). |
|
|
??? (to be defined) Definition at line 267 of file wisp.cxx. Referenced by setwispnd().
00268 {
00269 }
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 89 of file wisp.cxx. References typewid::dsas, dspsize, lockadd(), typedsp, and typewisp. Referenced by doshowspanf(), findcbcinarea2d(), findcbcinspanseq(), findcbcseq(), findcbcseqcrum(), fixdspsofbroschildren(), graphcrum(), insertcbcnd(), insertseq(), makecontextfromcbc(), newpeelcrumoffnd(), prologuecontextnd(), prologuend(), setwispnd(), showspanfcrum(), slicecbcpm(), and takenephewnd().
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 109 of file wisp.cxx. References typewid::dsas, dspsize, locksubtract(), typedsp, and typewisp. Referenced by fixdspsofbroschildren(), insertcbcnd(), newpeelcrumoffnd(), setwispnd(), and takenephewnd().
00114 {
00115 locksubtract(a->dsas, b->dsas, c->dsas, (unsigned)dspsize(enftype));
00116 }
|
|
||||||||||||
|
??? (to be defined) Definition at line 413 of file wisp.cxx. References iszerotumbler. Referenced by findvsatoappend(), insertcbcnd(), isemptyenfilade(), isemptyorgl(), and setwispnd().
00416 {
00417 while (loxize--)
00418 if (!iszerotumbler(lock++))
00419 return false;
00420
00421 return true;
00422 }
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 452 of file wisp.cxx. References tumbleradd. Referenced by dspadd(), and setwispnd().
00458 {
00459 while (loxize--)
00460 tumbleradd(lock1++, lock2++, lock3++);
00461 }
|
|
||||||||||||||||
|
??? (to be defined) Definition at line 432 of file wisp.cxx. References tumblereq(). Referenced by isanextensionnd(), setwidnd(), setwidseq(), and setwispnd().
00436 {
00437 while (loxize--)
00438 if (!tumblereq(lock1++, lock2++))
00439 return false;
00440
00441 return true;
00442 }
|
|
||||||||||||
|
??? (to be defined) Definition at line 490 of file wisp.cxx. References is1story(). Referenced by slicecbcpm().
00493 {
00494 while (loxize--)
00495 if (!is1story(lock++))
00496 return false;
00497
00498 return true;
00499 }
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 245 of file wisp.cxx. References macrotumblermax. Referenced by setwidnd(), and setwispnd().
00250 {
00251 while (loxize--) {
00252 macrotumblermax(lock1, lock2, lock3);
00253 lock1++;
00254 lock2++;
00255 lock3++;
00256 }
00257 }
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 223 of file wisp.cxx. References macrotumblermin. Referenced by setwispnd().
00228 {
00229 while (loxize--) {
00230 macrotumblermin(lock1, lock2, lock3);
00231 lock1++;
00232 lock2++;
00233 lock3++;
00234 }
00235 }
|
|
||||||||||||||||||||
|
??? (to be defined) Definition at line 471 of file wisp.cxx. References tumblersub(). Referenced by dspsub(), and slicecbcpm().
00476 {
00477 while (loxize--)
00478 tumblersub(lock1++, lock2++, lock3++);
00479 }
|
|
|
??? (to be defined) Definition at line 385 of file wisp.cxx. References typecorecrumhedr::cenftype, typecuc::cenftype, clear, typecorecrumhedr::cwid, typecuc::cwid, findleftson(), getrightbro, ivemodified(), lockeq(), lockmax(), movewisp, typecorecrum, and widsize. Referenced by makegappm().
00387 {
00388 typecorecrum *ptr;
00389 typewid newwid;
00390
00391 for (ptr = findleftson(father); ptr; ptr = getrightbro(ptr)) {
00392 clear(&newwid, sizeof(newwid));
00393 lockmax((Tumbler *) &newwid, (Tumbler *) &ptr->cwid, (Tumbler *) &newwid, (unsigned) widsize(ptr->cenftype));
00394 }
00395
00396 if (!lockeq((Tumbler *) &father->cwid, (Tumbler *) &newwid, (unsigned) widsize(father->cenftype))) {
00397 movewisp(&newwid, &father->cwid);
00398 ivemodified((typecorecrum *) father); /* zzz */
00399 }
00400 }
|
|
|
??? (to be defined) Definition at line 192 of file wisp.cxx. References typecuc::cenftype, clear, typecuc::cwid, typecorecrumhedr::cwid, typewid::dsas, findleftson(), getrightbro, typecuc::height, ivemodified(), lockeq(), movewisp, typecorecrum, widopseq, and widsize. Referenced by setwisp().
00194 {
00195 typecorecrum *ptr;
00196
00197 if (father->height == 0)
00198 return false;
00199
00200 typewid sum;
00201 clear(&sum, sizeof(sum));
00202
00203 for (ptr = findleftson(father); ptr; ptr = getrightbro(ptr))
00204 widopseq(&sum, &ptr->cwid, &sum);
00205
00206 if (lockeq(sum.dsas, father->cwid.dsas, (unsigned) widsize(father->cenftype)))
00207 return false;
00208
00209 movewisp(&sum, &father->cwid);
00210 ivemodified((typecorecrum *) father); /* zzzz */
00211
00212 return true;
00213 }
|
|
|
??? (to be defined) Definition at line 357 of file wisp.cxx. References assert, typecorecrumhedr::cenftype, GRAN, typecorecrumhedr::height, POOM, setwidseq(), setwispnd(), SPAN, and typecorecrum. Referenced by assertsonswispmatchesfather(), eatbrossubtreend(), firstinsertionnd(), fixincoresubtreewids(), makecutsbackuptohere(), and setwispupwards().
00359 {
00360 if (ptr->height == 0)
00361 return false;
00362
00363 switch (ptr->cenftype) {
00364 case GRAN:
00365 return setwidseq((typecuc *) ptr);
00366 case SPAN:
00367 case POOM:
00368 return setwispnd((typecuc *) ptr);
00369 default:
00370 assert(0); // setwisp: bad enftype
00371 }
00372
00373 return -1; /* Oh, the things one has to do to make computers happy */
00374 }
|
|
|
??? (to be defined) Definition at line 280 of file wisp.cxx. References assert, typecorecrumhedr::cdsp, typecuc::cdsp, typecuc::cenftype, typecorecrumhedr::cenftype, clear, typecorecrumhedr::cwid, typecuc::cwid, didntchangewisps(), dspadd(), dspsize, dspsub(), findleftson(), getrightbro, typecuc::height, iszerolock(), ivemodified(), lockadd(), lockeq(), lockmax(), lockmin(), movewisp, NULL, typecorecrum, typedsp, and widsize. Referenced by setwisp().
00282 {
00283 typecorecrum *ptr;
00284 typedsp newdsp, mindsp;
00285 typewid newwid, tempwid;
00286 bool lockiszerop;
00287 bool somethingchangedp = false; /* mindsp != 0 or some tempwid !=0 */
00288
00289 if (father->height == 0)
00290 return false;
00291
00292 /* remember original so can tell if changed */
00293 if ((ptr = findleftson(father)) == NULL) {
00294 #ifndef DISTRIBUTION
00295 assert(0); // in setwispnd null findleftson
00296 clear(&father->cdsp, sizeof(father->cdsp));
00297 clear(&father->cwid, sizeof(father->cwid));
00298 ivemodified((typecorecrum *) father);
00299 return true;
00300 #else
00301 assert(0);
00302 #endif
00303 }
00304
00305 /* find new upper-left corner */
00306 movewisp(&ptr->cdsp, &mindsp);
00307 for (ptr = getrightbro(ptr); ptr; ptr = getrightbro(ptr))
00308 lockmin((Tumbler *) & mindsp, (Tumbler *) & ptr->cdsp, (Tumbler *) & mindsp, (unsigned)dspsize(ptr->cenftype));
00309
00310 lockiszerop = iszerolock((Tumbler *) & mindsp, (unsigned)dspsize(father->cenftype));
00311 if (!lockiszerop) {
00312 somethingchangedp = true;
00313 dspadd(&father->cdsp, &mindsp, &newdsp, (int) father->cenftype);
00314 } else
00315 movewisp(&father->cdsp, &newdsp);
00316
00317 /* find new lower-right corner at the same time that */
00318 /* we are readjusting the son's dsps to compensate */
00319 /* for change in the father */
00320 clear(&newwid, sizeof(newwid));
00321 for (ptr = findleftson(father); ptr; ptr = getrightbro(ptr)) {
00322 if (!lockiszerop) {
00323 ptr->modified = true; /* father gets ivemodified soon */
00324 dspsub(&ptr->cdsp, &mindsp, &ptr->cdsp, (int) ptr->cenftype);
00325 }
00326
00327 lockadd((Tumbler *) & ptr->cdsp, (Tumbler *) & ptr->cwid, (Tumbler *) & tempwid,
00328 (unsigned)widsize(ptr->cenftype));
00329 lockmax((Tumbler *) & newwid, (Tumbler *) & tempwid, (Tumbler *) & newwid, (unsigned) widsize(ptr->cenftype));
00330 }
00331
00332 if (!somethingchangedp && !lockeq((Tumbler *) & newwid, (Tumbler *) & father->cwid, (unsigned) widsize(father->cenftype)))
00333 somethingchangedp = true;
00334
00335 /* report whether anything changed */
00336 if (!somethingchangedp) {
00337 didntchangewisps();
00338 return false;
00339 }
00340
00341 movewisp(&newdsp, &father->cdsp);
00342 movewisp(&newwid, &father->cwid);
00343 ivemodified((typecorecrum *) father);
00344
00345 return true;
00346 }
|
|
||||||||||||
|
??? (to be defined) Definition at line 136 of file wisp.cxx. References asserttreeisok(), findfather(), ivemodified(), setwisp(), and typecorecrum. Referenced by cutsons(), deletend(), eatbrossubtreend(), eatbrossubtreeseq(), insertcbcnd(), insertmorend(), insertnd(), insertseq(), levelpush(), makecutsbackuptohere(), makegappm(), makeithcutonson(), newpeelcrumoffnd(), peelcrumoffnd(), rearrangend(), splitcrum(), splitcrumseq(), takenephewnd(), takeovernephewsnd(), and takeovernephewsseq().
00139 {
00140 typecuc *father;
00141
00142 int ntimeschanged = 0;
00143 /* checkwholesubtree(ptr); */
00144 /* asserttreeisok(ptr); */
00145 if (!ptr)
00146 return 0;
00147
00148 typecuc *oldptr = ptr;
00149
00150 bool changed;
00151 for (changed = true; changed && ptr; ptr = father) {
00152 father = findfather((typecorecrum *) ptr);
00153 changed = setwisp((typecorecrum *) ptr);
00154 if (changed)
00155 ntimeschanged += 1;
00156 }
00157
00158 if (ntimeschanged)
00159 ivemodified((typecorecrum *) oldptr);
00160
00161 #ifndef DISTRIBUTION
00162 if (testflag)
00163 asserttreeisok((typecorecrum *) oldptr);
00164 #endif
00165
00166 return 0 != ntimeschanged;
00167 }
|
1.3.4