libsrc/sporgl.cxx File Reference

Udanax Back-end routines to handle sporgls. More...

#include "udanax.h"

Include dependency graph for sporgl.cxx:

Include dependency graph

Go to the source code of this file.

Functions

typesporglsetvspanset2sporglset (Session *sess, IStreamAddr *docisa, typevspanset vspanset, typesporglset *sporglsetptr, int type)
 ???

bool specset2sporglset (Session *sess, typespecset specset, typesporglset *sporglsetptr, int type)
 ???

bool link2sporglset (Session *sess, IStreamAddr *linkisa, typesporglset *sporglsetptr, int whichend, int type)
 ???

void sporglset2vspanset (Session *sess, IStreamAddr *homedoc, typesporglset *sporglsetptr, typevspanset *vspansetptr, int type)
 ???

void linksporglset2vspec (Session *sess, IStreamAddr *homedoc, typesporglset *sporglsetptr, typevspec *specptr, int type)
 ???

bool linksporglset2specset (Session *sess, IStreamAddr *homedoc, typesporglset sporglset, typespecset *specsetptr, int type)
 ???

void unpacksporgl (typesporglset sporglptr, Tumbler *streamptr, Tumbler *widthptr, type2dbottomcruminfo *infoptr)
 ???

void contextintosporgl (type2dcontext *context, Tumbler *linkid, typesporgl *sporglptr, int index)
 ???

void sporglset2linksetinrange (Session *sess, typecuc *spanfptr, typesporglset sporglset, typelinkset *linksetptr, typeispan *orglrange, int spantype)
 ???

void sporglset2linkset (Session *sess, typecuc *spanfptr, typesporglset sporglset, typelinkset *linksetptr, typeispan *homeset, int spantype)
 ???


Detailed Description

Udanax Back-end routines to handle sporgls.

(to be defined)

Definition in file sporgl.cxx.


Function Documentation

void contextintosporgl type2dcontext context,
Tumbler linkid,
typesporgl sporglptr,
int  index
 

???

(to be defined)

Definition at line 360 of file sporgl.cxx.

References assert, type2dcontext::context2dinfo, type2dcontext::contextwid, typewid::dsas, type2dbottomcruminfo::homedoc, iszerotumbler, typesporgl::itemid, movetumbler, typesporgl::next, NULL, typesporgl::sporgladdress, SPORGLID, typesporgl::sporglorigin, typesporgl::sporglwidth, and type2dcontext::totaloffset.

Referenced by link2sporglset(), and retrievesporglsetinrange().

00365 {
00366     sporglptr->itemid = SPORGLID;
00367     sporglptr->next   = NULL;
00368     movetumbler(/* linkid */ &context->context2dinfo.homedoc, &sporglptr->sporgladdress);
00369 
00370 /* ^^^^^ zzz foo kluge 11/23/84 ^^^^^ */
00371 
00372     movetumbler(&context->totaloffset.dsas[index], &sporglptr->sporglorigin);
00373 
00374     if (iszerotumbler(&context->contextwid.dsas[index]))
00375         assert(0); // zero wid in contextintosporgl
00376 
00377     movetumbler(&context->contextwid.dsas[index], &sporglptr->sporglwidth);
00378 }

bool link2sporglset Session sess,
IStreamAddr linkisa,
typesporglset sporglsetptr,
int  whichend,
int  type
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 175 of file sporgl.cxx.

References contextfree(), contextintosporgl(), findorgl(), granf, I, typesporgl::next, ContextBase::nextcontext, NULL, retrieverestricted(), typespan::stream, tumblerclear, tumblerincrement(), typeorgl, typesporglset, typevspan, V, and typespan::width.

Referenced by dofollowlink().

00176                                            : User's session context
00177     IStreamAddr   *linkisa,
00178     typesporglset *sporglsetptr,
00179     int            whichend,
00180     int            type)
00181 {
00182     typeorgl orgl;
00183     Tumbler zero;
00184     typevspan vspan;
00185     Context *context, *c;
00186     typesporgl *sporglptr;
00187 
00188     if (!findorgl(sess, granf, linkisa, &orgl, type))
00189         return false;
00190 
00191     tumblerclear(&zero);
00192     tumblerincrement(&zero, 0, whichend, &vspan.stream);
00193     tumblerincrement(&zero, 0 /* 1 */ , 1, &vspan.width);
00194     if ((context = retrieverestricted((typecuc *) orgl, &vspan, V, (typespan *) NULL, I, (IStreamAddr *) NULL)) != 0) {
00195         for (c = context; c; c = (Context *) c->nextcontext) {
00196             sporglptr = new(sess) typesporgl;
00197             contextintosporgl((type2dcontext *) c, (Tumbler *) NULL, sporglptr, I);
00198 
00199             *sporglsetptr = (typesporglset) sporglptr;
00200             sporglsetptr  = (typesporglset *) & sporglptr->next;
00201         }
00202         contextfree(context);
00203         return true;
00204 
00205     } else
00206         return false;
00207 }

