libsrc/do2.cxx File Reference

miscellaneous bottom-of-the-top routines More...

#include "udanax.h"

Include dependency graph for do2.cxx:

Include dependency graph

Go to the source code of this file.

Functions

bool specset2ispanset (Session *sess, typespecset specset, typeispanset *ispansetptr, int type)
 ???

bool tumbler2spanset (Session *sess, IStreamAddr *tumblerptr, typespanset *spansetptr)
 ???

void makehint (int typeabove, int typebelow, int typeofatom, IStreamAddr *isaptr, typehint *hintptr)
 ???

void validhint (typehint *hintptr)
 ???

bool acceptablevsa (Tumbler *vsaptr, typeorgl orglptr)
 ???

bool insertendsetsinspanf (Session *sess, typespanf spanfptr, IStreamAddr *linkisaptr, typesporglset fromsporglset, typesporglset tosporglset, typesporglset threesporglset)
 ???

bool insertendsetsinorgl (Session *sess, Tumbler *linkisaptr, typeorgl link, Tumbler *fromvsa, typesporglset fromsporglset, Tumbler *tovsa, typesporglset tosporglset, Tumbler *threevsa, typesporglset threesporglset)
 ???

bool findnextlinkvsa (Session *sess, IStreamAddr *docisaptr, Tumbler *vsaptr)
 ???

bool setlinkvsas (Tumbler *fromvsaptr, Tumbler *tovsaptr, Tumbler *threevsaptr)
 ???

bool ispansetandspecsets2spanpairset (Session *sess, typeispanset ispanset, typespecset specset1, typespecset specset2, typespanpairset *pairsetptr)
 ???


Detailed Description

miscellaneous bottom-of-the-top routines

(to be defined)

Definition in file do2.cxx.


Function Documentation

bool acceptablevsa Tumbler vsaptr,
typeorgl  orglptr
 

???

???

Definition at line 220 of file do2.cxx.

References L.

Referenced by docopy(), and docopyinternal().

00223 {
00224     L("--acceptablevsa is a NOP--\n");
00225     return true;
00226 }

bool findnextlinkvsa Session sess,
IStreamAddr docisaptr,
Tumbler vsaptr
 

???

???

Parameters:
sess  Input: User's session context

Definition at line 300 of file do2.cxx.

References doretrievedocvspan(), LESS, movetumbler, typespan::stream, tumbleradd, tumblerclear, tumblercmp(), tumblerincrement(), typevspan, and typespan::width.

Referenced by docreatelink(), and domakelink().

00301                                          : User's session context
00302     IStreamAddr *docisaptr,
00303     Tumbler     *vsaptr)
00304 {
00305     Tumbler vspanreach, firstlink;
00306     typevspan vspan;
00307 
00308     tumblerclear(&firstlink);
00309     tumblerincrement(&firstlink, 0, 2, &firstlink);
00310     tumblerincrement(&firstlink, 1, 1, &firstlink);
00311 
00312     doretrievedocvspan(sess, docisaptr, &vspan);
00313 
00314     tumbleradd(&vspan.stream, &vspan.width, &vspanreach);
00315 
00316     if (tumblercmp(&vspanreach, &firstlink) == LESS)
00317         movetumbler(&firstlink, vsaptr);
00318     else
00319         movetumbler(&vspanreach, vsaptr);
00320 
00321     return true;
00322 }

bool insertendsetsinorgl Session sess,
Tumbler linkisaptr,
typeorgl  link,
Tumbler fromvsa,
typesporglset  fromsporglset,
Tumbler tovsa,
typesporglset  tosporglset,
Tumbler threevsa,
typesporglset  threesporglset
 

???

???

Parameters:
sess  Input: User's session context

Definition at line 262 of file do2.cxx.

References dumptumbler(), insertpm(), L, and typesporglset.

Referenced by docreatelink(), and domakelink().

00263                                            : User's session context
00264     Tumbler       *linkisaptr,
00265     typeorgl       link,
00266     Tumbler       *fromvsa,
00267     typesporglset  fromsporglset,
00268     Tumbler       *tovsa,
00269     typesporglset  tosporglset,
00270     Tumbler       *threevsa,
00271     typesporglset  threesporglset)
00272 {
00273     if (!(insertpm(sess, linkisaptr, link, fromvsa, fromsporglset)
00274           && insertpm(sess, linkisaptr, link, tovsa, tosporglset))) {
00275         return false;
00276     }
00277 
00278     if (threevsa && threesporglset) {
00279         if (!insertpm(sess, linkisaptr, link, threevsa, threesporglset))
00280             return false;
00281 
00282     } else {
00283 #ifndef DISTRIBUTION
00284         L("leaving INSERTENDSETSINORGL 4\n");
00285         L(" threevsa ptr= %x threesporglset ptr = %x threesvsa = \n", (int) threevsa, (int) threesporglset);
00286         dumptumbler(threevsa);
00287 #endif
00288     }
00289 
00290     return true;
00291 }