bool linksporglset2specset Session sess,
IStreamAddr homedoc,
typesporglset  sporglset,
typespecset specsetptr,
int  type
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 292 of file sporgl.cxx.

References assert, ISPANID, iszerotumbler, linksporglset2vspec(), movetumbler, NULL, typeispan, typespecset, and typesporglset.

Referenced by dofollowlink(), and retrieveendsetsfromspanf().

00293                                            : User's session context
00294     IStreamAddr   *homedoc,
00295     typesporglset  sporglset,
00296     typespecset   *specsetptr,
00297     int            type)
00298 {
00299     typespecset specset;
00300 
00301     *specsetptr = NULL;
00302     for (; sporglset; sporglset = (typesporglset) ((typeitemheader *) sporglset)->next) {
00303         specset = (typespecset) new(sess) typevspec;
00304 //        specset = (typespecset) sess->alloc(sizeof(typevspec));
00305         if (iszerotumbler(&((typesporgl *) sporglset)->sporgladdress)) {
00306             if (iszerotumbler(&((typesporgl *) sporglset)->sporglwidth))
00307                 assert(0); // zero wid I span in linksporglset2specset
00308 
00309             ((typeitemheader *) specset)->itemid = ISPANID;
00310             movetumbler(&((typesporgl *) sporglset)->sporglorigin, &((typeispan *) specset)->stream);
00311             movetumbler(&((typesporgl *) sporglset)->sporglwidth, &((typeispan *) specset)->width);
00312         } else
00313             linksporglset2vspec(sess, homedoc, &sporglset, (typevspec *) specset, type);
00314 
00315         ((typeitemheader *) specset)->next = NULL;
00316         *specsetptr = specset;
00317         specsetptr = (typespecset *) & ((typeitemheader *) specset)->next;
00318     }
00319     return true;
00320 }

void linksporglset2vspec Session sess,
IStreamAddr homedoc,
typesporglset sporglsetptr,
typevspec specptr,
int  type
[static]
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 268 of file sporgl.cxx.

References typevspec::docisa, typevspec::itemid, movetumbler, typevspec::next, NULL, sporglset2vspanset(), typesporglset, typevspec::vspanset, and VSPECID.

Referenced by linksporglset2specset().

00269                                            : User's session context
00270     IStreamAddr   *homedoc,
00271     typesporglset *sporglsetptr,
00272     typevspec     *specptr,
00273     int            type)
00274 {
00275 /* typesporglset sporglset; sporglset = *sporglsetptr; */
00276     specptr->itemid = VSPECID;
00277     specptr->next   = NULL;
00278     movetumbler(homedoc /* &sporglset->sporgladdress */ , &specptr->docisa);
00279 
00280     specptr->vspanset = NULL;
00281     sporglset2vspanset(sess, homedoc, sporglsetptr, &specptr->vspanset, type);
00282 }

bool specset2sporglset Session sess,
typespecset  specset,
typesporglset sporglsetptr,
int  type
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 144 of file sporgl.cxx.

References ISPANID, NULL, typespecset, typesporglset, vspanset2sporglset(), and VSPECID.

Referenced by docreatelink(), domakelink(), findlinksfromtothreesp(), and retrieveendsetsfromspanf().

00145                                            : User's session context
00146     typespecset    specset,
00147     typesporglset *sporglsetptr,
00148     int            type)
00149 {
00150     *sporglsetptr = NULL;
00151     for (; specset; specset = (typespecset) ((typeitemheader *) specset)->next) {
00152         if (((typeitemheader *) specset)->itemid == ISPANID) {
00153             *sporglsetptr = (typesporglset) specset;
00154             sporglsetptr = (typesporglset *) & ((typeitemheader *) specset)->next;
00155 
00156         } else if (((typeitemheader *) specset)->itemid == VSPECID) {
00157 
00158             if (!(sporglsetptr = vspanset2sporglset(sess, &((typevspec *) specset)->docisa, ((typevspec *) specset)->vspanset, sporglsetptr, type)))
00159                 return false;
00160         }
00161     }
00162 
00163     *sporglsetptr = NULL;
00164     return true;
00165 }

void sporglset2linkset Session sess,
typecuc spanfptr,
typesporglset  sporglset,
typelinkset linksetptr,
typeispan homeset,
int  spantype
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 434 of file sporgl.cxx.

References Tumbler::mantissa, typespan::next, NULL, sporglset2linksetinrange(), typespan::stream, tumblerclear, typeispan, typelinkset, typesporglset, and typespan::width.

Referenced by findlinksfromtothreesp().

00435                                            : User's session context
00436     typecuc       *spanfptr,
00437     typesporglset  sporglset,
00438     typelinkset   *linksetptr,
00439     typeispan     *homeset,
00440     int            spantype)
00441 {
00442     typeispan nullhomeset;
00443 
00444     *linksetptr = NULL;
00445 
00446     if (true || !homeset) {
00447         tumblerclear(&nullhomeset.stream);
00448         tumblerclear(&nullhomeset.width);
00449         nullhomeset.width.mantissa[0] = 100;
00450         nullhomeset.next = NULL;
00451         homeset = &nullhomeset;
00452     }
00453 
00454     for (; homeset; homeset = homeset->next)
00455         sporglset2linksetinrange(sess, spanfptr, sporglset, linksetptr, homeset, spantype);
00456 }

void sporglset2linksetinrange Session sess,
typecuc spanfptr,
typesporglset  sporglset,
typelinkset linksetptr,
typeispan orglrange,
int  spantype
[static]
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 388 of file sporgl.cxx.

References beheadtumbler(), contextfree(), typewid::dsas, movetumbler, ContextBase::nextcontext, NULL, onlinklist(), ORGLRANGE, prefixtumbler(), retrieverestricted(), SPANRANGE, SPORGLID, typespan::stream, ContextBase::totaloffset, typeispan, typelinkset, typesporglset, and typespan::width.

Referenced by sporglset2linkset().

00389                                            : User's session context
00390     typecuc       *spanfptr,
00391     typesporglset  sporglset,
00392     typelinkset   *linksetptr,
00393     typeispan     *orglrange,
00394     int            spantype)
00395 {
00396     typespan range;
00397     Context *context, *c;
00398     IStreamAddr linksa;
00399 
00400     type2dbottomcruminfo linfo;
00401     type2dbottomcruminfo *infoptr = &linfo;
00402     for (; sporglset; sporglset = (typesporglset) ((typeitemheader *) sporglset)->next) {
00403         if (false /* trying to kluge links followable thru versions */
00404             && ((typeitemheader *) sporglset)->itemid == SPORGLID) {
00405             infoptr = &linfo;
00406             movetumbler(&((typesporgl *) sporglset)->sporgladdress, &linfo.homedoc);
00407         } else
00408             infoptr = NULL;
00409 
00410         if (orglrange) {
00411             prefixtumbler(&orglrange->stream, spantype, &range.stream);
00412             prefixtumbler(&orglrange->width, 0, &range.width);
00413             context = retrieverestricted(spanfptr, (typespan *) sporglset, SPANRANGE, &range, ORGLRANGE, (IStreamAddr *) infoptr);
00414         } else
00415             context = retrieverestricted(spanfptr, (typespan *) sporglset, SPANRANGE, (typespan *) NULL, ORGLRANGE, (IStreamAddr *) infoptr);
00416 
00417         for (c = context; c; c = (Context *) c->nextcontext) {
00418             beheadtumbler(&c->totaloffset.dsas[ORGLRANGE], &linksa);
00419             onlinklist(sess, linksetptr, &linksa);
00420         }
00421 
00422         contextfree(context);
00423     }
00424 }

void sporglset2vspanset Session sess,
IStreamAddr homedoc,
typesporglset sporglsetptr,
typevspanset vspansetptr,
int  type
[static]
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 219 of file sporgl.cxx.

References assert, findorgl(), granf, ispan2vspanset(), ISPANID, iszerotumbler, typesporgl::itemid, typespan::itemid, movetumbler, typesporgl::next, typespan::next, NULL, SPORGLID, typesporgl::sporglorigin, typesporgl::sporglwidth, typespan::stream, tumblereq(), typeispan, typeorgl, typesporglset, typevspanset, and typespan::width.

Referenced by linksporglset2vspec().