bool insertendsetsinspanf Session sess,
typespanf  spanfptr,
IStreamAddr linkisaptr,
typesporglset  fromsporglset,
typesporglset  tosporglset,
typesporglset  threesporglset
 

???

???

Parameters:
sess  Input: User's session context

Definition at line 235 of file do2.cxx.

References insertspanf(), LINKFROMSPAN, LINKTHREESPAN, LINKTOSPAN, and typesporglset.

Referenced by docreatelink(), and domakelink().

00236                                            : User's session context
00237     typespanf      spanfptr,
00238     IStreamAddr   *linkisaptr,
00239     typesporglset  fromsporglset,
00240     typesporglset  tosporglset,
00241     typesporglset  threesporglset)
00242 {
00243     if (!(insertspanf(sess, spanfptr, linkisaptr, fromsporglset, LINKFROMSPAN)
00244           && insertspanf(sess, spanfptr, linkisaptr, tosporglset, LINKTOSPAN)))
00245         return false;
00246 
00247     if (threesporglset) {
00248         if (!insertspanf(sess, spanfptr, linkisaptr, threesporglset, LINKTHREESPAN)) {
00249             return false;
00250         }
00251     }
00252     return true;
00253 }

bool ispansetandspecsets2spanpairset Session sess,
typeispanset  ispanset,
typespecset  specset1,
typespecset  specset2,
typespanpairset pairsetptr
 

???

???

Parameters:
sess  Input: User's session context

Definition at line 360 of file do2.cxx.

References debug, dumpspanpairset(), foo(), L, makespanpairset(), NULL, restrictspecsetsaccordingtoispans(), typeispanset, typespanpairset, and typespecset.

Referenced by doshowrelationof2versions().

00361                                      : User's session context
00362     typeispanset ispanset,
00363     typespecset specset1,
00364     typespecset specset2,
00365     typespanpairset *pairsetptr)
00366 {
00367 #ifndef DISTRIBUTION
00368     L("entering ispansetandspecsets2spanpairset\n");
00369 #endif
00370 
00371     if (ispanset == NULL) {
00372         *pairsetptr = NULL;
00373 
00374 #ifndef DISTRIBUTION
00375         L("ispanset NULL, no relation\n");
00376 #endif
00377 
00378     } else {
00379         restrictspecsetsaccordingtoispans(sess, ispanset, &specset1, &specset2);
00380         makespanpairset(sess, ispanset, specset1, specset2, pairsetptr);
00381 
00382 #ifndef DISTRIBUTION
00383         foo("after makespanpairset\n");
00384         if (debug)
00385             dumpspanpairset(*pairsetptr);
00386 #endif
00387 
00388     }
00389 
00390 #ifndef DISTRIBUTION
00391     L("leaving ispansetandspecsets2spanpairset\n");
00392 #endif
00393 
00394     return true;
00395 }

void makehint int  typeabove,
int  typebelow,
int  typeofatom,
IStreamAddr isaptr,
typehint hintptr
 

???

???

Definition at line 170 of file do2.cxx.

References typehint::atomtype, typehint::hintisa, movetumbler, typehint::subtype, and typehint::supertype.

Referenced by docreatelink(), docreatenewdocument(), docreatenewversion(), docreatenode_or_account(), doinsert(), and domakelink().

00176 {
00177     hintptr->supertype = typeabove;
00178     hintptr->subtype   = typebelow;
00179     hintptr->atomtype  = typeofatom;
00180 
00181     movetumbler(isaptr, &hintptr->hintisa);
00182 }

bool setlinkvsas Tumbler fromvsaptr,
Tumbler tovsaptr,
Tumbler threevsaptr
 

???

???

Definition at line 331 of file do2.cxx.

References tumblerclear, and tumblerincrement().

Referenced by docreatelink(), and domakelink().

00335 {
00336     tumblerclear(fromvsaptr);
00337     tumblerincrement(fromvsaptr, 0, 1, fromvsaptr);
00338     tumblerincrement(fromvsaptr, 1, 1, fromvsaptr);
00339 
00340     tumblerclear(tovsaptr);
00341     tumblerincrement(tovsaptr, 0, 2, tovsaptr);
00342     tumblerincrement(tovsaptr, 1, 1, tovsaptr);
00343 
00344     if (threevsaptr) {
00345         tumblerclear(threevsaptr);
00346         tumblerincrement(threevsaptr, 0, 3, threevsaptr);
00347         tumblerincrement(threevsaptr, 1, 1, threevsaptr);
00348     }
00349 
00350     return true;
00351 }

bool specset2ispanset Session sess,
typespecset  specset,
typeispanset ispansetptr,
int  type
 

???

???

Parameters:
sess  Input: User's session context

Definition at line 103 of file do2.cxx.

References assert, findorgl(), granf, ISPANID, iszerotumbler, L, typespan::next, NULL, typeispanset, typeorgl, typespecset, vspanset2ispanset(), and VSPECID.

00104                                           : User's session context
00105     typespecset   specset,
00106     typeispanset *ispansetptr,
00107     int           type)
00108 {
00109     //UNUSED typeispanset *save = ispansetptr;
00110 
00111     *ispansetptr = NULL;
00112     for (; specset; specset = (typespec *) ((typeitemheader *) specset)->next) {
00113 
00114         if (((typeitemheader *) specset)->itemid == ISPANID) {
00115             L("specset2ispanset, found an ISPANID\n");
00116 
00117             *ispansetptr = (typeispanset) specset;
00118             ispansetptr = (typeispanset *) & ((typeitemheader *) specset)->next;
00119 
00120         } else if (((typeitemheader *) specset)->itemid == VSPECID) {
00121             L("specset2ispanset, found an VSPECID\n");
00122 
00123             assert(!iszerotumbler(&((typevspec *) specset)->docisa)); // ERROR: retrieve called with docisa 0
00124 
00125             typeorgl docorgl;
00126             if (!(findorgl(sess, granf, &((typevspec *) specset)->docisa, &docorgl, type) /*BERT*/
00127             && (ispansetptr = vspanset2ispanset(sess, docorgl, ((typevspec *) specset)->vspanset, ispansetptr)))) {
00128                 return false;        /* zzzz */
00129             }
00130         }
00131     }
00132     return true;
00133 }

bool tumbler2spanset Session sess,
IStreamAddr tumblerptr,
typespanset spansetptr
 

???

???

Parameters:
sess  Input: User's session context

Definition at line 142 of file do2.cxx.

References ISPANID, typespan::itemid, movetumbler, typespan::next, NULL, typespan::stream, tumblerclear, tumblerincrement(), tumblerlength(), typespanset, and typespan::width.

Referenced by docreatelink(), and domakelink().

00143                                          : User's session context
00144     IStreamAddr *tumblerptr,
00145     typespanset *spansetptr)
00146 {
00147     typespan *spanptr = new(sess) typespan;
00148 //    typespan *spanptr = (typespan *) sess->alloc(sizeof(typespan));
00149 
00150     spanptr->next   = NULL;
00151     spanptr->itemid = ISPANID;
00152 
00153     movetumbler(tumblerptr, &spanptr->stream);
00154 
00155     tumblerclear(&spanptr->width);
00156     tumblerincrement(&spanptr->width, tumblerlength(tumblerptr) - 1 /* zzzzz */ , 1,
00157                      &spanptr->width);
00158     *spansetptr = spanptr;
00159 
00160     return true;
00161 }

void validhint typehint hintptr  ) 
 

???

???

Definition at line 191 of file do2.cxx.

References ACCOUNT, assert, ATOM, typehint::atomtype, DOCUMENT, NODE, typehint::subtype, and typehint::supertype.

00192 {
00193     if ((hintptr->supertype < NODE)
00194         || (hintptr->supertype > DOCUMENT)
00195         || (hintptr->subtype   < ACCOUNT)
00196         || (hintptr->subtype   > ATOM)
00197         || (hintptr->atomtype  < 0)
00198         || (hintptr->atomtype  > 2)
00199         || (hintptr->subtype   < hintptr->supertype)
00200         || ((hintptr->subtype - hintptr->supertype) > 1)
00201         || ((hintptr->subtype == ATOM) == !hintptr->atomtype)) {
00202 
00203 #ifndef DISTRIBUTION
00204 /* L("bad hint: supertype = %d subtype = %d atomtype = %d\n", hintptr->supertype, hintptr->subtype,
00205  * hintptr->atomtype); L("hintisa = "); puttumbler(stderr, &hintptr->hintisa); */
00206         assert(0); // bad hint
00207 #else
00208         assert(0);
00209 #endif
00210     }
00211 }


Generated on Sun Aug 21 04:18:29 2005 for Udanax-Green by doxygen1.3.4