00220                                            : User's session context
00221     IStreamAddr   *homedoc,
00222     typesporglset *sporglsetptr,
00223     typevspanset  *vspansetptr,
00224     int            type)
00225 {
00226     typeorgl orgl;
00227     typeispan ispan;
00228 
00229 /* Tumbler zero; */
00230     typesporgl *sporglptr;
00231 
00232     sporglptr = (typesporgl *) * sporglsetptr;
00233 /* tumblerclear (&zero); */
00234 
00235     findorgl(sess, granf, homedoc /* &sporglptr->sporgladdress */, &orgl, type);
00236     ispan.itemid = ISPANID;
00237     ispan.next   = NULL;
00238     movetumbler(&sporglptr->sporglorigin, &ispan.stream);
00239     movetumbler(&sporglptr->sporglwidth, &ispan.width);
00240     vspansetptr = ispan2vspanset(sess, orgl, &ispan, vspansetptr);
00241 
00242     for (;;) {
00243         sporglptr = sporglptr->next;
00244         if (!sporglptr || !(sporglptr->itemid == SPORGLID) || !tumblereq(&((typesporgl *) sporglptr)->sporgladdress, &((typesporgl *) (*sporglsetptr))->sporgladdress))
00245             return;
00246 
00247         *sporglsetptr = (typesporglset) sporglptr;
00248         movetumbler(&sporglptr->sporglorigin, &ispan.stream);
00249 
00250         if (iszerotumbler(&sporglptr->sporglwidth))
00251             assert(0); // 2 sporgl ispan width 0 in sporglset2vspanset
00252 
00253         movetumbler(&sporglptr->sporglwidth, &ispan.width);
00254         vspansetptr = ispan2vspanset(sess, orgl, &ispan, vspansetptr);
00255     }
00256 }

void unpacksporgl typesporglset  sporglptr,
Tumbler streamptr,
Tumbler widthptr,
type2dbottomcruminfo infoptr
 

???

(to be defined)

Definition at line 330 of file sporgl.cxx.

References assert, type2dbottomcruminfo::homedoc, ISPANID, iszerotumbler, L, movetumbler, SPORGLID, tumblerclear, typeispan, and typesporglset.

Referenced by insertpm().

00335 {
00336     if (((typeitemheader *) sporglptr)->itemid == ISPANID) {
00337         movetumbler(&((typeispan *) sporglptr)->stream, streamptr);
00338         movetumbler(&((typeispan *) sporglptr)->width, widthptr);
00339         tumblerclear(&infoptr->homedoc);
00340 
00341     } else if (((typeitemheader *) sporglptr)->itemid == SPORGLID) {
00342         movetumbler(&((typesporgl *) sporglptr)->sporglorigin, streamptr);
00343         movetumbler(&((typesporgl *) sporglptr)->sporglwidth, widthptr);
00344         movetumbler(&((typesporgl *) sporglptr)->sporgladdress, &infoptr->homedoc /* should be sourcedoc */ );
00345 
00346     } else
00347         L("unpacksporgl - bad itemid\n");
00348 
00349     assert(!iszerotumbler(widthptr));  // ERROR: zero width in unpacksporgl
00350 }

typesporglset* vspanset2sporglset Session sess,
IStreamAddr docisa,
typevspanset  vspanset,
typesporglset sporglsetptr,
int  type
[static]
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 101 of file sporgl.cxx.

References findorgl(), granf, typesporgl::itemid, movetumbler, typesporgl::next, typespan::next, NULL, typesporgl::sporgladdress, SPORGLID, typesporgl::sporglorigin, typesporgl::sporglwidth, typespan::stream, typeispanset, typeorgl, typesporglset, typevspanset, vspanset2ispanset(), and typespan::width.

Referenced by specset2sporglset().

00102                                            : User's session context
00103     IStreamAddr   *docisa,
00104     typevspanset   vspanset,
00105     typesporglset *sporglsetptr,
00106     int            type)
00107 {
00108     typeorgl      orgl;
00109     typesporgl   *sporglset;
00110     typeispanset  ispanset;
00111 
00112     ispanset = NULL;
00113     if (!findorgl(sess, granf, docisa, &orgl, type))
00114         return NULL;
00115 
00116     for (; vspanset; vspanset = vspanset->next) {
00117         (void)vspanset2ispanset(sess, orgl, vspanset, &ispanset);
00118         for (; ispanset; ispanset = ispanset->next) {
00119             sporglset = new(sess) typesporgl;
00120             sporglset->itemid = SPORGLID;
00121             sporglset->next   = NULL;
00122 
00123             movetumbler(docisa,            &sporglset->sporgladdress);
00124             movetumbler(&ispanset->stream, &sporglset->sporglorigin);
00125             movetumbler(&ispanset->width,  &sporglset->sporglwidth);
00126 
00127             *sporglsetptr = (typesporglset) sporglset;
00128             sporglsetptr  = (typesporglset *) & sporglset->next;
00129         }
00130     }
00131 /* note that this returns the LAST sporgl alloced this is ok the returned value gets passed back to here to be used for 
00132  * a linked list */
00133     return sporglsetptr;
00134 }


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