include/protos.h File Reference

??? More...

#include <memory.h>
#include "types.h"

Include dependency graph for protos.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Defines

#define weakfindfather(x)   ((typecuc *)(((!(((typecuc*)(x))->isapex))&&(((typecuc*)(x))->isleftmost))?((typecuc*)((typecuc*)(x))->leftbroorfather):(typecuc*)functionweakfindfather((typecorecrum *)(typecuc*)(x))))
#define clear(ptr, count)   memset(ptr,0,count)
#define movmem(src, dest, count)   memmove(dest,src,count)
#define rejuvinateifnotRESERVED(x)   (((x)->age==RESERVED)?(int)(x):((x)->age = NEW))
#define rejuvinate(x)   ((x)->age==RESERVED)?(reservnumber?--reservnumber:testforrejuvinate(x)):0,(x)->age = NEW
#define getrightbro(x)   routinegetrightbro(x)
#define macrogetrightbro(x)   ((rejuvinateifnotRESERVED (x), (x) = (x)->rightbro, ((x)? (rejuvinateifnotRESERVED (x)): 0),(x)))
#define findrightbro(A)   funcfindrightbro(A)
#define max(a, b)   (((a) > (b)) ? (a) : (b))
#define min(a, b)   (((a) < (b)) ? (a) : (b))
#define movewisp(A, B)   movmem((A),(B),sizeof(typewisp))
#define widsize(A)   ((A)==GRAN?WIDSIZEGR:((A)==SPAN?WIDSIZESP:WIDSIZEPM))
#define dspsize(A)   ((A)==GRAN?DSPSIZEGR:((A)==SPAN?DSPSIZESP:DSPSIZEPM))

Functions

void lookatalloc ()
 ???

int checkalloc (char *c)
 ???

int * falloc (unsigned nbytes)
 ???

void ffree (char *ap)
 ???

void lookatalloc2 (HEADER *abaseallocated)
 ???

int checkforopen (Session *sess, Tumbler *tp, int type)
 ???

void logbertmodifiedforcrum (Session *sess, typecuc *crumptr)
 ???

void logbertmodified (Session *sess, Tumbler *tp)
 ???

bool doopen (Session *sess, IStreamAddr *tp, IStreamAddr *newtp, int type, int mode)
 ???

bool doclose (Session *sess, IStreamAddr *tp)
 ???

void closeberts (Session *sess)
 ???

void contextfree (Context *context)
 ???

CrumContextcreatecrumcontext (typecorecrum *crumptr, typedsp *offsetptr)
 ???

void crumcontextfree (CrumContext *context)
 ???

void incontextlistnd (Context **clistptr, Context *c, int index)
 ???

void oncontextlistseq (Context **clistptr, Context *c)
 ???

Contextmakecontextfromcbc (typecbc *crumptr, typewid *offsetptr)
 ???

void context2span (Context *context, typespan *restrictionspanptr, int idx1, typespan *foundspanptr, int idx2)
 ???

bool context2vstuff (Session *sess, Context *context, typeispan *ispanptr, typevstuffset *vstuffsetptr)
 ???

void initkluge (typecuc **granfptr, typecuc **spanfptr)
 ???

void inloaf (typecuc *father)
 ???

void inorgl (typecbc *granorglptr)
 ???

void inorglinternal (typecbc *granorglptr, typeuberrawdiskloaf *crumptr)
 ???

void diskexit ()
 ???

void diskflush ()
 ???

void writeenfilades ()
 ???

void orglwrite (typecbc *orglcbcptr)
 ???

void subtreewrite (typecuc *father)
 ???

void restrictspecsetsaccordingtoispans (Session *sess, typeispanset ispanset, typespecset *specset1, typespecset *specset2)
 ???

bool intersectspansets (Session *sess, typespanset set1, typespanset set2, typespanset *set3, typeitemid spantype)
 ???

void makespanpairset (Session *sess, typeispanset ispanset, typespecset specset1, typespecset specset2, typespanpairset *pairsetptr)
 ???

int * eallocwithtag (unsigned nbytes, tagtype tag)
 ???

void efree (char *ptr)
 ???

void initgrimreaper ()
 ???

int testforrejuvinate (typecorecrum *ptr)
 ???

void funcrejuvinate (typecorecrum *ptr)
 ???

void reserve (typecorecrum *ptr)
 ???

void testforreservedness (char *msg)
 ???

void subtreefree (typecorecrum *ptr)
 ???

void freecrum (typecorecrum *ptr)
 ???

void loaffree (typecuc *father)
 ???

void orglfree (typecuc *ptr)
 ???

typecuccreateenf (int enftype)
 ???

typecorecrumcreatecrum (int crumheight, int enftype)
 ???

void initcrum (int crumheight, int enftype, typecorecrum *ptr)
 ???

void initqueues ()
 ???

int findnumberofdamnsons (typediskloafptr diskptr)
 ???

int changerefcount (typediskloafptr diskptr, int delta)
 ???

void readloaf (typediskloaf *loafptr, typediskloafptr diskptr)
 ???

void actuallyreadrawloaf (typeuberrawdiskloaf *loafptr, int blocknumber)
 ???

void writeloaf (typediskloaf *loafptr, typediskloafptr diskptr, int newloaf)
 ???

void actuallywriteloaf (typeuberrawdiskloaf *loafptr, int diskblocknumber)
 ???

bool initenffile (const char *filename)
 ???

void closediskfile ()
 ???

typediskloafptr diskalloc ()
 ???

void diskfree (typediskloafptrdigit loafptr)
 ???

void diskset (typediskloafptrdigit loafptr)
 ???

bool readallocinfo (int fd)
 ???

void initheader ()
 ???

void diskallocexit (int fd)
 ???

void writeallocinfo (int fd)
 ???

bool goodblock (typediskloafptrdigit diskptr)
 ???

bool dofinddocscontaining (Session *sess, typespecset specset, typelinkset *addresssetptr)
 Find documents containing any of the material specified.

bool doappend (Session *sess, IStreamAddr *docptr, typetextset textset)
 Append text to a document.

bool dorearrange (Session *sess, IStreamAddr *docisaptr, typecutseq *cutseqptr)
 Transpose two regions of text within a document.

bool docopy (Session *sess, IStreamAddr *docisaptr, Tumbler *vsaptr, typespecset specset)
 Virtually copy (transclude) some material into a document.

bool docopyinternal (Session *sess, IStreamAddr *docisaptr, Tumbler *vsaptr, typespecset specset)
 Virtually copy (transclude) some material into a document.

bool doinsert (Session *sess, IStreamAddr *docisaptr, Tumbler *vsaptr, typetextset textset)
 Insert a set of text strings into a document.

void checkspecandstringbefore ()
 ???

bool dodeletevspan (Session *sess, IStreamAddr *docisaptr, typevspan *vspanptr)
 Delete a range of text from a document.

bool domakelink (Session *sess, IStreamAddr *docisaptr, typespecset fromspecset, typespecset tospecset, IStreamAddr *linkisaptr)
 Create a 2-endpoint link between parts of documents.

bool docreatelink (Session *sess, IStreamAddr *docisaptr, typespecset fromspecset, typespecset tospecset, typespecset threespecset, IStreamAddr *linkisaptr)
 Create a 3-endpoint link between parts of documents.

bool dofollowlink (Session *sess, IStreamAddr *linkisaptr, typespecset *specsetptr, int whichend)
 Return the specification set of one endpoint of a link.

bool docreatenewdocument (Session *sess, IStreamAddr *isaptr)
 Create a new, empty document.

bool docreatenode_or_account (Session *sess, IStreamAddr *isaptr)
 Create a new node or account identifier.

bool docreatenewversion (Session *sess, IStreamAddr *isaptr, IStreamAddr *wheretoputit, IStreamAddr *newisaptr)
 Create a new version of a document and return its identifier.

bool doretrievedocvspan (Session *sess, IStreamAddr *docisaptr, typevspan *vspanptr)
 Return the total span of text and links within a document.

bool doretrievedocvspanset (Session *sess, IStreamAddr *docisaptr, typevspanset *vspansetptr)
 Return the total span of text and links within a document.

bool doretrievev (Session *sess, typespecset specset, typevstuffset *vstuffsetptr)
 Return the text and links from set of places within a document.

bool dofindlinksfromtothree (Session *sess, typespecset fromvspecset, typespecset tovspecset, typespecset threevspecset, typeispan *orglrangeptr, typelinkset *linksetptr)
 Return a list of links that meet a specific set of endpoint criteria.

bool dofindnumoflinksfromtothree (Session *sess, typespecset *fromvspecset, typespecset *tovspecset, typespecset *threevspecset, typeispan *orglrangeptr, int *numptr)
 Return a count of links that meet a specific set of endpoint criteria.

bool dofindnextnlinksfromtothree (Session *sess, typevspec *fromvspecptr, typevspec *tovspecptr, typevspec *threevspecptr, typeispan *orglrangeptr, IStreamAddr *lastlinkisaptr, typelinkset *nextlinksetptr, int *nptr)
 Return a subset of links that meet a specific set of endpoint criteria.

bool doretrieveendsets (Session *sess, typespecset specset, typespecset *fromsetptr, typespecset *tosetptr, typespecset *threesetptr)
 Return a list of all link end-sets in the specification set.

bool doshowrelationof2versions (Session *sess, typespecset version1, typespecset version2, typespanpairset *relation)
 ???

bool specset2ispanset (Session *sess, typespec *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)
 ???

void deletend (typecuc *fullcrumptr, Tumbler *origin, Tumbler *width, int index)
 ???

void rearrangend (typecuc *fullcrumptr, typecutseq *cutseqptr, int index)
 ???

int insertcutsectionnd (typecorecrum *ptr, typewid *offset, typeknives *knives)
 ???

void initsession (const char *database)
 ???

bool is2dcrum (typecorecrum *ptr)
 ???

typecorecrumgetleftson (typecuc *ptr)
 ???

typecorecrumroutinegetrightbro (typecorecrum *ptr)
 ???

typecorecrumgetrightmostbro (typecorecrum *ptr)
 ???

typecucgetfather (typecorecrum *ptr)
 ???

typecucfindfullcrum (typecorecrum *descendant)
 ???

bool isemptyenfilade (typecuc *ptr)
 ???

typecucfunctionweakfindfather (typecorecrum *ptr)
 ???

typecucfindfather (typecorecrum *son)
 ???

typecorecrumfindleftbro (typecorecrum *ptr)
 ???

typecorecrumfindleftmostbro (typecorecrum *ptr)
 ???

typecorecrumweakfindleftmostbro (typecorecrum *ptr)
 ???

typecorecrumfuncfindrightbro (typecorecrum *ptr)
 ???

typecorecrumweakfindrightbro (typecorecrum *ptr)
 ???

typecorecrumfindrightmostbro (typecorecrum *leftbro)
 ???

typecorecrumfindleftson (typecuc *ptr)
 ???

typecorecrumfindrightmostson (typecuc *ptr)
 ???

bool toomanysons (typecuc *ptr)
 ???

bool toofewsons (typecuc *ptr)
 ???

bool roomformoresons (typecuc *ptr)
 ???

void levelpush (typecuc *fullcrumptr)
 ???

void levelpull (typecuc *fullcrumptr)
 ???

void disown (typecorecrum *crumptr)
 ???

void disownnomodify (typecorecrum *crumptr)
 ???

void adopt (typecorecrum *newcrum, int relative, typecorecrum *old)
 ???

void ivemodified (typecorecrum *ptr)
 ???

bool findorgl (Session *sess, typegranf granfptr, IStreamAddr *isaptr, typeorgl *orglptr, int type)
 ???

bool inserttextingranf (Session *sess, typegranf granfptr, typehint *hintptr, typetextset textset, typeispanset *ispansetptr)
 ???

bool createorglingranf (Session *sess, typegranf granfptr, typehint *hintptr, IStreamAddr *isaptr)
 ???

bool ispanset2vstuffset (Session *sess, typegranf granfptr, typeispanset ispanset, typevstuffset *vstuffsetptr)
 ???

typeorgl fetchorglgr (Session *sess, typegranf fullcrumptr, IStreamAddr *address)
 ???

bool inserttextgr (Session *sess, typegranf fullcrumptr, typehint *hintptr, typetextset textset, typeispanset *ispansetptr)
 ???

bool createorglgr (Session *sess, typegranf fullcrumptr, typehint *hintptr, IStreamAddr *isaptr)
 ???

typevstuffsetispan2vstuffset (Session *sess, typegranf fullcrumptr, typeispan *ispanptr, typevstuffset *vstuffsetptr)
 ???

void init (bool safe)
 ???

void insertseq (typecuc *fullcrumptr, Tumbler *address, typegranbottomcruminfo *info)
 ???

void insertnd (Session *sess, typecuc *fullcrumptr, typewid *origin, typewid *width, type2dbottomcruminfo *infoptr, int index)
 ???

void makeroomonleftnd (typecuc *father, typedsp *offset, typewid *origin, typedsp *grasp)
 ???

void initincorealloctables ()
 ???

void savepartialdiskalloctabletodisk ()
 ???

void readpartialdiskalloctablefromdisk ()
 ???

void addallocatedloaftopartialallocedtables (typediskloafptr dp, int size)
 ???

typediskloafptr partialdiskalloc (int size, int *newloafp)
 ???

void newpartialdiskfree (typediskloafptr diskloaf)
int deallocateinloaf (typeuberdiskloaf *loafp, int insidediskblocknumber)
int numberofliveunterloafs (typeuberdiskloaf *loafp)
 ???

char * findinsideloaf (typeuberdiskloaf *loafp, int ninsideloaf)
 ???

void makecutsnd (typecuc *fullcrumptr, typeknives *knives)
 ???

void newfindintersectionnd (typecuc *fullcrumptr, typeknives *knives, typecuc **ptrptr, typewid *offset)
 ???

bool cutinthiscrumnd (typecorecrum *ptr, typewid *offset, typeknives *knives)
bool allcutswiththiscrumnd (typecorecrum *ptr, typewid *offset, typeknives *knives)
bool appendpm (Session *sess, IStreamAddr *docisaptr, typetextset textset)
 ???

bool insertpm (Session *sess, Tumbler *orglisa, typeorgl orgl, Tumbler *vsaptr, typesporglset sporglset)
 ???

bool rearrangepm (Session *sess, Tumbler *docisaptr, typeorgl docorgl, typecutseq *cutseqptr)
 ???

bool deletevspanpm (Session *sess, Tumbler *docisaptr, typeorgl docorgl, typevspan *vspanptr)
 ???

bool retrievedocumentpartofvspanpm (Session *sess, typeorgl orgl, typevspan *vspanptr)
 ???

bool retrievevspanpm (Session *sess, typeorgl orgl, typevspan *vspanptr)
 ???

bool retrievevspansetpm (Session *sess, typeorgl orgl, typevspanset *vspansetptr)
 ???

void walkorglonvpm (Session *sess, typecorecrum *crumptr, Tumbler *voffset, typevspanset *vspansetptr)
void cleanupvspanlist (Session *sess, typevspanset *vspansetptr)
typevspansetispan2vspanset (Session *sess, typeorgl orgl, typeispan *ispanptr, typevspanset *vspansetptr)
 ???

typeispansetvspanset2ispanset (Session *sess, typeorgl orgl, typevspanset vspanptr, typeispanset *ispansetptr)
 ???

typeitemonitemlist (Session *sess, typeitem *itemptr, typeitemset *itemsetptr)
 ???

bool isemptyorgl (typeorgl fullcrumptr)
 ???

void puttumbler (FILE *outfile, Tumbler *tumblerptr)
 ???

void putitemset (Session *sess, typeitemset itemset)
 ???

void qinit (struct queue *qhead)
 ???

void qinsert (struct queue *qhead, struct queue *object)
void qpush (struct queue *qhead, struct queue *object)
 ???

queueqremove (struct queue *qhead)
 ???

queueqnext (struct queue *qthis, struct queue *qhead)
queueqdchain (struct queue *qitem)
int qlength (struct queue *qhead)
 ???

bool qvalid (struct queue *qhead)
void recombine (typecuc *father)
 ???

bool ishouldbother (typecuc *dest, typecuc *src)
 ???

int comparecrumsdiagonally (typecorecrum *a, typecorecrum *b)
 ???

void fixincoresubtreewids (typecuc *ptr)
 ???

CrumContextretrievecrums (typecuc *fullcrumptr, Tumbler *address, int index)
 ???

Contextretrieve (typecuc *fullcrumptr, Tumbler *address, int index)
 ???

Contextretrieverestricted (typecuc *fullcrumptr, typespan *span1ptr, int index1, typespan *span2ptr, int index2, IStreamAddr *docisaptr)
 ???

Contextretrieveinspan (typecuc *fullcrumptr, Tumbler *spanstart, Tumbler *spanend, int index)
 ???

void prologuend (typecorecrum *ptr, typedsp *offset, typedsp *grasp, typedsp *reach)
 ???

int whereoncrum (typecorecrum *ptr, typewid *offset, Tumbler *address, int index)
 ???

bool insertspanf (Session *sess, typespanf spanfptr, IStreamAddr *isaptr, typesporglset sporglset, int spantype)
 ???

bool findlinksfromtothreesp (Session *sess, typespanf spanfptr, typespecset fromvspecset, typespecset tovspecset, typespecset threevspecset, typeispan *orglrange, typelinkset *linksetptr)
 ???

bool findnumoflinksfromtothreesp (Session *sess, typespanf spanfptr, typespecset fromvspecset, typespecset tovspecset, typespecset threevspecset, typeispan *orglrange, int *numptr)
 ???

bool findnextnlinksfromtothreesp (Session *sess, typespecset fromvspecset, typespecset tovspecset, typespecset threevspecset, typeispan *orglrangeptr, IStreamAddr *lastlinkisaptr, typelinkset *nextlinksetptr, int *nptr)
 ???

bool finddocscontainingsp (Session *sess, typespanset ispanset, typelinkset *addresssetptr)
 ???

bool retrieveendsetsfromspanf (Session *sess, typespecset specset, typespecset *fromsetptr, typespecset *tosetptr, typespecset *threesetptr)
 ???

bool isinlinklist (typelinkset linkset, IStreamAddr *linkisaptr)
 ???

void onlinklist (Session *sess, typelinkset *linksetptr, IStreamAddr *linkisaptr)
 ???

void intersectlinksets (Session *sess, typelinkset linkset1, typelinkset linkset2, typelinkset linkset3, typelinkset *linkset4ptr)
 ???

bool splitcrumupwards (typecuc *father)
 ???

void splitcrum (typecuc *father)
 ???

void peelcrumoffnd (typecorecrum *ptr)
 ???

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

bool link2sporglset (Session *sess, IStreamAddr *linkisa, typesporglset *sporglsetptr, int whichend, 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 sporglset2linkset (Session *sess, typecuc *spanfptr, typesporglset sporglset, typelinkset *linksetptr, typeispan *homeset, int spantype)
 ???

void foo (char *msg)
 ???

void foospan (char *msg, typespan *span)
 ???

void foospanset (char *msg, typespan *spanset)
 ???

void dumpspanset (typespan *spanset)
 ???

void foocrum (char *msg, typecorecrum *crumptr)
 ???

void foohex (char *msg, int num)
 ???

void foodec (char *msg, int num)
 ???

void foocontext (char *msg, Context *context)
 ???

void foocontextlist (char *msg, Context *context)
 ???

void fooitemset (char *msg, typeitemset iptr)
 ???

void fooitem (char *msg, typeitem *iptr)
 ???

void footumbler (char *msg, Tumbler *tptr)
 ???

void foodsp (char *msg, typedsp *dptr, int enftype)
 ???

void foowid (char *msg, typewid *wptr, int enftype)
 ???

void dumpsubtree (typecuc *father)
 ???

void dumpwholesubtree (typecuc *father)
 ???

void assertspecisstring (typespecset specptr, char *string)
 ???

bool asserttreeisok (typecorecrum *ptr)
 ???

void assertsubtreeisok (typecorecrum *ptr)
 ???

void assertsonswispmatchesfather (typecuc *father)
 ???

void assertwidsarepositive (typecorecrum *ptr)
 ???

void dumpwholetree (typecorecrum *ptr)
 ???

int checkwholesubtree (typecuc *father)
 ???

int check (typecuc *ptr)
 ???

void dump (typecorecrum *ptr)
 ???

void yesdump (typecorecrum *ptr)
 ???

void dumphedr (typecorecrumhedr *ptr)
 ???

void dumpwid (typewid *widptr, int enftype)
 ???

void dumpdsp (typewid *dspptr, int enftype)
 ???

void dumpinfo (typegranbottomcruminfo *infoptr, int enftype)
 ???

void dumptumbler (Tumbler *tumblerptr)
 ???

void displaycutspm (typeknives *knivesptr)
 ???

void dumphint (typehint *hintptr)
 ???

void examine (Session *sess)
 ???

void showorgl (Session *sess)
 ???

void showsubtree (typecorecrum *father)
 ???

void showistream (typecuc *granfptr)
 ???

void showspanf (typecuc *spanfptr)
 ???

void doshowspanf (typecorecrum *crumptr, typedsp *offsetptr, int enfheight)
 ???

void showspanfcrum (typecorecrum *crumptr, typedsp *offsetptr, int enfheight)
 ???

void dumpmem (char *loc, unsigned count)
 ???

bool dumpgranfwids (Session *sess)
 ???

void showgranwids (typecorecrum *crum, int down, Tumbler *retptr)
 ???

void dumppoomwisps (typecorecrum *orgl)
 ???

void showpoomwisps (typecuc *crum, int down)
 ???

void dumpistreamgr (typecuc *crumptr)
 ???

void dodumpistreamgr (typecuc *crumptr, Tumbler *offsetptr)
 ???

void dumpmoleculegr (Tumbler *offsetptr, typecbc *cbcptr)
 ???

void dumpisagr (Tumbler *offsetptr)
 ???

typecorecrumcheckenftypes (typecuc *father, char *message)
 ???

typecorecrumcheckthebleedingcrum (typecorecrum *crumptr)
 ???

void teststack ()
 ???

char * enftypestring (int type)
 ???

typecorecrumsonoriginok (typecorecrum *father)
 ???

void dumpcontextlist (Context *context)
 ???

void dumpcontext (Context *context)
 ???

void dumpitemset (typeitemset itemset)
 ???

void dumpitem (typeitem *itemptr)
 ???

void dumpspan (typespan *spanptr)
 ???

void dumptext (typetext *textptr)
 ???

bool ioinfo (Session *sess)
 ???

void showenfilades (Session *sess)
 ???

char * itemidstring (typeitem *item)
 ???

void checkitem (char *msg, typeitem *ptr)
 ???

void checkpointer (char *msg, char *ptr)
 ???

void dumpspanpairset (typespanpairset spanpairset)
 ???

void dumpspanpair (typespanpair *spanpair)
 ???

void dumphexstuff (char *ptr)
 ???

void checknumofsons (typecuc *ptr)
 ???

void nchecknumofsons (typecuc *ptr)
 ???

bool tumblereq (Tumbler *a, Tumbler *b)
 ???

bool tumbleraccounteq (Tumbler *aptr, Tumbler *bptr)
 ???

int tumblercmp (Tumbler *aptr, Tumbler *bptr)
 ???

int intervalcmp (Tumbler *left, Tumbler *right, Tumbler *address)
 ???

bool tumblercheckptr (Tumbler *ptr, int *crumptr)
 ???

bool tumblercheck (Tumbler *ptr)
 ???

bool is1story (Tumbler *tumblerptr)
 ???

int nstories (Tumbler *tumblerptr)
 ???

int tumblerlength (Tumbler *tumblerptr)
 ???

int lastdigitintumbler (Tumbler *tumblerptr)
 ???

void tumblerjustify (Tumbler *tumblerptr)
 ???

void tumblercopy (Tumbler *fromptr, Tumbler *toptr)
 ???

void tumblermax (Tumbler *aptr, Tumbler *bptr, Tumbler *cptr)
 ???

void functiontumbleradd (Tumbler *aptr, Tumbler *bptr, Tumbler *cptr)
 ???

void tumblersub (Tumbler *aptr, Tumbler *bptr, Tumbler *cptr)
 ???

void absadd (Tumbler *aptr, Tumbler *bptr, Tumbler *cptr)
 ???

void strongsub (Tumbler *aptr, Tumbler *bptr, Tumbler *cptr)
 ???

void weaksub (Tumbler *aptr, Tumbler *bptr, Tumbler *cptr)
 ???

int tumblerintdiff (Tumbler *aptr, Tumbler *bptr)
 ???

void tumblerincrement (Tumbler *aptr, int rightshift, int bint, Tumbler *cptr)
 ???

void tumblertruncate (Tumbler *aptr, int bint, Tumbler *cptr)
 ???

void prefixtumbler (Tumbler *aptr, int bint, Tumbler *cptr)
 ???

void beheadtumbler (Tumbler *aptr, Tumbler *bptr)
 ???

void docidandvstream2tumbler (Tumbler *docid, Tumbler *vstream, Tumbler *tumbleptr)
 ???

int tumblerptrtofixed (humber p, Tumbler *tptr)
 ???

int tumblerfixedtoptr (Tumbler *ptr, humber p)
 ???

humber fooalloc (unsigned int size)
void foofree (humber ptr)
humber humberput (int i, humber humberfoo, unsigned int *lengthofhumberptr)
 ???

humber humber3put (int i, humber humberfoo, unsigned int *lengthofhumberptr)
 ???

unsigned int functionintof (humber h)
 ???

unsigned int intlengthoflength (unsigned int i)
 ???

unsigned int functionlengthof (humber ptr)
 ???

humber mantissaof (humber ptr)
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)
 ???

void setwispsofsons (typecuc *ptr)
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)
 ???

void etag ()
void efreewithtag ()
void * operator new (size_t nbytes, Session *sess)
 ???

humber humberput ()
humber humber3put ()
void move2dinfo (type2dbottomcruminfo *A, type2dbottomcruminfo *B)
void moveinfo (typebottomcruminfo *A, typebottomcruminfo *B)
bool isthisusersdocument (Session *sess, Tumbler *tp)
 ???

void hgetfromloaf (int *ip, char *lp)


Detailed Description

???

(to be defined)

Definition in file protos.h.


Define Documentation

#define clear ptr,
count   )     memset(ptr,0,count)
 

Definition at line 762 of file protos.h.

Referenced by createcontext(), createcruminternal(), deletend(), doinsertnd(), eatbrossubtreend(), fillupcbcseq(), finddocscontainingsp(), findisatoinsertmolecule(), findisatoinsertnonmolecule(), findvsatoappend(), graphpoom(), graphwholetree(), initheader(), initsession(), insertseq(), insertspanf(), makecutsnd(), makegappm(), newfindintersectionnd(), newpeelcrumoffnd(), retrieve(), retrievecrums(), retrieveendsetsfromspanf(), retrieveinarea(), retrieveinspan(), setwidnd(), setwidseq(), setwispnd(), showgranwids(), and showspanf().

#define dspsize  )     ((A)==GRAN?DSPSIZEGR:((A)==SPAN?DSPSIZESP:DSPSIZEPM))
 

Definition at line 812 of file protos.h.

Referenced by assertwidsarepositive(), dspadd(), dspsub(), dumpdsp(), graphdsp(), graphoffset(), isanextensionnd(), isemptyenfilade(), isemptyorgl(), and setwispnd().

#define findrightbro  )     funcfindrightbro(A)
 

Definition at line 797 of file protos.h.

Referenced by adopt(), cutsons(), deletend(), deletewithgarbageddescendents(), disownnomodify(), dumpwholesubtree(), eatbrossubtreend(), expandcrumleftward(), findnextaddressinvspace(), findpreviousisagr(), findrightmostbro(), findsontoinsertundernd(), graphwholesubtree(), insertcbcnd(), makecutsbackuptohere(), makecutsdownnd(), makegappm(), maxtextwid(), peeloffcorrectson(), peelsoncorrectly(), rearrangend(), sonsarecut(), splitcrumpm(), and splitcrumsp().

#define getrightbro  )     routinegetrightbro(x)
 

Definition at line 790 of file protos.h.

Referenced by eatbrossubtreeseq(), findcbcinarea2d(), findcbcinspanseq(), findcbcnd(), findcbcseq(), findcbcseqcrum(), findlastcbcseq(), fixdspsofbroschildren(), fixincoresubtreewids(), getorderedsons(), getrightmostbro(), recombinend(), setwidnd(), setwidseq(), setwispnd(), and takeovernephewsseq().

#define macrogetrightbro  )     ((rejuvinateifnotRESERVED (x), (x) = (x)->rightbro, ((x)? (rejuvinateifnotRESERVED (x)): 0),(x)))
 

Definition at line 792 of file protos.h.

Referenced by recombineseq().

#define max a,
 )     (((a) > (b)) ? (a) : (b))
 

Definition at line 800 of file protos.h.

Referenced by lookatalloc2(), and new_players().

#define min a,
 )     (((a) < (b)) ? (a) : (b))
 

Definition at line 803 of file protos.h.

#define movewisp A,
 )     movmem((A),(B),sizeof(typewisp))
 

Definition at line 810 of file protos.h.

Referenced by createcrumcontext(), findcbcinspanseq(), firstinsertionnd(), insertcbcnd(), insertseq(), makecontextfromcbc(), peelcrumoffnd(), peeloffcorrectson(), peelsoncorrectly(), prologuecontextnd(), setwidnd(), setwidseq(), setwispnd(), and slicecbcpm().

#define movmem src,
dest,
count   )     memmove(dest,src,count)
 

Definition at line 763 of file protos.h.

Referenced by changeunterrefcount(), context2vtext(), fillupcbcseq(), findandallocateinsidediskblocknumber(), hgetinfo(), hputinfo(), inserttextgr(), move2dinfo(), moveinfo(), onitemlist(), readloaf(), tumblerfixedtoptr(), and writeloaf().

#define rejuvinate  )     ((x)->age==RESERVED)?(reservnumber?--reservnumber:testforrejuvinate(x)):0,(x)->age = NEW
 

Definition at line 783 of file protos.h.

Referenced by createorglgr(), crumcontextfree(), eatbrossubtreend(), fetchorglgr(), findleftson(), inorglinternal(), insertcbcnd(), insertseq(), makecontextfromcbc(), orglwritepart2(), peelcrumoffnd(), and splitcrumseq().

#define rejuvinateifnotRESERVED  )     (((x)->age==RESERVED)?(int)(x):((x)->age = NEW))
 

Definition at line 781 of file protos.h.

Referenced by findfather(), findleftbro(), findleftmostbro(), findleftson(), findrightmostbro(), funcfindrightbro(), getfather(), getleftbro(), getleftson(), ivemodified(), and routinegetrightbro().

#define weakfindfather  )     ((typecuc *)(((!(((typecuc*)(x))->isapex))&&(((typecuc*)(x))->isleftmost))?((typecuc*)((typecuc*)(x))->leftbroorfather):(typecuc*)functionweakfindfather((typecorecrum *)(typecuc*)(x))))
 

Definition at line 760 of file protos.h.

Referenced by disown(), disownnomodify(), findfather(), isreapable(), and reap().

#define widsize  )     ((A)==GRAN?WIDSIZEGR:((A)==SPAN?WIDSIZESP:WIDSIZEPM))
 

Definition at line 811 of file protos.h.

Referenced by assertwidsarepositive(), dumpwid(), findvsatoappend(), graphwid(), hgetwiddsp(), hputwiddsp(), isemptyenfilade(), isemptyorgl(), makeroomonleftnd(), setwidnd(), setwidseq(), setwispnd(), and slicecbcpm().


Function Documentation

void absadd Tumbler aptr,
Tumbler bptr,
Tumbler cptr
 

???

(to be defined)

Definition at line 665 of file tumble.cxx.

References Tumbler::exp, Tumbler::mantissa, movetumbler, NPLACES, Tumbler::sign, tdigit, Tumbler::varandnotfixed, and Tumbler::xvartumbler.

Referenced by functiontumbleradd().

00669 {
00670     int i, j;
00671     //UNUSED int place;
00672     int temp;
00673     tdigit *ansmant;
00674     tdigit *bmant, *amant;
00675     Tumbler answer;
00676 
00677     i = j = 0;
00678     amant = aptr->mantissa;
00679     bmant = bptr->mantissa;
00680     answer.xvartumbler = 0;
00681     answer.varandnotfixed = 0;
00682     answer.sign = 0;
00683     ansmant = answer.mantissa;
00684 
00685     if (aptr->exp == bptr->exp) {
00686         answer.exp = aptr->exp;
00687         ansmant[0] = amant[0] + bmant[0];
00688         i = j = 1;
00689 
00690     } else if (aptr->exp > bptr->exp) {
00691         answer.exp = aptr->exp;
00692         temp = aptr->exp - bptr->exp;
00693         while (i < temp) {
00694             ansmant[j++] = amant[i++];
00695         }
00696         ansmant[j++] = amant[i++] + bmant[0];
00697         i = 1;
00698 
00699     } else {
00700         answer.exp = bptr->exp;
00701         temp = bptr->exp - aptr->exp;
00702         while (i <= temp) {
00703             ansmant[j++] = bmant[i++];
00704         }
00705     }
00706 
00707     while (j <= NPLACES - 1)
00708         ansmant[j++] = bmant[i++];
00709 
00710     movetumbler(&answer, cptr);
00711 }

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 }

void actuallyreadrawloaf typeuberrawdiskloaf loafptr,
int  blocknumber
 

???

(to be defined)

Definition at line 279 of file disk.cxx.

References assert, DISKPTRNULL, dumpsubtree(), enffiledes, enffileread, goodblock(), L, nolread, and NUMBYTESINLOAF.

Referenced by actuallyreadrawloaffromhash(), changerefcount(), findnumberofdamnsons(), partialdiskalloc(), readloaf(), readpartialdiskalloctablefromdisk(), and writeloaf().

00282 {
00283 /* L("entering actuallyreadloaf diskblocknumber = %d\n",blocknumber); */
00284     if (!loafptr || blocknumber == DISKPTRNULL) {
00285 #ifndef DISTRIBUTION
00286         L("loafptr = %d\n", blocknumber);
00287         if (loafptr)
00288             dumpsubtree((typecuc *) loafptr);
00289         assert(0); // bad readloaf call
00290 #else
00291         assert(0); // bad call
00292 #endif
00293     }
00294 
00295     if (!enffileread) {
00296         if (close(enffiledes) != 0)
00297             perror("close failed in readloaf");
00298 
00299         if ((enffiledes = open("enf.enf",  O_RDWR, 0)) == -1) {
00300             perror("open");
00301             assert(0); // open
00302         }
00303         enffileread = true;
00304     }
00305 
00306     if (!goodblock(blocknumber)) {
00307 #ifndef DISTRIBUTION
00308         L("loaf = %x\n", blocknumber);
00309         L("unallocated block in readloaf.\n");
00310 #endif
00311         abort();
00312     }
00313 
00314     if (lseek(enffiledes, (long)blocknumber * NUMBYTESINLOAF, 0) < 0) {
00315 #ifndef DISTRIBUTION
00316         perror("lseek in readloaf");
00317 #endif
00318         assert(0); // lseek failed
00319     }
00320 
00321     int nbytes = read(enffiledes, (char *) loafptr, sizeof(*loafptr));
00322     assert(nbytes > 0); // Incorrect Usage of Assertion
00323 
00324     // dumphexstuff(loafptr);
00325     // if ((int) loafptr->xdbcloaf.xdbchedr.refcount < 0) {
00326     //     assert(0); // readloaf read a loaf with refcount < 0
00327     // }
00328     ++nolread;
00329 
00330     // return true;
00331 }

void actuallywriteloaf typeuberrawdiskloaf loafptr,
int  diskblocknumber
 

???

(to be defined)

Definition at line 410 of file disk.cxx.

References assert, DISKPTRNULL, enffiledes, goodblock(), nolwrote, and NUMBYTESINLOAF.

Referenced by changerefcount(), savepartialdiskalloctabletodisk(), and writeloaf().

00414 {
00415     if (!loafptr || diskblocknumber == DISKPTRNULL /* || (int) loafptr->xdbcloaf.xdbchedr.refcount < 0 */ )
00416         assert(0); // bad call
00417 
00418     assert(goodblock(diskblocknumber)); // ERROR: unallocated block
00419 
00420     if (lseek(enffiledes, (long)diskblocknumber * NUMBYTESINLOAF, 0) < 0) {
00421         perror("lseek");
00422         assert(0); // lseek failed
00423     }
00424 
00425     int nbytes = write(enffiledes, (char *)loafptr, sizeof(*loafptr));
00426     assert(nbytes >= 0); // Incorrect Usage of Assert
00427 
00428     ++nolwrote;
00429 }

void addallocatedloaftopartialallocedtables typediskloafptr  dp,
int  size
 

???

(to be defined)

Definition at line 339 of file multiloaf.cxx.

References addtofreediskstructures(), typediskloafptr::diskblocknumber, freediskentry::freespaceinloaf, freediskentry::partialdiskblocknumber, and SIZEOFUBERDISKHEADER.

Referenced by uniqueoutloaf().

00342 {
00343     freediskentry stuff;
00344 
00345 /* L("addallocatedloaftopartialallocedtables entering\n"); */
00346     stuff.partialdiskblocknumber = htonl(dp.diskblocknumber);
00347     stuff.freespaceinloaf = htons(sizeof(typeuberrawdiskloaf) - size - SIZEOFUBERDISKHEADER);
00348     addtofreediskstructures(&stuff);
00349 /* L("addallocatedloaftopartialallocedtables exiting\n"); */
00350 }

void adopt typecorecrum newcc,
int  relative,
typecorecrum old
 

???

(to be defined)

Definition at line 715 of file genf.cxx.

References assert, typecorecrumhedr::cenftype, findfather(), findleftbro(), findleftson(), findrightbro, findrightmostson(), typecuc::height, typecorecrumhedr::height, LEFTBRO, typecorecrumhedr::leftbroorfather, LEFTMOSTSON, typecuc::leftson, NULL, typecuc::numberofsons, typecorecrumhedr::rightbro, RIGHTBRO, RIGHTMOSTSON, and typecorecrum.

Referenced by createenf(), insertcbcnd(), insertseq(), levelpush(), newpeelcrumoffnd(), peelcrumoffnd(), peeloffcorrectson(), peelsoncorrectly(), slicecbcpm(), splitcrumseq(), takenephewnd(), takeovernephewsseq(), and varunpackloaf().

00719 {
00720     typecuc *father = NULL;
00721     typecorecrum *left = NULL, *right = NULL;
00722 
00723     assert(newcc && old);  // ERROR: adopt with NULL
00724     assert(newcc != old);  // ERROR: adopt with both crums same
00725 
00726     // assert(!isfullcrum(newcc); // adopt called with fullcrum
00727 
00728     newcc->cenftype = old->cenftype; // make crum know what kind it is
00729 
00730     switch (relative) {
00731     case LEFTMOSTSON:
00732         father = (typecuc *) old;
00733         left   = NULL;
00734         right  = findleftson(father);
00735         break;
00736 
00737     case RIGHTMOSTSON:
00738         father = (typecuc *) old;
00739         if (father->leftson)  left = findrightmostson(father);
00740         else                  left = NULL;
00741         right = NULL;
00742         break;
00743 
00744     case RIGHTBRO:
00745         assert(newcc->height == old->height); // ERROR: adopt 1
00746         left   = old;
00747         father = findfather(left);
00748         right  = findrightbro(left);
00749         break;
00750 
00751     case LEFTBRO:
00752         assert(newcc->height == old->height); // ERROR: adopt 2
00753         right  = old;
00754         father = findfather(right);
00755         left   = findleftbro(right);
00756         break;
00757 
00758     default:
00759         assert(false); // ERROR: bad relative
00760     }
00761 
00762     assert(father);                              // ERROR: adopt without a father!
00763     assert(father->height == newcc->height + 1); // ERROR: height mismatch in adopt
00764 
00765     if (left) {
00766         left->rightbro = newcc;
00767         newcc->leftbroorfather = left;
00768         newcc->isleftmost = false;
00769     } else {
00770         father->leftson = newcc;
00771         newcc->leftbroorfather = (typecorecrum *) father;
00772         newcc->isleftmost = true;
00773     }
00774 
00775     newcc->rightbro = right;
00776     if (right) {
00777         right->leftbroorfather = newcc;
00778         right->isleftmost = false;
00779     }
00780 
00781     ++father->numberofsons;
00782 }

bool allcutswiththiscrumnd typecorecrum ptr,
typewid offset,
typeknives knives
 

bool appendpm Session sess,
IStreamAddr doc_isa,
typetextset  textset
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 188 of file orglinks.cxx.

References doinsert(), findorgl(), findvsatoappend(), granf, typecorecrum, typeorgl, typetextset, and WRITEBERT.

Referenced by doappend().

00189                                          : User's session context
00190     IStreamAddr *doc_isa,
00191     typetextset  textset)
00192 {
00193     /*
00194      * Walk the granfilade to find and lock the ORGL for the specified document.
00195      */
00196     typeorgl orglptr;
00197     if (!findorgl(sess, granf, doc_isa, &orglptr, WRITEBERT))
00198         return false;
00199 
00200     /*
00201      * Compute the highest stream address in use within the document, at which
00202      * to append the new content.
00203      */
00204     Tumbler vsa;
00205     findvsatoappend((typecorecrum *) orglptr, &vsa);
00206 
00207     return doinsert(sess, doc_isa, &vsa, textset);
00208 }

void assertsonswispmatchesfather typecuc father  ) 
 

???

(to be defined)

Definition at line 626 of file test.cxx.

References assert, typediskloafptr::diskblocknumber, DISKPTRNULL, dump(), dumpwholetree(), L, typecuc::numberofsons, setwisp(), typecuc::sonorigin, and typecorecrum.

Referenced by assertsubtreeisok().

00628 {
00629 #ifndef DISTRIBUTION
00630     //UNUSED typecorecrum *son;
00631 
00632     if (father->numberofsons == 0) {
00633         if (father->sonorigin.diskblocknumber != DISKPTRNULL)
00634             return;
00635 
00636         L("zerosons in assert\n");
00637         return;
00638     }
00639 
00640     if (setwisp((typecorecrum *) father)) {
00641         L("assert wisp matched father failed \n");
00642         dump((typecorecrum *) father);
00643         dumpwholetree((typecorecrum *) father);
00644 
00645         assert(0); // father didn't match sons wid and disp
00646     }
00647 #endif
00648 }

void assertspecisstring typespecset  specptr,
char *  string
 

???

(to be defined)

<Input: User's session context

Definition at line 527 of file test.cxx.

References debug, doretrievev(), Session::free(), L, typetext::length, typetext::string, typespecset, typevstuffset, and typevstuff::xxxtext.

00530 {
00531 #ifndef DISTRIBUTION
00532     Session sessfoo;          
00533     typevstuffset vstuffset;
00534     //UNUSED int i;
00535     int savedebug;
00536 
00537     L("assertspecisstring entering \n");
00538     savedebug = debug;
00539 
00540 /* debug = false; */
00541 
00542     //Now done via a ctor:: inittask(&sessfoo);
00543 
00544     doretrievev(&sessfoo, specptr, &vstuffset);
00545 
00546 // for(i=0;(i<vstuffset->length)&&(string[i] == vstuffset->string[i]);i++) ; if(i != vstuffset->length){
00547 // L("in assertspecisstring failedstring1 =%s string2 =%s
00548 // %d\n",string,vstuffset->string,vstuffset->length); debug = true; fooitem("spec is ",specptr); fooitem("\nvstuff is
00549 // ",vstuffset); // crash bang boom // assert(0); /* assertspecisstring asserton failed \n */; } L("in
00550 // assertspecisstring succeded %s \n",string);
00551 
00552     L("in assertspecisstring string2 =%s %d\n", vstuffset->xxxtext.string, vstuffset->xxxtext.length);
00553     sessfoo.free();
00554     debug = savedebug;
00555     L("assertspecisstring leaving \n");
00556 #endif
00557 }

void assertsubtreeisok typecorecrum ptr  ) 
 

???

(to be defined)

Definition at line 588 of file test.cxx.

References typecorecrumhedr::age, assert, assertsonswispmatchesfather(), assertwidsarepositive(), dump(), typecorecrumhedr::height, RESERVED, reservnumber, typecorecrumhedr::rightbro, and typecorecrum.

Referenced by asserttreeisok().

00590 {
00591 #ifndef DISTRIBUTION
00592     typecorecrum *son;
00593 
00594     if (!ptr)
00595         assert(0); // assertsubtreeok failed null ptr
00596 
00597     assertwidsarepositive(ptr);
00598     if (!reservnumber) {
00599         if (ptr->age == RESERVED) {
00600             dump(ptr);
00601             assert(0); // incorrect reserved in assertsubtreeisok
00602         }
00603     }
00604 
00605     if (ptr->height == 0)
00606         return;
00607 
00608 // if (toomanysons(ptr)) { // dump(ptr); L("fatherhas too many sons\n"); // //assert(0); "foo"// }
00609 
00610     assertsonswispmatchesfather((typecuc *) ptr);
00611     for (son = ((typecuc *) ptr)->leftson /* findleftson//getleftson//(ptr) */ ;
00612          son; son = son->rightbro) {
00613         assertsubtreeisok(son);
00614     }
00615 #endif
00616 }

bool asserttreeisok typecorecrum ptr  ) 
 

???

(to be defined)

Definition at line 567 of file test.cxx.

References assertsubtreeisok(), findfather(), isfullcrum(), L, and typecorecrum.

Referenced by docopy(), docopyinternal(), makecutsnd(), setwispupwards(), and splitcrumupwards().

00569 {
00570 //    L("--asserttreeisok is a NOP--\n");
00571 //    return (true);
00572 
00573     L("entering asserttreeisok\n");
00574     for (; !isfullcrum(ptr); ptr = (typecorecrum *) findfather(ptr)); assertsubtreeisok(ptr)
00575         ;
00576         
00577     return(true);
00578 }

void assertwidsarepositive typecorecrum ptr  ) 
 

???

(to be defined)

Definition at line 658 of file test.cxx.

References typecorecrumhedr::cdsp, typecorecrumhedr::cenftype, typecorecrumhedr::cwid, typewid::dsas, dspsize, GRAN, tumblercheckptr(), typecorecrum, and widsize.

Referenced by assertsubtreeisok().

00660 {
00661 #ifndef DISTRIBUTION
00662     int nstreams, i;
00663 
00664     int enftype = ptr->cenftype;
00665 
00666     if (enftype == GRAN)
00667         return;
00668 
00669     nstreams = widsize(enftype);
00670     for (i = 0; i < nstreams; ++i) {
00671         tumblercheckptr(&(ptr->cwid.dsas[i]), (int *) ptr);
00672     }
00673 
00674     nstreams = dspsize(enftype);
00675     for (i = 0; i < nstreams; ++i) {
00676         tumblercheckptr(&(ptr->cdsp.dsas[i]), (int *) ptr);
00677     }
00678 #endif
00679 }

void beheadtumbler Tumbler aptr,
Tumbler bptr
 

???

(to be defined)

Definition at line 986 of file tumble.cxx.

References Tumbler::exp, Tumbler::mantissa, movetumbler, and tumblerjustify().

Referenced by findaddressofsecondcutforinsert(), finddocscontainingsp(), and sporglset2linksetinrange().

00989 {
00990     Tumbler temp;
00991 
00992     movetumbler(aptr, &temp);
00993     ++temp.exp;
00994 
00995     if (aptr->exp == 0)
00996         temp.mantissa[0] = 0;
00997 
00998     tumblerjustify(&temp);
00999     movetumbler(&temp, bptr);
01000 }

int changerefcount typediskloafptr  diskptr,
int  delta
 

???

(to be defined)

Definition at line 221 of file disk.cxx.

References actuallyreadrawloaf(), actuallywriteloaf(), assert, changeunterrefcount(), typediskloafptr::diskblocknumber, diskfree(), DISKPTRNULL, findinsideloaf(), typediskloafptr::insidediskblocknumber, and numberofliveunterloafs().

Referenced by deletewithgarbageddescendents(), orglwritepart2(), and subtreewriterecurs().

00224 {
00225     if (diskptr.diskblocknumber == DISKPTRNULL)
00226         assert(0); // null diskptr in changerefcount
00227 
00228     typeuberrawdiskloaf loaf;
00229     actuallyreadrawloaf(&loaf, diskptr.diskblocknumber);
00230 
00231     char *loafp            = findinsideloaf((typeuberdiskloaf *) &loaf, diskptr.insidediskblocknumber);
00232     int refcount           = changeunterrefcount((typediskloaf *) &loaf, loafp, delta);
00233     int numberofunterloafs = numberofliveunterloafs((typeuberdiskloaf *) &loaf);
00234 
00235     if (refcount > 0 && numberofunterloafs > 0)
00236         actuallywriteloaf( /* sizeof(typediskloaf), */ &loaf, diskptr.diskblocknumber);
00237     else
00238         diskfree(diskptr.diskblocknumber);
00239 
00240     return refcount;
00241 }

int check typecuc ptr  ) 
 

???

(to be defined)

Definition at line 828 of file test.cxx.

References assert, dump(), typecuc::height, typecuc::leftson, and NULL.

Referenced by checkwholesubtree(), ishouldbother(), and makeithcutonson().

00830 {
00831     return 0;
00832 
00833 #ifdef UnDeeFiNeD
00834     if (ptr->height == 0) {
00835         return 0;
00836     }
00837 
00838     if (ptr->leftson == NULL           /* &&ptr->sonorigin.diskblocknumber==-1 */
00839         && ptr->modified) {
00840         dump(ptr);
00841         assert(0); // in check
00842     } else {
00843         return 0;
00844     }
00845 
00846     assert(0); // check: can't get there
00847     return 0;
00848 #endif
00849 }

int checkalloc char *  c  ) 
 

???

(to be defined)

Definition at line 186 of file alloc.cxx.

References assert, base, debug, flag, HEADER, L, header::s, statusofalloc(), validallocthinge(), and zzalloctop.

00188 {
00189     HEADER *r, *oldr;
00190     unsigned size;
00191 
00192     if (!flag)
00193         return /*BUG: original code returned nothing, I guess I'll return a zero*/ 0;
00194 
00195     if (debug && *c)
00196         L("%s", c);
00197 
00198     unsigned oldsize = 0;
00199     for (oldr = r = base.s.ptr; flag && (r != &base) && (r != (HEADER *) zzalloctop); r = r + r->s.size) {
00200         size = r->s.size;
00201         validallocthinge((char *) r);
00202         if (r->s.size == 0 && r != (HEADER *) zzalloctop) {
00203             L("checkalloc glorphed with ptr = %x bottom = %x top = %x\n", (int) r, (int) zzallocbot, (int) zzalloctop);
00204             statusofalloc("");
00205             assert(0); // found zero size in alloced stuff
00206             return 1;
00207         }
00208         oldr = r;
00209         oldsize = size;
00210     }
00211     return true;
00212 }

typecorecrum* checkenftypes typecuc father,
char *  message
 

???

(to be defined)

Definition at line 1850 of file test.cxx.

References grimreaper, L, NULL, and typecorecrum.

01853 {
01854 #ifndef DISTRIBUTION
01855     //UNUSED typecorecrum *ptr;
01856 
01857     if (grimreaper == NULL)
01858         L("grimreaper tests null");
01859 
01860     return (typecorecrum *) father;
01861 
01862 //    if (!father) {
01863 //        fputs(stderr, message);
01864 //        assert(0); // ARGH!! null father ptr
01865 //    }
01866 //    
01867 //    if (!father->height)
01868 //        return father;
01869 //      
01870 //    if (father->cenftype == SPAN) {
01871 //        if (father->cwid.dsas[ORGLRANGE].exp == 0 && father->cwid.dsas[ORGLRANGE].mantissa[0] > 2) {
01872 //            dumpsubtree(father);
01873 //            fputs(stderr, message);
01874 //            assert(0); // I think the wid is too big
01875 //        }
01876 //    }
01877 //    
01878 //    for (ptr * = father->leftson; ptr; ptr = ptr->rightbro) {
01879 //        if (ptr->cenftype != GRAN && ptr->cenftype != POOM && ptr->cenftype != SPAN) {
01880 //            fputs(stderr, message);
01881 //            assert(0); // bad enftype
01882 //        }
01883 //      
01884 //        if (ptr->cenftype != father->cenftype) {
01885 //            fputs(stderr, message);
01886 //            assert(0); // enftype mismatch
01887 //        }
01888 //      
01889 //        checkenftypes(ptr, message);
01890 //    }
01891 //    return father;
01892 #endif
01893 }

int checkforopen Session sess,
Tumbler tp,
int  type
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 176 of file bert.cxx.

References berttable, bertentry::documentid, hashoftumbler(), isthisusersdocument(), conscell::next, NOBERTREQUIRED, READBERT, bertentry::sess, conscell::stuff, tumblereq(), bertentry::type, and WRITEBERT.

Referenced by doopen(), and findorgl().

00177                                      : User's session context
00178     Tumbler *tp,
00179     int      type)
00180 {
00181     int foundnonread = false;
00182 
00183     if (type == NOBERTREQUIRED)
00184         return 1;                      /* Random > 0 */
00185 
00186     conscell *p;
00187     for (p = berttable[hashoftumbler(tp)]; p && p->stuff; p = p->next) {
00188         bertentry *bert = p->stuff;
00189 
00190         if (tumblereq(tp, &bert->documentid)) {
00191             if (sess == bert->sess) {
00192                 switch (bert->type) {
00193                 case READBERT:
00194                     return (type == READBERT) ? READBERT : /* WRITE */ -1;
00195                 case WRITEBERT:
00196                     return WRITEBERT;
00197                 }
00198             } else {
00199                 if (bert->type != READBERT) {
00200                     foundnonread = true;
00201                 }
00202             }
00203         }
00204     }
00205 
00206     if (!foundnonread && (type == READBERT || isthisusersdocument(sess, tp)))
00207         return 0;
00208     else
00209         return -1;
00210 }

void checkitem char *  msg,
typeitem ptr
 

???

(to be defined)

Definition at line 2249 of file test.cxx.

References assert, checkpointer(), debug, dumpitem(), L, puttumbler(), SPORGLID, TEXTID, typevspan, VSPANID, and VSPECID.

Referenced by Session::freeitemset(), and onitemlist().

02252 {
02253 #ifndef DISTRIBUTION
02254     //UNUSED char buf[100];
02255 
02256     checkpointer(msg, (char *) ptr);
02257     if (!ptr)
02258         return;
02259 
02260     if (debug) {
02261         L(msg);
02262         dumpitem(ptr);
02263     }
02264 
02265     if (((typeitemheader *) ptr)->itemid < TEXTID || ((typeitemheader *) ptr)->itemid > SPORGLID) {
02266         L(msg);
02267         assert(0); // Bad itemtype
02268     }
02269 
02270 /* checkpointer (sprintf (buf, "%s ptr->next: ", msg), ((typeitemheader *)ptr)->next); */
02271     if (((typeitemheader *) ptr)->itemid == VSPANID) {
02272         if (((typevspan *) ptr)->stream.mantissa[0] != 1 && ((typevspan *) ptr)->stream.mantissa[0] != 2) {
02273             L(msg);
02274             puttumbler(stderr, &((typevspan *) ptr)->stream);
02275             L("  ");
02276             assert(0); // Bad span stream address
02277         }
02278     }
02279     if (((typeitemheader *) ptr)->itemid == VSPECID) {
02280         checkitem(msg, (typeitem *) ((typevspec *) ptr)->vspanset);
02281         if (((typevspec *) ptr)->vspanset->itemid != VSPANID)
02282             assert(0); // vspanset doesn't have proper itemid
02283     }
02284 #endif
02285 }

void checknumofsons typecuc ptr  ) 
 

???

(to be defined)

Definition at line 2406 of file test.cxx.

References dumpsubtree(), typecuc::height, L, typecuc::leftson, typecuc::numberofsons, and typecuc::rightbro.

02408 {
02409 #ifndef DISTRIBUTION
02410     typecuc *np;
02411 
02412     int i = 0;
02413     if (!ptr || !ptr->height)
02414         return;
02415 
02416     for (np = (typecuc *) ptr->leftson; np; np = (typecuc *) np->rightbro, i++)
02417         ;
02418 
02419     if (i != ptr->numberofsons) {
02420         dumpsubtree(ptr);
02421         L("i = %d numberofsons = %d\n", i, ptr->numberofsons);
02422 
02423         for (np = (typecuc *) ptr->leftson; np; np = (typecuc *) np->rightbro, i++) {
02424 /* dump(np) */ ;
02425         }
02426         L("numberofson mismach in checknumofsons\n");
02427     }
02428 #endif
02429 }

void checkpointer char *  msg,
char *  ptr
 

???

(to be defined)

Definition at line 2295 of file test.cxx.

Referenced by checkitem(), Session::free(), and Session::freeexplicit().

02298 {
02299     return;
02300     
02301 //    if (!ptr) {
02302 //        if (debug) {
02303 //            L(msg);
02304 //            L("NULL pointer\n");
02305 //        }
02306 //        return;
02307 //    }
02308 //    
02309 //    if (((unsigned) ptr) & 1) {
02310 //        L(msg);
02311 //        assert(0); // Pointer non-aligned
02312 //    }
02313 //    
02314 //    if (ptr > (char *) 0x1bffff) {
02315 //        L(msg);
02316 //
02317 //        if (ptr < (char *) 0x1e0000)
02318 //            L("Pointer in framebuffer\n");
02319 //
02320 //        assert(0); // Pointer in high-mem
02321 //    }
02322 //      
02323 //    if (ptr < (char *) 0x40000) {
02324 //        L(msg);
02325 //        assert(0); // Pointer to hardware protected low memory
02326 //    }
02327 //      
02328 //    if (ptr < &end //etext//) {
02329 //        L(msg);
02330 //        assert(0); // Pointer below end
02331 //    }
02332 }

void checkspecandstringbefore  ) 
 

???

Definition at line 357 of file do1.cxx.

References L.

Referenced by insertnd().

00358 {
00359     L("--checkspecandstringbefore is a NOP--\n");
00360 }

typecorecrum* checkthebleedingcrum typecorecrum crumptr  ) 
 

???

(to be defined)

Definition at line 1903 of file test.cxx.

References grimreaper, L, NULL, and typecorecrum.

01905 {
01906 #ifndef DISTRIBUTION
01907     if (grimreaper == NULL)
01908         L("grimreaper tests null");
01909 
01910     return crumptr;
01911 
01912 //    assert(crumptr != NULL); // checkbleeding NULL crum
01913 //    
01914 //    if (crumptr->cenftype != GRAN && crumptr->cenftype != SPAN && crumptr->cenftype != POOM) {
01915 //        L("Bad enftype in check the bleeding crum\n\n\n");
01916 //        dump(crumptr);
01917 //        assert(0); // Bad enftype
01918 //    }
01919 //    
01920 //    if (!crumptr->isapex&&crumptr->leftbroorfather..disowned.. && crumptr->cenftype != crumptr->leftbroorfather->cenftype) {
01921 //        dump(crumptr);
01922 //        L("\n\n\n and here comes the spanf \n");
01923 //        dumpsubtree(spanf);
01924 //        dump(crumptr);
01925 //        assert(0); // Enftype mismatch
01926 //    }
01927 //    
01928 //    if (crumptr->cenftype !=GRAN) {
01929 //        if (!tumblercheck(&crumptr->cdsp.dsas[V]))
01930 //            assert(0); // cleckbleeding disp V
01931 //
01932 //        if (!tumblercheck(&crumptr->cdsp.dsas[I]))
01933 //            assert(0); // cleckbleeding disp I
01934 //    }
01935 //    return crumptr;
01936 #endif
01937 }

int checkwholesubtree typecuc father  ) 
 

???

(to be defined)

Definition at line 788 of file test.cxx.

References check(), dumpsubtree(), typecuc::height, L, typecuc::leftson, and typecorecrumhedr::rightbro.

Referenced by makegappm().

00790 {
00791 #ifndef DISTRIBUTION
00792     //UNUSED typecorecrum *ptr;
00793 
00794     return 0;
00795 
00796 #ifdef UndEfIneD
00797     if (!father)
00798         return 0;
00799 
00800     if (check(father)) {
00801         L("found something bad in checkwholesubtree\n");
00802         dumpsubtree(father);
00803 
00804         // assert(0); // in checkwholesubtree
00805         return 1;
00806     }
00807 
00808     if (father->height <= 0)
00809         return 0;
00810 
00811     for (ptr = father->leftson; ptr; ptr = ptr->rightbro)
00812         if (checkwholesubtree(ptr))
00813             return 1;
00814 
00815     return 0;
00816 #endif
00817 #endif
00818 }

void cleanupvspanlist Session sess,
typevspanset vspansetptr
 

void closeberts Session sess  ) 
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 401 of file bert.cxx.

References berttable, bertentry::created, deleteversion(), bertentry::documentid, efree(), L, bertentry::modified, conscell::next, NULL, NUMBEROFBERTTABLE, bertentry::sess, and conscell::stuff.

Referenced by quitxanadu(), and xanadu().

00402                                      : User's session context
00403 {
00404 #ifndef DISTRIBUTION
00405     L("closeberts:  sess = 0x%08lX\n", (int) sess);
00406 #endif
00407 
00408     conscell *oldptr = NULL;
00409     int i;
00410     for (i = 0; i < NUMBEROFBERTTABLE; i++) {
00411         conscell *p;
00412         for (p = berttable[i]; p && p->stuff; p = p->next) {
00413             bertentry *bert = p->stuff;
00414             if (bert->sess == sess) {
00415                 int status = bert->modified && bert->created;
00416                 if (status)
00417                     deleteversion(&bert->documentid);
00418 
00419                 efree((char *)p->stuff);
00420 
00421                 conscell *temp;
00422                 if (oldptr == NULL) {
00423                     temp = berttable[i];
00424                     berttable[i] = berttable[i]->next;
00425                     efree((char *) temp);
00426                     return;
00427                 } else {
00428                     temp = oldptr->next;
00429                     oldptr->next = p->next;
00430                     efree((char *) temp);
00431                     return;
00432                 }
00433             }
00434             oldptr = p;
00435         }
00436     }
00437 }

void closediskfile  ) 
 

???

(to be defined)

Definition at line 480 of file disk.cxx.

References assert, diskallocexit(), and enffiledes.

Referenced by flagquitting(), indiskexit(), and main().

00481 {
00482     diskallocexit(enffiledes);
00483     if (close(enffiledes) != 0) {
00484         perror("close in closediskfile");
00485         assert(0); // close failed
00486     }
00487 }

int comparecrumsdiagonally typecorecrum a,
typecorecrum b
 

???

(to be defined)

Definition at line 503 of file recombine.cxx.

References typecorecrumhedr::cdsp, typewid::dsas, tumbleradd, tumblercmp(), and typecorecrum.

Referenced by splitcrumsp().

00506 {
00507     Tumbler amagnitude, bmagnitude;
00508 
00509     tumbleradd(&a->cdsp.dsas[0], &a->cdsp.dsas[1], &amagnitude);
00510     tumbleradd(&b->cdsp.dsas[0], &b->cdsp.dsas[1], &bmagnitude);
00511     return (tumblercmp(&amagnitude, &bmagnitude));
00512 }

void context2span Context context,
typespan restrictionspanptr,
int  idx1,
typespan foundspanptr,
int  idx2
 

???

(to be defined)

Definition at line 393 of file context.cxx.

References typewid::dsas, GREATER, index2itemid(), typespan::itemid, LESS, movetumbler, typespan::next, NULL, prologuecontextnd(), typespan::stream, tumbleradd, tumblercmp(), tumblerincrement(), tumblerintdiff(), tumblersub(), typedsp, and typespan::width.

Referenced by span2spanset().

00399 {
00400     Tumbler upperbound, lowerbound;
00401     typedsp grasp, reach;
00402 
00403 /* int i; */
00404 
00405 /* foo("entering context2span\n"); */
00406 /* foocontext("context = \n",context); */
00407 /* foospanset("restrictionspan = \n",restrictionspanptr); */
00408 
00409     movetumbler(&restrictionspanptr->stream, &lowerbound);
00410     tumbleradd(&lowerbound, &restrictionspanptr->width, &upperbound);
00411     prologuecontextnd(context, &grasp, &reach);
00412 /* footumbler("lowerbound = \n",&lowerbound); */
00413 /* footumbler("upperbound = \n",&upperbound); */
00414     if (tumblercmp(&grasp.dsas[idx1], &lowerbound) == LESS) {
00415 /* foo("LESSER\n"); */
00416 /* foodsp("grasp = \n",&grasp,POOM); */
00417         tumblerincrement(&grasp.dsas[idx2], 0, (int) tumblerintdiff(&lowerbound, &grasp.dsas[idx1]), &grasp.dsas[idx2]);
00418 /* foodsp("grasp = \n",&grasp,POOM); */
00419     }
00420     if (tumblercmp(&reach.dsas[idx1], &upperbound) == GREATER) {
00421 /* foo("GREATER\n"); */
00422 /* foodsp("reach = \n",&reach,POOM); */
00423         tumblerincrement(&reach.dsas[idx2], 0,  /* i= */
00424                          -tumblerintdiff(&reach.dsas[idx1], &upperbound), &reach.dsas[idx2]);
00425 /* foodec("tumblerintdiff = ",i); */
00426 /* foodsp("reach = \n",&reach,POOM); */
00427     }
00428 /* foodsp("grasp = \n",&grasp,POOM); */
00429 /* foodsp("reach = \n",&reach,POOM); */
00430     movetumbler(&grasp.dsas[idx2], &foundspanptr->stream);
00431     tumblersub(&reach.dsas[idx2], &grasp.dsas[idx2], &foundspanptr->width);
00432 /* footumbler("foundspanwidth = \n",&foundspanptr->width); */
00433     foundspanptr->itemid = index2itemid(idx2, context);
00434     foundspanptr->next = NULL;
00435 /* foospanset("leaving context2span with foundspan = \n",foundspanptr); */
00436 }

bool context2vstuff Session sess,
Context context,
typeispan ispanptr,
typevstuffset vstuffsetptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 493 of file context.cxx.

References ADDRESSID, context2vtext(), Context::contextinfo, typewid::dsas, foo(), foocontext(), typebottomcruminfo::granbottomcruminfo, GRANORGL, GRANTEXT, typegranbottomcruminfo::infotype, movetumbler, NULL, TEXTID, ContextBase::totaloffset, typeispan, typelink, typevstuffset, and WIDTH.

Referenced by ispan2vstuffset().

00494                                            : User's session context
00495     Context       *context,
00496     typeispan     *ispanptr,
00497     typevstuffset *vstuffsetptr)
00498 {
00499     typevstuffset vstuffset = NULL;
00500 
00501 #ifndef DISTRIBUTION
00502     foo("context2stuff\n");
00503 #endif
00504 
00505     int contextinfotype = context->contextinfo.granbottomcruminfo.infotype;
00506 
00507     if (contextinfotype != GRANTEXT && contextinfotype != GRANORGL)
00508         return false;
00509 
00510     switch (contextinfotype) {
00511     case GRANTEXT:
00512         vstuffset = (typevstuffset) new(sess) typetext;
00513 //        vstuffset = (typevstuffset) sess->alloc(sizeof(typetext));
00514 
00515         ((typeitemheader *) vstuffset)->next = NULL;
00516 #ifndef DISTRIBUTION
00517         foocontext("context after item= ", context);
00518 #endif
00519         ((typeitemheader *) vstuffset)->itemid = TEXTID;
00520         context2vtext(context, ispanptr, vstuffset);
00521         if (((typetext *) vstuffset)->length == 0)
00522             return false;
00523         break;
00524 
00525     case GRANORGL:
00526         vstuffset = (typevstuffset) new(sess) typeaddress;
00527 //        vstuffset = (typevstuffset) sess->alloc(sizeof(typeaddress));
00528 
00529         ((typeitemheader *) vstuffset)->next = NULL;
00530 #ifndef DISTRIBUTION
00531         foocontext("context after item= ", context);
00532 #endif
00533         ((typeitemheader *) vstuffset)->itemid = ADDRESSID;
00534         movetumbler(&context->totaloffset.dsas[WIDTH], &((typelink *) vstuffset)->address);
00535     }
00536 
00537     *vstuffsetptr = vstuffset;
00538     return true;
00539 }

void contextfree Context context  ) 
 

???

(to be defined)

Definition at line 136 of file context.cxx.

References c2dontextnum, contextnum, ContextBase::contexttype, efree(), GRAN, and ContextBase::nextcontext.

Referenced by finddocscontainingsp(), isaexistsgr(), ispan2vstuffset(), link2sporglset(), retrievesporglsetinrange(), span2spanset(), and sporglset2linksetinrange().

00138 {
00139     Context *c;
00140 
00141     for (; (c = context) != 0;) {
00142         if (c->contexttype == GRAN) {
00143             --contextnum;
00144         } else {
00145             --c2dontextnum;
00146         }
00147 
00148         context = (Context *) context->nextcontext;;
00149         efree((char *)c);
00150     }
00151 }

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 }

typecorecrum* createcrum int  crumheight,
int  enftype
 

???

(to be defined)

Definition at line 865 of file credel.cxx.

References createcruminternal(), grimreaper, typecorecrumhedr::nextcrum, NULL, typecorecrumhedr::prevcrum, and typecorecrum.

Referenced by createenf(), initkluge(), inorglinternal(), insertcbcnd(), insertseq(), levelpush(), makecutsbackuptohere(), peelcrumoffnd(), peeloffcorrectson(), peelsoncorrectly(), splitcrumseq(), and varunpackloaf().

00868 {
00869     typecorecrum *ptr = createcruminternal(crumheight, enftype, (typecorecrum *) NULL);
00870 
00871     if (grimreaper) {
00872         ptr->nextcrum                  = grimreaper;
00873         ptr->prevcrum                  = grimreaper->prevcrum;
00874         grimreaper->prevcrum->nextcrum = ptr;
00875         grimreaper->prevcrum           = ptr;
00876     } else
00877         grimreaper = ptr->nextcrum = ptr->prevcrum = ptr;
00878 
00879     return ptr;
00880 }

CrumContext* createcrumcontext typecorecrum crumptr,
typedsp offsetptr
 

???

(to be defined)

Definition at line 161 of file context.cxx.

References CrumContext::corecrum, crumcontextnum, CRUMCONTEXTTAG, eallocwithtag(), movewisp, CrumContext::nextcrumcontext, NULL, reserve(), CrumContext::totaloffset, typecorecrum, and typedsp.

Referenced by findcbcseqcrum().

00164 {
00165     reserve(crumptr);
00166     CrumContext *ret = (CrumContext *) eallocwithtag(sizeof(CrumContext), CRUMCONTEXTTAG);
00167     ret->nextcrumcontext = NULL;
00168     ret->corecrum = (typecbc *) crumptr;
00169     movewisp(offsetptr, &ret->totaloffset);
00170     ++crumcontextnum;
00171     return ret;
00172 }

typecuc* createenf int  enftype  ) 
 

???

(to be defined)

Definition at line 833 of file credel.cxx.

References adopt(), typecuc::cenftype, createcrum(), GRAN, GRANNULL, ivemodified(), SON, and typecorecrum.

Referenced by createorglgr(), and initsession().

00835 {
00836     typecuc *fullcrumptr = (typecuc *) createcrum(1, enftype);
00837 
00838     fullcrumptr->cenftype   = enftype;
00839     fullcrumptr->isapex     = true;
00840     fullcrumptr->isleftmost = true;
00841 
00842     typecorecrum *ptr = createcrum(0, enftype);
00843 
00844     adopt(ptr, SON, (typecorecrum *) fullcrumptr);
00845     if (enftype == GRAN)
00846         ((typecbc *) ptr)->cinfo.infotype = GRANNULL;   /* KLUGE will this work?? */
00847 
00848     ivemodified(ptr);
00849 
00850 /* if(enftype == GRAN){ levelpush(fullcrumptr); adopt (createcrum(0,enftype), RIGHTBRO, fullcrumptr->leftson);
00851  * adopt(createcrum(0,enftype),SON,fullcrumptr->leftson->rightbro); ptr = fullcrumptr->leftson->leftson;
00852  * tumblerincrement(&(ptr->cwid.dsas[WIDTH]),2,1,&(ptr->cwid.dsas[WIDTH])); setwispupwards(ptr,1); } */
00853 
00854     return fullcrumptr;
00855 }

bool createorglgr Session sess,
typegranf  fullcrumptr,
typehint hintptr,
IStreamAddr isaptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 266 of file granf2.cxx.

References createenf(), typediskloafptr::diskblocknumber, typegranorgl::diskorglptr, DISKPTRNULL, findisatoinsertgr(), GRANORGL, typegranbottomcruminfo::granstuff, typegranbottomcruminfo::infotype, insertseq(), typediskloafptr::insidediskblocknumber, typegranorgl::orglincore, typegranorgl::orglptr, typegranstuff::orglstuff, POOM, rejuvinate, reserve(), and typecorecrum.

Referenced by createorglingranf().

00267                                          : User's session context
00268     typegranf    fullcrumptr,
00269     typehint    *hintptr,
00270     IStreamAddr *isaptr)
00271 {
00272     typegranbottomcruminfo locinfo;
00273 
00274     if (!findisatoinsertgr((typecuc *) fullcrumptr, hintptr, isaptr))
00275         return false;
00276 
00277     locinfo.infotype = GRANORGL;
00278     locinfo.granstuff.orglstuff.orglptr = createenf(POOM);
00279     reserve((typecorecrum *) locinfo.granstuff.orglstuff.orglptr);
00280 
00281     locinfo.granstuff.orglstuff.orglincore                        = true;
00282     locinfo.granstuff.orglstuff.diskorglptr.diskblocknumber       = DISKPTRNULL;
00283     locinfo.granstuff.orglstuff.diskorglptr.insidediskblocknumber = 0;
00284 
00285     insertseq((typecuc *) fullcrumptr, isaptr, &locinfo);
00286     rejuvinate((typecorecrum *) locinfo.granstuff.orglstuff.orglptr);
00287 
00288     return true;
00289 }

bool createorglingranf Session sess,
typegranf  granfptr,
typehint hintptr,
IStreamAddr isaptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 156 of file granf1.cxx.

References createorglgr().

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

00157                                          : User's session context
00158     typegranf    granfptr,
00159     typehint    *hintptr,
00160     IStreamAddr *isaptr)
00161 {
00162     return createorglgr(sess, /* GRR not defd (typecuc*) */ granfptr, hintptr, isaptr);
00163 }

void crumcontextfree CrumContext context  ) 
 

???

(to be defined)

Definition at line 182 of file context.cxx.

References CrumContext::corecrum, crumcontextnum, efree(), CrumContext::nextcrumcontext, rejuvinate, and typecorecrum.

Referenced by fetchorglgr(), and insertseq().

00184 {
00185     CrumContext *c;
00186 
00187     for (; (c = context) != 0; context = context->nextcrumcontext, efree((char *)c)) {
00188         rejuvinate((typecorecrum *) c->corecrum);
00189         --crumcontextnum;
00190     }
00191 }

bool cutinthiscrumnd typecorecrum ptr,
typewid offset,
typeknives knives
 

int deallocateinloaf typeuberdiskloaf loafp,
int  insidediskblocknumber
 

void deletend typecuc fullcrumptr,
Tumbler origin,
Tumbler width,
int  index
 

???

(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 }

bool deletevspanpm Session sess,
Tumbler docisaptr,
typeorgl  docorgl,
typevspan vspanptr
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 324 of file orglinks.cxx.

References deletend(), iszerotumbler, logbertmodified(), typespan::stream, typevspan, V, and typespan::width.

Referenced by dodeletevspan().

00325                                        : User's session context
00326     Tumbler   *docisaptr,
00327     typeorgl   docorgl,
00328     typevspan *vspanptr)
00329 {
00330     if (iszerotumbler(&vspanptr->width))
00331         return false;
00332 
00333     deletend((typecuc *) docorgl, &vspanptr->stream, &vspanptr->width, V);
00334     logbertmodified(sess, docisaptr);
00335 
00336     return true;
00337 }

typediskloafptr diskalloc  ) 
 

???

(to be defined)

Definition at line 114 of file diskalloc.cxx.

References assert, Diskheader::bitmap, BITMAPSIZE, typediskloafptr::diskblocknumber, diskheader, typediskloafptr::insidediskblocknumber, mask, maximumsetupsize, and maximumsetupsizehasbeenhit.

Referenced by partialdiskalloc(), and savepartialdiskalloctabletodisk().

00117 {
00118     int i, j;
00119     typediskloafptr ret;
00120 
00121     for (i = 0; i < BITMAPSIZE && !diskheader.bitmap[i]; ++i)
00122         ;
00123 
00124     if (i == BITMAPSIZE)
00125         assert(0); // Out of diskalloc bitmap space
00126 
00127     for (j = 0; j < 8; ++j) {
00128         if (diskheader.bitmap[i] & mask[j]) {
00129             diskheader.bitmap[i] = diskheader.bitmap[i] & ~mask[j];
00130             break;
00131         }
00132     }
00133     ret.diskblocknumber = i * 8 + j;
00134     ret.insidediskblocknumber = 0 /* 1 */ ;
00135 
00136     if (maximumsetupsize && ret.diskblocknumber >= maximumsetupsize)
00137         maximumsetupsizehasbeenhit = true;
00138 
00139     return ret;
00140 }

void diskallocexit int  fd  ) 
 

???

(to be defined)

Definition at line 244 of file diskalloc.cxx.

References diskheader, Diskheader::hasenftops, savepartialdiskalloctabletodisk(), and writeallocinfo().

Referenced by closediskfile().

00246 {
00247     diskheader.hasenftops = true;
00248     savepartialdiskalloctabletodisk();
00249     writeallocinfo(fd);
00250 }

void diskexit  ) 
 

???

(to be defined)

Definition at line 130 of file corediskout.cxx.

References indiskexit().

Referenced by frontenddied(), and quitxanadu().

00131 {
00132     indiskexit();
00133 }

void diskflush  ) 
 

???

(to be defined)

Definition at line 144 of file corediskout.cxx.

References granf, initkluge(), spanf, and writeenfilades().

Referenced by main().

00145 {
00146     writeenfilades();
00147     initkluge((typecuc **) &granf, (typecuc **) &spanf);
00148 }

void diskfree typediskloafptrdigit  loafptr  ) 
 

???

(to be defined)

Definition at line 151 of file diskalloc.cxx.

References assert, Diskheader::bitmap, diskheader, DISKPTRNULL, goodblock(), mask, and typediskloafptrdigit.

Referenced by changerefcount(), and readpartialdiskalloctablefromdisk().

00153 {
00154     if (loafptr == DISKPTRNULL)
00155         return;
00156 
00157     if (!goodblock(loafptr))
00158         assert(0); // Unallocated block in diskfree
00159 
00160     diskheader.bitmap[loafptr / 8] = diskheader.bitmap[loafptr / 8] | mask[loafptr % 8];
00161 }

void diskset typediskloafptrdigit  loafptr  ) 
 

???

(to be defined)

Definition at line 171 of file diskalloc.cxx.

References assert, Diskheader::bitmap, diskheader, DISKPTRNULL, goodblock(), mask, and typediskloafptrdigit.

Referenced by deletefullcrumandgarbageddescendents().

00173 {
00174     if (loafptr == DISKPTRNULL)
00175         return;
00176 
00177     if (!goodblock(loafptr))
00178         assert(0); // Unallocated block in diskfree
00179 
00180     diskheader.bitmap[loafptr / 8] = diskheader.bitmap[loafptr / 8] & ~mask[loafptr % 8];
00181 }

void disown typecorecrum crumptr  ) 
 

???

(to be defined)

Definition at line 625 of file genf.cxx.

References assert, disownnomodify(), dump(), isfullcrum(), ivemodified(), typecorecrum, and weakfindfather.

Referenced by deletend(), eatbrossubtreend(), eatbrossubtreeseq(), newpeelcrumoffnd(), peelcrumoffnd(), splitcrumseq(), subtreefree(), takenephewnd(), takeovernephewsnd(), and takeovernephewsseq().

00627 {
00628     typecuc *father;
00629 
00630     if (isfullcrum(crumptr)) {
00631 #ifndef DISTRIBUTION
00632         dump(crumptr);
00633         assert(0); // can't disownnomodify fullcrum
00634 #else
00635         assert(0);
00636 #endif
00637     }
00638 
00639     if (!(father = weakfindfather(crumptr))) {
00640 #ifndef DISTRIBUTION
00641         dump(crumptr);
00642         assert(0); // disownnomodify called without a father
00643 #else
00644         assert(0);
00645 #endif
00646     }
00647 
00648     disownnomodify(crumptr);
00649     ivemodified((typecorecrum *) father);
00650 }

void disownnomodify typecorecrum crumptr  ) 
 

???

(to be defined)

Definition at line 660 of file genf.cxx.

References assert, dump(), findleftbro(), findrightbro, isfullcrum(), typecorecrumhedr::leftbroorfather, typecuc::leftson, NULL, typecuc::numberofsons, typecorecrumhedr::rightbro, typecorecrum, and weakfindfather.

Referenced by disown(), and loaffree().

00662 {
00663     typecuc *father;
00664     typecorecrum *left, *right;
00665 
00666     if (isfullcrum(crumptr)) {
00667 #ifndef DISTRIBUTION
00668         dump(crumptr);
00669         assert(0); // can't disownnomodify fullcrum
00670 #else
00671         assert(0);
00672 #endif
00673     }
00674 
00675     if (!(father = weakfindfather((typecorecrum *) crumptr))) {
00676 #ifndef DISTRIBUTION
00677         dump((typecorecrum *) crumptr);
00678         assert(0); // disownnomodify called without a father
00679 #else
00680         assert(0);
00681 #endif
00682     }
00683 
00684     right = findrightbro(crumptr);
00685     father->numberofsons -= 1;
00686 
00687     if (crumptr->isleftmost) {
00688         father->leftson = right;
00689         if (right) {
00690             right->leftbroorfather = (typecorecrum *) father;
00691             right->isleftmost = true;
00692         }
00693     } else {                           /* has left brother */
00694         left = findleftbro(crumptr);
00695         left->rightbro = right;
00696         if (right) {
00697             right->leftbroorfather = left;
00698         }
00699     }
00700     crumptr->leftbroorfather = crumptr->rightbro = NULL;
00701 /* ivemodified(father) ; *//*for now till we remove this */
00702 }

void displaycutspm typeknives knivesptr  ) 
 

???

(to be defined)

Definition at line 1365 of file test.cxx.

References typeknives::blades, L, typeknives::nblades, and puttumbler().

Referenced by makeithcutonson().

01367 {
01368 #ifndef DISTRIBUTION
01369     int i;
01370 
01371     L("%x cuts:", knivesptr->nblades);
01372     for (i = 0; i < knivesptr->nblades; ++i) {
01373         L("\n       ");
01374         puttumbler(stderr, &knivesptr->blades[i]);
01375     }
01376     L("\n");
01377 #endif
01378 }

bool doappend Session sess,
IStreamAddr doc_isa,
typetextset  textset
 

Append text to a document.

Append a set of text strings onto the end of the text space of a document, returning an indicator of success.

Parameters:
sess  Input: User's session context
doc_isa  Input: Identifier of document
textset  Input: Set of text strings

Definition at line 148 of file do1.cxx.

References appendpm(), and typetextset.

Referenced by sourceunixcommand().

00149                                    : User's session context
00150     IStreamAddr *doc_isa, 
00151     typetextset  textset) 
00152 {
00153     return appendpm(sess, doc_isa, textset);
00154 }

void docidandvstream2tumbler Tumbler docid,
Tumbler vstream,
Tumbler tumbleptr
 

???

(to be defined)

Definition at line 1010 of file tumble.cxx.

References Tumbler::mantissa, movetumbler, and NPLACES.

Referenced by makespanpair().

01014 {
01015     int i, j;
01016 
01017     movetumbler(docid, tumbleptr);
01018     for (i = NPLACES - 1; i >= 0; i--) {
01019         if (tumbleptr->mantissa[i]) {
01020             ++i;
01021             break;
01022         }
01023     }
01024     for (j = 0; i < NPLACES && j < NPLACES;)
01025         tumbleptr->mantissa[++i] = vstream->mantissa[j++];
01026 }

bool doclose Session sess,
IStreamAddr tp
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 548 of file bert.cxx.

References dumptumbler(), ERR_CLOSE_WO_OPEN, Session::errorcode, L, and removefromopen().

Referenced by docreatenewversion(), and myclose().

00549                                          : User's session context
00550     IStreamAddr *tp)
00551 {
00552 #ifndef DISTRIBUTION
00553     L("doclose: sess = %d  tp = ", (int) sess);
00554     dumptumbler(tp);
00555     L("\n");
00556 #endif
00557 
00558     if (!removefromopen(sess, tp)) {
00559         sess->errorcode = ERR_CLOSE_WO_OPEN; // Attempted close of a document that was never opened
00560         return false;
00561     }
00562 
00563     return true;                       /* for now, so as to not upset front-end */
00564 }

bool docopy Session sess,
IStreamAddr docisaptr,
Tumbler vsaptr,
typespecset  specset
 

Virtually copy (transclude) some material into a document.

The material determined by the specification set provided is copied to the document at the V-stream address given.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
vsaptr  Input: Place within document to receive copy
specset  Input: Set of places from which to copy

Definition at line 193 of file do1.cxx.

References acceptablevsa(), asserttreeisok(), DOCISPAN, findorgl(), granf, graphwholetree(), insertpm(), insertspanf(), L, NOBERTREQUIRED, putitemset(), puttumbler(), spanf, specset2ispanset(), typecorecrum, typeispanset, typeorgl, typespecset, and WRITEBERT.

Referenced by copy(), docreatelink(), doinsert(), and domakelink().

00194                                      : User's session context
00195     IStreamAddr *docisaptr, 
00196     Tumbler     *vsaptr,    
00197     typespecset  specset)   
00198 {
00199     bool f;
00200 
00201     L("(specset2ispanset p=0x%08X)\n", (int) specset); putitemset(sess, (typeitem *) specset);  L(")\n");
00202 
00203     // Convert the specification set into a set of spans into the I-stream.
00204     typeispanset ispanset;
00205     f = specset2ispanset(sess, specset, &ispanset, NOBERTREQUIRED);
00206     if (!f) {
00207         L("(specset2ispanset FAILED)\n");
00208         return false;
00209     }
00210 
00211     L("ispanset is 0x%08X\n", (int) ispanset);
00212     L("(specset2ispanset ispanset=");  putitemset(sess, (typeitem *) ispanset);  L(")\n");
00213     L("(findorgl for docisa=");  puttumbler(stdout, docisaptr);  L(")\n");
00214 
00215     /*
00216      * Walk the granfilade to locate and lock, for writing, the document to receive
00217      * the copied material.
00218      */
00219 
00220     // Locate the document's ORGL within the Granfilade and
00221     // obtain a write lock on it.
00222     typeorgl docorgl;
00223     f = findorgl(sess, granf, docisaptr, &docorgl, WRITEBERT);
00224     if (!f) {
00225         L("(attempt to findorgl FAILED)\n");
00226         return false;
00227     }
00228 
00229     /*
00230      * Validate the V-stream address at which to insert the content for reasonableness.
00231      */ 
00232     L("(acceptablevsa)\n");
00233     f = acceptablevsa(vsaptr, docorgl);
00234     if (!f) {
00235         L("(acceptablevsa FAILED)\n");
00236         return false;
00237     }
00238 
00239     L("(asserttreeisok)\n");
00240     f = asserttreeisok((typecorecrum *) docorgl);
00241     if (!f) {
00242         L("(asserttreeisok FAILED)\n");
00243         return false;
00244     }
00245 
00246 //    L("---- Dump of Entire Granfilade Before Copy ----\n");
00247 //    dumpwholetree((typecorecrum *) granf);
00248     graphwholetree("/var/tmp/granf_before.dot", (typecorecrum *) granf, "Granfilade before Copy");
00249 
00250 //    L("---- End of Dump of Entire Granfilade Before Copy ----\n");
00251 
00252 //    L("---- Dump of Entire Spanfilade Before Copy ----\n");
00253 //    dumpwholetree((typecorecrum *) spanf);
00254     graphwholetree("/var/tmp/spanf_before.dot", (typecorecrum *) spanf, "Spanfilade before Copy");
00255 //    L("---- End of Dump of Entire Spanfilade Before Copy ----\n");
00256 
00257     /*
00258      *
00259      */
00260 
00261 /* the meat of docopy: */
00262     L("(insertpm)\n");
00263     f = insertpm(sess, docisaptr, docorgl, vsaptr, (typesporglitem *) ispanset);
00264     if (!f) {
00265         L("(insertpm FAILED)\n");
00266         return false;
00267     }
00268 
00269     L("(insertspanf)\n");
00270     f = insertspanf(sess, spanf, docisaptr, (typesporglitem *) ispanset, DOCISPAN);
00271     if (!f) {
00272         L("(insertspanf FAILED)\n");
00273         return false;
00274     }
00275 
00276     L("(asserttreeisok)\n");
00277     f = asserttreeisok((typecorecrum *) docorgl);
00278     if (!f) {
00279         L("(asserttreeisok FAILED)\n");
00280         return false;
00281     }
00282 
00283 //    L("---- Dump of Entire Granfilade After Copy ----\n");
00284 //    dumpwholetree((typecorecrum *) granf);
00285     graphwholetree("/var/tmp/granf_after.dot", (typecorecrum *) granf, "Granfilade after Copy");
00286 //    L("---- End of Dump of Entire Granfilade After Copy ----\n");
00287 
00288 //    L("---- Dump of Entire Spanfilade After Copy ----\n");
00289 //    dumpwholetree((typecorecrum *) spanf);
00290     graphwholetree("/var/tmp/spanf_after.dot", (typecorecrum *) spanf, "Spanfilade after Copy");
00291 //    L("---- End of Dump of Entire Spanfilade After Copy ----\n");
00292 
00293     return true;
00294 }

bool docopyinternal Session sess,
IStreamAddr docisaptr,
Tumbler vsaptr,
typespecset  specset
 

Virtually copy (transclude) some material into a document.

The material determined by the specification set provided is copied to the document at the V-stream address given.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
vsaptr  Input: Place within document to receive copy
specset  Input: Set of places from which to copy

Definition at line 304 of file do1.cxx.

References acceptablevsa(), asserttreeisok(), DOCISPAN, findorgl(), granf, insertpm(), insertspanf(), NOBERTREQUIRED, spanf, specset2ispanset(), typecorecrum, typeispanset, typeorgl, and typespecset.

Referenced by docreatenewversion().

00305                                      : User's session context
00306     IStreamAddr *docisaptr, 
00307     Tumbler     *vsaptr,    
00308     typespecset  specset)   
00309 {
00310     typeispanset ispanset;
00311 
00312     typeorgl docorgl;
00313 
00314     // Convert the specification set into a set of spans into the I-stream.
00315     return (specset2ispanset(sess, specset, &ispanset, NOBERTREQUIRED)
00316 
00317             && findorgl(sess, granf, docisaptr, &docorgl, NOBERTREQUIRED)
00318             && acceptablevsa(vsaptr, docorgl)
00319             && asserttreeisok((typecorecrum *) docorgl)
00320 
00321 /* the meat of docopy: */
00322             && insertpm(sess, docisaptr, docorgl, vsaptr, (typesporglitem *) ispanset)
00323 
00324             && insertspanf(sess, spanf, docisaptr, (typesporglitem *) ispanset, DOCISPAN)
00325             && asserttreeisok((typecorecrum *) docorgl)
00326             );
00327 }

bool docreatelink Session sess,
IStreamAddr docisaptr,
typespecset  fromspecset,
typespecset  tospecset,
typespecset  threespecset,
IStreamAddr linkisaptr
 

Create a 3-endpoint link between parts of documents.

Create a link within the specified document, -from- a set of spans, -to- a set of spans, -of type- a set of spans.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document to contain link
fromspecset  Input: Specification set of 'From' end
tospecset  Input: Specification set of 'To' end
threespecset  Input: Specification set of 'Three' end
linkisaptr  Input: I-stream address of new link

Definition at line 428 of file do1.cxx.

References ATOM, createorglingranf(), docopy(), DOCUMENT, findnextlinkvsa(), findorgl(), granf, insertendsetsinorgl(), insertendsetsinspanf(), LINKATOM, makehint(), NOBERTREQUIRED, setlinkvsas(), spanf, specset2sporglset(), tumbler2spanset(), typeorgl, typespanset, typespecset, and typesporglset.

Referenced by createlink().

00429                                         : User's session context
00430     IStreamAddr *docisaptr,    
00431     typespecset  fromspecset,  
00432     typespecset  tospecset,    
00433     typespecset  threespecset, 
00434     IStreamAddr *linkisaptr)   
00435 {
00436     Tumbler       linkvsa, fromvsa, tovsa, threevsa;
00437     typespanset   ispanset;
00438     typesporglset fromsporglset;
00439     typesporglset tosporglset;
00440     typesporglset threesporglset;
00441     typeorgl      link;
00442 
00443     typehint hint;
00444     makehint(DOCUMENT, ATOM, LINKATOM, docisaptr, &hint);
00445 
00446     return createorglingranf(sess, granf, &hint, linkisaptr)
00447             && tumbler2spanset(sess, linkisaptr, &ispanset)
00448             && findnextlinkvsa(sess, docisaptr, &linkvsa)
00449             && docopy(sess, docisaptr, &linkvsa, (typespec *) ispanset)
00450             && findorgl(sess, granf, linkisaptr, &link, /* WRITEBERT ECH 7-1 */ NOBERTREQUIRED)
00451             && specset2sporglset(sess, fromspecset, &fromsporglset, NOBERTREQUIRED)
00452             && specset2sporglset(sess, tospecset, &tosporglset, NOBERTREQUIRED)
00453             && specset2sporglset(sess, threespecset, &threesporglset, NOBERTREQUIRED)
00454             && setlinkvsas(&fromvsa, &tovsa, &threevsa)
00455             && insertendsetsinorgl(sess, linkisaptr, link, &fromvsa, fromsporglset, &tovsa, tosporglset, &threevsa,
00456                                    threesporglset)
00457             && insertendsetsinspanf(sess, spanf, linkisaptr, fromsporglset, tosporglset, threesporglset)
00458             ;
00459 }

bool docreatenewdocument Session sess,
IStreamAddr isaptr
 

Create a new, empty document.

Create a new, empty and unopened document within the user's document space and return its identifier.

Create a new document under the account and node of the user who issued the request. Return the global identifier for the document.

This request creates the document but does not open it for access; you must issue an open request (see below) to access the data in the new document.

Parameters:
sess  Input: User's session context
isaptr  Output: I-stream address of new, empty document

Definition at line 493 of file do1.cxx.

References Session::account, ACCOUNT, createorglingranf(), DOCUMENT, granf, and makehint().

Referenced by createnewdocument(), and sourceunixcommand().

00494                                   : User's session context
00495     IStreamAddr *isaptr) 
00496 {
00497     typehint hint;
00498     makehint(ACCOUNT, DOCUMENT, 0, &sess->account, &hint);
00499 
00500     return createorglingranf(sess, granf, &hint, isaptr);
00501 }

bool docreatenewversion Session sess,
IStreamAddr isaptr,
IStreamAddr wheretoputit,
IStreamAddr newisaptr
 

Create a new version of a document and return its identifier.

Create a new version of a document and return its identifier. The new version of the document will contain a virtual copy of the original.

Parameters:
sess  Input: User's session context
isaptr  Input: Identifier of document to fork
wheretoputit  Input: User account under which to create copy
newisaptr  Output: I-stream address of new version

Definition at line 553 of file do1.cxx.

References ACCOUNT, assert, BERTMODEONLY, createorglingranf(), typevspec::docisa, doclose(), docopyinternal(), DOCUMENT, doopen(), doretrievedocvspanfoo(), granf, isthisusersdocument(), typevspec::itemid, makehint(), movetumbler, typevspec::next, NULL, typespan::stream, tumbleraccounteq(), typevspan, typevspec::vspanset, VSPECID, and WRITEBERT.

Referenced by createnewversion(), and doopen().

00554                                         : User's session context
00555     IStreamAddr *isaptr,       
00556     IStreamAddr *wheretoputit, 
00557     IStreamAddr *newisaptr)    
00558 {
00559     IStreamAddr newtp;      /* for internal open */
00560 
00561     // Test for ownership to do the right thing for explicit creation of new
00562     // version of someone else's document
00563     typehint hint;
00564     if (tumbleraccounteq(isaptr, wheretoputit) && isthisusersdocument(sess, isaptr)) {
00565         makehint(DOCUMENT, DOCUMENT, 0, isaptr /* wheretoputit */ , &hint);
00566     } else {
00567         // This does the right thing for a new version of someone else's
00568         // document, as it duplicates the behavior of docreatenewdocument
00569         makehint(ACCOUNT, DOCUMENT, 0, wheretoputit, &hint);
00570     }
00571 
00572     if (!createorglingranf(sess, granf, &hint, newisaptr))
00573         return false;
00574 
00575     // Determine the full span of the parent document, to know the range to
00576     // copy into the newly created version.
00577 
00578     typevspan vspan;
00579     if (!doretrievedocvspanfoo(sess, isaptr, &vspan))
00580         return false;
00581 
00582     typevspec vspec;
00583     vspec.next     = NULL;
00584     vspec.itemid   = VSPECID;
00585     movetumbler(isaptr, &vspec.docisa);
00586     vspec.vspanset = &vspan;
00587 
00588     // BERTMODEONLY to prevent recursive createnewversions
00589     if (!doopen(sess, newisaptr, &newtp, WRITEBERT, BERTMODEONLY))
00590         assert(0); // Couldn't do internal doopen for new doc in docreatenewversion
00591 
00592     // Map (copy virtually) the entire content of the original document into
00593     // V-stream of the newly created version.
00594     docopyinternal(sess, newisaptr, &vspan.stream, (typespec *) &vspec);
00595     doclose(sess, newisaptr);
00596 
00597     return true;
00598 }

bool docreatenode_or_account Session sess,
IStreamAddr isaptr
 

Create a new node or account identifier.

Create a new node or account identifier, globally, and return its identifier.

Declare that id-account is a legal account or node. If id-account is an account tumbler, then the backend creates the account. If it is a node tumbler, then the backend reassigns its own address to id-account.

Parameters:
sess  Input: User's session context
isaptr  Output: I-stream address of new node or account

Definition at line 515 of file do1.cxx.

References createorglingranf(), granf, makehint(), NODE, and tumblercopy().

Referenced by createnode_or_account().

00516                                   : User's session context
00517     IStreamAddr *isaptr) 
00518 {
00519     IStreamAddr  isa;
00520     tumblercopy(isaptr, &isa);
00521 
00522     typehint hint;
00523     makehint(NODE, NODE, 0, /* &sess->account */ &isa, &hint);
00524 
00525     return createorglingranf(sess, granf, &hint, &isa);
00526 }

bool dodeletevspan Session sess,
IStreamAddr docisaptr,
typevspan vspanptr
 

Delete a range of text from a document.

Remove the specified span of text from a document, shuffling down the text that follows that position.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
vspanptr  Input: Span of text to be deleted

Definition at line 370 of file do1.cxx.

References deletevspanpm(), findorgl(), granf, typeorgl, typevspan, and WRITEBERT.

Referenced by deletevspan().

00371                                      : User's session context
00372     IStreamAddr *docisaptr, 
00373     typevspan   *vspanptr)  
00374 {
00375     typeorgl docorgl;
00376 
00377     if (findorgl(sess, granf, docisaptr, &docorgl, WRITEBERT))
00378         return deletevspanpm(sess, docisaptr, docorgl, vspanptr);
00379 
00380     return false;
00381 }

void dodumpistreamgr typecuc crumptr,
Tumbler offsetptr
 

???

(to be defined)

Definition at line 1761 of file test.cxx.

References typecuc::cwid, typewid::dsas, dumpmoleculegr(), findleftson(), typecuc::height, typecorecrumhedr::rightbro, tumbleradd, typecorecrum, and WIDTH.

Referenced by dumpistreamgr().

01764 {
01765 #ifndef DISTRIBUTION
01766     typecorecrum *ptr;
01767 
01768     if (crumptr->height == 0) {
01769         dumpmoleculegr(offsetptr, (typecbc *) crumptr);
01770         tumbleradd(offsetptr, &crumptr->cwid.dsas[WIDTH], offsetptr);
01771         return;
01772     }
01773 
01774     for (ptr = findleftson(crumptr); ptr; ptr = ptr->rightbro)
01775         dodumpistreamgr((typecuc *) ptr, offsetptr);
01776 #endif
01777 }

bool dofinddocscontaining Session sess,
typespecset  specset,
typelinkset addresssetptr
 

Find documents containing any of the material specified.

Return a list of all documents containing any of the material specified by the V-stream specification set, regardless of where the native copies are located.

Parameters:
sess  Input: User's session context
specset  Input: Set of specifications
addresssetptr  Output: Set of matching documents

Definition at line 126 of file do1.cxx.

References finddocscontainingsp(), NOBERTREQUIRED, specset2ispanset(), typeispanset, typelinkset, and typespecset.

Referenced by finddocscontaining().

00127                                          : User's session context
00128     typespecset  specset,       
00129     typelinkset *addresssetptr) 
00130 {
00131     typeispanset ispanset;
00132 
00133     // Convert the specification set into a set of spans into the I-stream.
00134     return specset2ispanset(sess, specset, &ispanset, NOBERTREQUIRED)
00135 
00136     // Search for documents containing those spans
00137             && finddocscontainingsp(sess, ispanset, addresssetptr);
00138 }

bool dofindlinksfromtothree Session sess,
typespecset  fromvspecset,
typespecset  tovspecset,
typespecset  threevspecset,
typeispan orglrangeptr,
typelinkset linksetptr
 

Return a list of links that meet a specific set of endpoint criteria.

Return a list of all links which are (1) from any or all part of the -from- set, (2) to any or all part of the -to- set and -three- set, and (3) in the home of ORGLs. This is an AND-relation in that all qualifications must be met.

Parameters:
sess  Input: User's session context
fromvspecset  Input: Specification of the From endpoint
tovspecset  Input: Specification of the To endpoint
threevspecset  Input: Specification of the Three endpoint
orglrangeptr  Input: a Range of document ORGLs
linksetptr  Output: Set of links meeting qualifications

Definition at line 675 of file do1.cxx.

References findlinksfromtothreesp(), spanf, typeispan, typelinkset, and typespecset.

Referenced by findlinksfromtothree().

00676                                          : User's session context
00677     typespecset  fromvspecset,  
00678     typespecset  tovspecset,    
00679     typespecset  threevspecset, 
00680     typeispan   *orglrangeptr,  
00681     typelinkset *linksetptr)    
00682 {
00683     return findlinksfromtothreesp(sess, spanf, fromvspecset, tovspecset, threevspecset, orglrangeptr, linksetptr);
00684 }

bool dofindnextnlinksfromtothree Session sess,
typevspec fromvspecptr,
typevspec tovspecptr,
typevspec threevspecptr,
typeispan orglrangeptr,
IStreamAddr lastlinkisaptr,
typelinkset nextlinksetptr,
int *  nptr
 

Return a subset of links that meet a specific set of endpoint criteria.

Return a subset of all links which are (1) from any or all part of the -from- set, (2) to any or all part of the -to- set and -three- set, and (3) in the home of ORGLs. This is an AND-relation in that all qualifications must be met.

Parameters:
sess  Input: User's session context
fromvspecptr  Input: Specification of the From endpoint
tovspecptr  Input: Specification of the To endpoint
threevspecptr  Input: Specification of the Three endpoint
orglrangeptr  Input: a range of document ORGLs
lastlinkisaptr  Input: last link addr from previous query
nextlinksetptr  Ouput: Set of links meeting qualifications
nptr  Input: Maximum count of links to return

Definition at line 717 of file do1.cxx.

References findnextnlinksfromtothreesp(), typeispan, and typelinkset.

Referenced by findnextnlinksfromtothree().

00718                                           : User's session context
00719     typevspec   *fromvspecptr,   
00720     typevspec   *tovspecptr,     
00721     typevspec   *threevspecptr,  
00722     typeispan   *orglrangeptr,   
00723     IStreamAddr *lastlinkisaptr, 
00724     typelinkset *nextlinksetptr, 
00725     int         *nptr)           
00726 {
00727     return findnextnlinksfromtothreesp(sess, (typespec *) fromvspecptr,
00728                (typespec *) tovspecptr, (typespec *) threevspecptr,
00729                orglrangeptr, lastlinkisaptr, nextlinksetptr, nptr);
00730 }

bool dofindnumoflinksfromtothree Session sess,
typespecset fromvspecset,
typespecset tovspecset,
typespecset threevspecset,
typeispan orglrangeptr,
int *  numptr
 

Return a count of links that meet a specific set of endpoint criteria.

Return a count of all links which are (1) from any or all part of the -from- set, (2) to any or all part of the -to- set and -three- set, and (3) in the home of ORGLs. This is an AND-relation in that all qualifications must be met.

Parameters:
sess  Input: User's session context
fromvspecset  Input: Specification of the From endpoint
tovspecset  Input: Specification of the To endpoint
threevspecset  Input: Specification of the Three endpoint
orglrangeptr  Input: a Range of document ORGLs
numptr  Output: Count of links meeting qualifications

Definition at line 695 of file do1.cxx.

References findnumoflinksfromtothreesp(), spanf, typeispan, and typespecset.

Referenced by findnumoflinksfromtothree().

00696                                          : User's session context
00697     typespecset *fromvspecset,  
00698     typespecset *tovspecset,    
00699     typespecset *threevspecset, 
00700     typeispan   *orglrangeptr,  
00701     int         *numptr)        
00702 {
00703     /*BUG: there is some inconsistency re arg 'fromvspecset' as whether it is (typespec *)[fn below] or (typespec **)[passed-in] */
00704     return findnumoflinksfromtothreesp(sess, spanf, (typespec *) fromvspecset, (typespec *) tovspecset, (typespec *) threevspecset, orglrangeptr, numptr);
00705 }

bool dofollowlink Session sess,
IStreamAddr linkisaptr,
typespecset specsetptr,
int  whichend
 

Return the specification set of one endpoint of a link.

Parameters:
sess  Input: User's session context
linkisaptr  Input: Identifier of link to query
specsetptr  Output: Specification of end specified
whichend  Input: Which end of the link to query

Definition at line 466 of file do1.cxx.

References link2sporglset(), linksporglset2specset(), NOBERTREQUIRED, typespecset, and typesporglset.

Referenced by followlink().

00467                                       : User's session context
00468     IStreamAddr *linkisaptr, 
00469     typespecset *specsetptr, 
00470     int          whichend)   
00471 {
00472     typesporglset sporglset;
00473 
00474     return link2sporglset(sess, linkisaptr, &sporglset, whichend, NOBERTREQUIRED)
00475             && linksporglset2specset(sess, &((typesporgl *) sporglset)->sporgladdress, sporglset, specsetptr, NOBERTREQUIRED);
00476 }

bool doinsert Session sess,
IStreamAddr docisaptr,
Tumbler vsaptr,
typetextset  textset
 

Insert a set of text strings into a document.

Insert a set of text strings into the specified place within a document, shoving down the text following that position.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
vsaptr  Input: Place within document to receive text
textset  Input: Set of text strings to insert

Definition at line 337 of file do1.cxx.

References ATOM, docopy(), DOCUMENT, granf, inserttextingranf(), makehint(), TEXTATOM, typespanset, and typetextset.

Referenced by appendpm(), and insert().

00338                                      : User's session context
00339     IStreamAddr *docisaptr, 
00340     Tumbler     *vsaptr,    
00341     typetextset  textset)   
00342 {
00343     typehint hint;
00344     makehint(DOCUMENT, ATOM, TEXTATOM, docisaptr, &hint);
00345 
00346     typespanset ispanset;
00347     return inserttextingranf(sess, granf, &hint, textset, &ispanset)
00348 
00349            && docopy(sess, docisaptr, vsaptr, (typespec *) ispanset);
00350 }

bool domakelink Session sess,
IStreamAddr docisaptr,
typespecset  fromspecset,
typespecset  tospecset,
IStreamAddr linkisaptr
 

Create a 2-endpoint link between parts of documents.

Create a link within the specified document, -from- a set of spans, -to- a set of spans.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document to contain link
fromspecset  Input: Specification set of 'From' end
tospecset  Input: Specification set of 'To' end
linkisaptr  Output: I-stream address of new link

Definition at line 391 of file do1.cxx.

References ATOM, createorglingranf(), docopy(), DOCUMENT, findnextlinkvsa(), findorgl(), granf, insertendsetsinorgl(), insertendsetsinspanf(), LINKATOM, makehint(), NOBERTREQUIRED, NULL, setlinkvsas(), spanf, specset2sporglset(), tumbler2spanset(), typeorgl, typespanset, typespecset, typesporglset, and WRITEBERT.

00392                                        : User's session context
00393     IStreamAddr *docisaptr,   
00394     typespecset  fromspecset, 
00395     typespecset  tospecset,   
00396     IStreamAddr *linkisaptr)  
00397 {
00398     Tumbler       linkvsa, fromvsa, tovsa;
00399     typespanset   ispanset;
00400     typesporglset fromsporglset;
00401     typesporglset tosporglset;
00402     typeorgl      link;
00403 
00404     typehint hint;
00405     makehint(DOCUMENT, ATOM, LINKATOM, docisaptr, &hint);
00406 
00407     return createorglingranf(sess, granf, &hint, linkisaptr)
00408             && tumbler2spanset(sess, linkisaptr, &ispanset)
00409             && findnextlinkvsa(sess, docisaptr, &linkvsa)
00410             && docopy(sess, docisaptr, &linkvsa, (typespec *) ispanset)
00411             && findorgl(sess, granf, linkisaptr, &link, WRITEBERT)
00412             && specset2sporglset(sess, fromspecset, &fromsporglset, NOBERTREQUIRED)
00413             && specset2sporglset(sess, tospecset, &tosporglset, NOBERTREQUIRED)
00414             && setlinkvsas(&fromvsa, &tovsa, NULL)
00415             && insertendsetsinorgl(sess, linkisaptr, link, &fromvsa, fromsporglset, &tovsa, tosporglset, NULL, NULL)
00416             && insertendsetsinspanf(sess, spanf, linkisaptr, fromsporglset, tosporglset, NULL)
00417             ;
00418 }

bool doopen Session sess,
IStreamAddr tp,
IStreamAddr newtp,
int  type,
int  mode
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 465 of file bert.cxx.

References Session::account, addtoopen(), assert, BERTMODECOPY, BERTMODECOPYIF, BERTMODEONLY, checkforopen(), docreatenewversion(), ERR_OPEN_COPY, Session::errorcode, incrementopen(), L, NOBERTREQUIRED, tumblercopy(), and WRITEBERT.

Referenced by docreatenewversion(), and myopen().

00466                                          : User's session context
00467     IStreamAddr *tp,
00468     IStreamAddr *newtp,
00469     int          type,
00470     int          mode)
00471 {
00472     L("Entered doopen()\n");
00473 
00474     if (type == NOBERTREQUIRED)
00475         return true;
00476 
00477     L("type != NOBERTREQUIRED\n");
00478 
00479     if (mode == BERTMODECOPY) {
00480         L("mode == BERTMODECOPY, trying to copy document\n");
00481 
00482         if (docreatenewversion(sess, tp, &sess->account, newtp)) {
00483             addtoopen(sess, newtp, true, type);
00484             return true;
00485         } else {
00486             sess->errorcode = ERR_OPEN_COPY; // Attempt to make a copy to open failed
00487             return false;
00488         }
00489     }
00490 
00491     L("about to call checkforopen()\n");
00492 
00493     int openState = checkforopen(sess, tp, type);
00494 
00495     L("returned from call to checkforopen(), openState = %d\n", openState);
00496 
00497     if (openState == 0) {
00498         L("already open in R/O, just trying to inc open count\n");
00499 
00500         addtoopen(sess, tp, false, type);
00501         tumblercopy(tp, newtp);
00502         return true;
00503     }
00504 
00505     switch (mode) {
00506     case BERTMODECOPYIF:
00507         if (openState == -1) { // Document not already open
00508             if (docreatenewversion(sess, tp, &sess->account, newtp)) {
00509                 addtoopen(sess, newtp, true, type);
00510             } else {
00511                 sess->errorcode = ERR_OPEN_COPY; // Attempt to make a copy to open failed
00512                 return false;
00513             }
00514 
00515         } else if (type != WRITEBERT && openState != WRITEBERT) { // Open another Shared Read-Open Reference
00516             incrementopen(sess, tp);
00517             tumblercopy(tp, newtp);
00518 
00519         } else { // Document is already open, Open a new copy
00520             docreatenewversion(sess, tp, &sess->account, newtp);
00521             addtoopen(sess, newtp, true, type);
00522         }
00523         return true;
00524 
00525     case BERTMODEONLY:
00526         if (openState == -1 || type == WRITEBERT || openState == WRITEBERT) {
00527             return false;
00528         } else {
00529             incrementopen(sess, tp);
00530             tumblercopy(tp, newtp);
00531             return true;
00532         }
00533 
00534     default:
00535         assert(0); // DEFAULT CASE IN DOOPEN
00536         return false;
00537     }
00538 }

bool dorearrange Session sess,
IStreamAddr docisaptr,
typecutseq cutseqptr
 

Transpose two regions of text within a document.

Transpose two regions of text, using a set of 'cuts' within a document. Cuts are V-stream addresses within a particular document. There can be three of four entries in the cut set. If three cuts are supplied, the two regions being transposed are from cut 1 to cut 2, and from cut 2 to cut 3, assuming cut 1 < cut 2 < cut 3. If four cuts are supplied, the regions are from cut 1 to cut 2, and from cut 3 to cut 4, again assuming cut 1 < cut 2 < cut 3 < cut 4.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
cutseqptr  Input: Sequence of cuts

Definition at line 169 of file do1.cxx.

References findorgl(), granf, rearrangepm(), typeorgl, and WRITEBERT.

Referenced by rearrange().

00170                                      : User's session context
00171     IStreamAddr *docisaptr, 
00172     typecutseq  *cutseqptr) 
00173 {
00174     // ORGL element on the Granfilade representing the particular document
00175     typeorgl docorgl;
00176 
00177     // Locate the document's ORGL within the Granfilade and
00178     // obtain a write lock on it.
00179     return findorgl(sess, granf, docisaptr, &docorgl, WRITEBERT)
00180 
00181     // Actually perform the rearrangement of text.
00182             && rearrangepm(sess, docisaptr, docorgl, cutseqptr);
00183 }

bool doretrievedocvspan Session sess,
IStreamAddr docisaptr,
typevspan vspanptr
 

Return the total span of text and links within a document.

Return a V-stream span representing the full size of both the text and link streams.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
vspanptr  Input: Span of V-stream to query for content

Definition at line 608 of file do1.cxx.

References findorgl(), granf, READBERT, retrievevspanpm(), typeorgl, and typevspan.

Referenced by findnextlinkvsa(), and retrievedocvspan().

00609                                      : User's session context
00610     IStreamAddr *docisaptr, 
00611     typevspan   *vspanptr)  
00612 {
00613     typeorgl docorgl;
00614 
00615     return findorgl(sess, granf, docisaptr, &docorgl, READBERT)
00616             && retrievevspanpm(sess, docorgl, vspanptr);
00617 }

bool doretrievedocvspanset Session sess,
IStreamAddr docisaptr,
typevspanset vspansetptr
 

Return the total span of text and links within a document.

Return a set of V-stream spans, one representing the full size of the text stream, and one representing the full size of the link stream.

To-Fix: This function should not fail on an empty doc but instead return an empty result set. It also should return a set for each type of data, even when there are none of that type.

Parameters:
sess  Input: User's session context
docisaptr  Input: Identifier of document
vspansetptr  Input: Set of V-stream spans to query

Definition at line 630 of file do1.cxx.

References findorgl(), granf, isemptyorgl(), READBERT, retrievevspansetpm(), typeorgl, and typevspanset.

Referenced by retrievedocvspanset().

00631                                         : User's session context
00632     IStreamAddr  *docisaptr,   
00633     typevspanset *vspansetptr) 
00634 {
00635     typeorgl docorgl;
00636 
00637     if (findorgl(sess, granf, docisaptr, &docorgl, READBERT)) {
00638         if (!isemptyorgl(docorgl)) {
00639             if (retrievevspansetpm(sess, docorgl, vspansetptr)) {
00640                 return true;
00641             }
00642         }
00643     }
00644     return false;
00645 }

bool doretrieveendsets Session sess,
typespecset  specset,
typespecset fromsetptr,
typespecset tosetptr,
typespecset threesetptr
 

Return a list of all link end-sets in the specification set.

Parameters:
sess  Input: User's session context
specset  Input: Specification set
fromsetptr  Output: List of all From sets in specification
tosetptr  Output: List of all To sets in specification
threesetptr  Output: List of all Three sets in specifiations

Definition at line 737 of file do1.cxx.

References retrieveendsetsfromspanf(), and typespecset.

Referenced by retrieveendsets().

00738                                        : User's session context
00739     typespecset  specset,     
00740     typespecset *fromsetptr,  
00741     typespecset *tosetptr,    
00742     typespecset *threesetptr) 
00743 {
00744     return retrieveendsetsfromspanf(sess, specset, fromsetptr, tosetptr, threesetptr);
00745 }

bool doretrievev Session sess,
typespecset  specset,
typevstuffset vstuffsetptr
 

Return the text and links from set of places within a document.

Return actual content from a document.

Parameters:
sess  Input: User's session context
specset  Input: Set of specifications from which to obtain content
vstuffsetptr  Output: Set of content items queried

Definition at line 654 of file do1.cxx.

References granf, ispanset2vstuffset(), READBERT, specset2ispanset(), typeispanset, typespecset, and typevstuffset.

Referenced by assertspecisstring(), and retrievev().

00655                                           : User's session context
00656     typespecset    specset,      
00657     typevstuffset *vstuffsetptr) 
00658 {
00659     typeispanset ispanset;
00660 
00661     // Convert the specification set into a set of spans into the I-stream.
00662     return specset2ispanset(sess, specset, &ispanset, READBERT)
00663             && ispanset2vstuffset(sess, granf, ispanset, vstuffsetptr);
00664 }

bool doshowrelationof2versions Session sess,
typespecset  version1,
typespecset  version2,
typespanpairset relation
 

???

Return a list of ordered pairs of the spans of the two spec sets that correspond

Parameters:
sess  Input: User's session context
version1  Input: Specification of version 1 document
version2  Input: Specification of version 2 document
relation  Output: List of corresponding spans

Definition at line 754 of file do1.cxx.

References intersectspansets(), ISPANID, ispansetandspecsets2spanpairset(), NULL, READBERT, specset2ispanset(), typeispanset, typespanpairset, and typespecset.

Referenced by showrelationof2versions().

00755                                         : User's session context
00756     typespecset      version1, 
00757     typespecset      version2, 
00758     typespanpairset *relation) 
00759 {
00760     typeispanset version1ispans = NULL;
00761     typeispanset version2ispans = NULL;
00762     typeispanset commonispans   = NULL;
00763 
00764     // Convert the specification set into a set of spans into the I-stream.
00765     return specset2ispanset(sess, version1, &version1ispans, READBERT)
00766             && specset2ispanset(sess, version2, &version2ispans, READBERT)
00767             && intersectspansets(sess, version1ispans, version2ispans, &commonispans, ISPANID)
00768             && ispansetandspecsets2spanpairset(sess, commonispans, version1, version2, relation);
00769 }

void doshowspanf typecorecrum crumptr,
typedsp offsetptr,
int  enfheight
 

???

(to be defined)

Definition at line 1472 of file test.cxx.

References typecorecrumhedr::cdsp, typecorecrumhedr::cenftype, dspadd(), findleftson(), typecorecrumhedr::height, NULL, typecorecrumhedr::rightbro, showspanfcrum(), typecorecrum, and typedsp.

Referenced by showspanf().

01476 {
01477 #ifndef DISTRIBUTION
01478     typecorecrum *ptr = NULL;
01479     typedsp loffset;
01480 
01481     showspanfcrum(crumptr, offsetptr, enfheight);
01482     if (crumptr->height <= 0)
01483         return;
01484 
01485     dspadd(offsetptr, &crumptr->cdsp, &loffset, crumptr->cenftype);
01486     for (ptr = findleftson((typecuc *) crumptr); ptr; ptr = ptr->rightbro)
01487         doshowspanf(ptr, &loffset, enfheight);
01488 #endif
01489 }

void dspadd typedsp a,
typewisp b,
typedsp c,
int  enftype
 

???

(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().

00097 {
00098     lockadd(a->dsas, b->dsas, c->dsas, (unsigned)dspsize(enftype));
00099 }

void dspsub typedsp a,
typewisp b,
typedsp c,
int  enftype
 

???

(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 }

void dump typecorecrum ptr  ) 
 

???

(to be defined)

Definition at line 860 of file test.cxx.

References typecorecrumhedr::cenftype, dumphedr(), dumpinfo(), typecorecrumhedr::height, L, and typecorecrum.

Referenced by assertsonswispmatchesfather(), assertsubtreeisok(), check(), checkmodifiednotthere(), disown(), disownnomodify(), dumpsubtree(), dumpwholesubtree(), findleftson(), foocrum(), funcrejuvinate(), inorglinternal(), isreapable(), makecontextfromcbc(), makegappm(), makeithcutonson(), slicecbcpm(), subtreewriterecurs(), testforreservedness(), tumblercheckptr(), varpackloaf(), varunpackloaf(), and yesdump().

00862 {
00863 #ifndef DISTRIBUTION
00864     L("\n");
00865     dumphedr(ptr);
00866 
00867     if (ptr->height) {
00868         L("sonorigin = %x insideloaf %x  leftson = %x  #sons = %x\n",
00869                 ((typecuc *) ptr)->sonorigin.diskblocknumber, ((typecuc *) ptr)->sonorigin.insidediskblocknumber,
00870                 (int) ((typecuc *) ptr)->leftson, ((typecuc *) ptr)->numberofsons);
00871     } else {
00872         dumpinfo(&((typecbc *) ptr)->cinfo, ptr->cenftype);
00873     }
00874 #endif
00875 }

void dumpcontext Context context  ) 
 

???

(to be defined)

Definition at line 2042 of file test.cxx.

References Context::contextinfo, ContextBase::contexttype, ContextBase::contextwid, debug, dumpdsp(), dumpinfo(), dumpwid(), enftypestring(), L, NULL, and ContextBase::totaloffset.

Referenced by analyzeanddebug(), dumpcontextlist(), foocontext(), and makecontextfromcbc().

02044 {
02045 #ifndef DISTRIBUTION
02046     L("  context %x:\n", (int) context);
02047 
02048     if (context == NULL) {
02049         L("NULL context\n");
02050         return;
02051     }
02052 
02053     L("    contexttype %s\n", enftypestring(context->contexttype));
02054     L("    totaloffset ");
02055     dumpdsp(&context->totaloffset, context->contexttype);
02056 
02057     L("    contextwid ");
02058     dumpwid(&context->contextwid, context->contexttype);
02059 
02060     if (debug > 1) {
02061         L("    contextinfo ");
02062         dumpinfo((typegranbottomcruminfo *) &context->contextinfo, context->contexttype);
02063     }
02064 #endif
02065 }

void dumpcontextlist Context context  ) 
 

???

(to be defined)

Definition at line 2017 of file test.cxx.

References dumpcontext(), L, and ContextBase::nextcontext.

Referenced by foocontextlist().

02019 {
02020 #ifndef DISTRIBUTION
02021     L("contextlist :\n");
02022 
02023     if (!context) {
02024         L("  contextlist NULL\n");
02025         return;
02026     }
02027 
02028     for (; context; context = (Context *) context->nextcontext) {
02029         dumpcontext(context);
02030     }
02031 #endif
02032 }

void dumpdsp typewid dspptr,
int  enftype
 

???

(to be defined)

Definition at line 1218 of file test.cxx.

References typewid::dsas, dspsize, L, and puttumbler().

Referenced by dumpcontext(), dumphedr(), and foodsp().

01221 {
01222 #ifndef DISTRIBUTION
01223     int i;
01224 
01225 /* if (enftype == GRAN) return; */
01226     int nstreams = dspsize(enftype);
01227     L("dsp = < ");
01228     for (i = 0; i < nstreams; ++i) {
01229         if (i > 0)
01230             L(" , ");
01231         puttumbler(stderr, &dspptr->dsas[i]);
01232     }
01233     L(" >\n");
01234 #endif
01235 }

bool dumpgranfwids Session sess  ) 
 

???

(to be defined)

Parameters:
sess  Input: User's session context

Definition at line 1572 of file test.cxx.

References granf, Session::inp, L, puttumbler(), showgranwids(), tumblereq(), typecorecrum, and WIDTH.

01573                                      : User's session context
01574 {
01575 #ifndef DISTRIBUTION
01576     Tumbler subtreewid;
01577     //UNUSED int fullheight;
01578 
01579 /* fullheight = ((typecorecrum *)granf)->height; */
01580     showgranwids((typecorecrum *) granf, 0, &subtreewid);
01581     if (!tumblereq(&subtreewid, &((typecorecrum *) granf)->cwid.dsas[WIDTH])) {
01582 
01583         L("Granfilade fullcrum wid and widded enfilade don\'t match.\n");
01584         L("gran fullcrum wid ");
01585         puttumbler(stderr, &((typecorecrum *) granf)->cwid.dsas[WIDTH]);
01586 
01587         L("\nreturned wid from subtree ");
01588         puttumbler(stderr, &subtreewid);
01589 
01590         L("\nHit \"<return>\" to continue, \"a<return>\" to abort ");
01591         if (getc(sess->inp) == 'a')
01592             abort();
01593     }
01594     L("\n");
01595 #endif
01596     return true;
01597 }

void dumphedr typecorecrumhedr ptr  ) 
 

???

(to be defined)

Definition at line 1117 of file test.cxx.

References typecorecrumhedr::age, typecorecrumhedr::cdsp, typecorecrumhedr::cenftype, typecorecrumhedr::cwid, dumpdsp(), dumpwid(), GRAN, typecorecrumhedr::height, L, typecorecrumhedr::leftbroorfather, typecorecrumhedr::nextcrum, POOM, typecorecrumhedr::rightbro, and SPAN.

Referenced by dump().

01119 {
01120 #ifndef DISTRIBUTION
01121     char *temp;
01122 
01123     switch (ptr->cenftype) {
01124     case GRAN:  temp = "GRAN";  break;
01125     case SPAN:  temp = "SPAN";  break;
01126     case POOM:  temp = "POOM";  break;
01127     default:    temp = "????";  L(" %d ", ptr->cenftype); break;
01128     }
01129 
01130     const char *full = (ptr->isapex ? "full" : "");
01131 
01132 //                   ===GRAN fullcrum height=0
01133 //  00000000 <  coreaddr@xxxxxxxx  > 00000000
01134 //            | age=dd  modified=1  next@xxxxxxxx
01135 //            | dsp = < 0 >
01136 //            | wid = < 1.7.0.9.0.1.0.1 >
01137 //            \         v               /
01138 //                  00000000
01139 
01140 //            /--GRAN fullcrum h=0
01141 //  00000000 <  coreaddr@xxxxxxxx  > 00000000
01142 //            | age=dd  modified=1  next@xxxxxxxx
01143 //            | dsp = < 0 >
01144 //            | wid = < 1.7.0.9.0.1.0.1 >
01145 //            \         v               /
01146 //                  00000000
01147 
01148 
01149 
01150     L("%s %scrum core location = %x\n", temp, full, (int) ptr);
01151     L("height = %x nextcrum = %x  modified = %x\n", ptr->height, (int) ptr->nextcrum, ptr->modified);
01152     L(" age = %x ", ptr->age);
01153     L("isleftmost = %x leftbro = %x rightbro = %x\n", ptr->isleftmost, (int) ptr->leftbroorfather, (int) ptr->rightbro);
01154 
01155     dumpdsp(&ptr->cdsp, ptr->cenftype);
01156     dumpwid(&ptr->cwid, ptr->cenftype);
01157 #endif
01158 }

void dumphexstuff char *  ptr  ) 
 

???

(to be defined)

Definition at line 2384 of file test.cxx.

References L.

Referenced by findandallocateinsidediskblocknumber(), and varunpackloaf().

02386 {
02387 #ifndef DISTRIBUTION
02388     int i;
02389 
02390     L("\n");
02391 
02392     for (i = 0; i < 120; i++)
02393         L("%x ", *(ptr + i) & 0xff);
02394     L("\n");
02395 #endif
02396 }

void dumphint typehint hintptr  ) 
 

???

(to be defined)

Definition at line 1388 of file test.cxx.

References typehint::atomtype, typehint::hintisa, L, puttumbler(), typehint::subtype, and typehint::supertype.

01390 {
01391 #ifndef DISTRIBUTION
01392     L("\nHINT\n");
01393     L("  supertype: %d\n", hintptr->supertype);
01394     L("  subtype:   %d\n", hintptr->subtype);
01395     L("  atomtype:  %d\n", hintptr->atomtype);
01396     L("  isa:       ");
01397     puttumbler(stderr, &hintptr->hintisa);
01398     L("\n");
01399 #endif
01400 }

void dumpinfo typegranbottomcruminfo infoptr,
int  enftype
 

???

(to be defined)

Definition at line 1294 of file test.cxx.

References assert, typegranorgl::diskorglptr, GRAN, GRANNULL, GRANORGL, typegranbottomcruminfo::granstuff, GRANTEXT, typegranbottomcruminfo::infotype, L, typegranorgl::orglptr, typegranstuff::orglstuff, puttumbler(), typegrantext::textstring, and typegranstuff::textstuff.

Referenced by dump(), and dumpcontext().

01297 {
01298 #ifndef DISTRIBUTION
01299     if (enftype == GRAN) {
01300         switch (infoptr->infotype) {
01301         case GRANTEXT:
01302             L("text:  %s\n", infoptr->granstuff.textstuff.textstring);
01303             break;
01304         case GRANORGL:
01305             L(" diskorgl %x, ", infoptr->granstuff.orglstuff.diskorglptr);
01306             L("orgl %x\n ", (int) infoptr->granstuff.orglstuff.orglptr);
01307             break;
01308         case GRANNULL:
01309             L("GRANNULL info\n");
01310             break;
01311         default:
01312             L("empty infotype: %d\n", infoptr->infotype);
01313             assert(0); // bad in dumpinfo
01314         }
01315     } else {
01316         L("home document: ");
01317         puttumbler(stderr, &((type2dbottomcruminfo *) infoptr)->homedoc);
01318         L("\n");
01319     }
01320 #endif
01321 }

void dumpisagr Tumbler offsetptr  ) 
 

???

(to be defined)

Definition at line 1815 of file test.cxx.

References Tumbler::exp, L, Tumbler::mantissa, movetumbler, NPLACES, nstories(), puttumbler(), and TABSTOP.

01817 {
01818 #ifndef DISTRIBUTION
01819     int i, j, k;
01820     Tumbler offset;
01821 
01822     movetumbler(offsetptr, &offset);
01823 
01824     i = nstories(&offset) - offset.exp;
01825     i += i - 1;
01826     for (j = 0; j < NPLACES; ++j)
01827         for (k = offset.mantissa[j]; k /= 10; ++i)
01828             ;
01829 
01830     i = TABSTOP - i;
01831     if (i < 2) {
01832         L("too long");
01833         i = 8;
01834     } else
01835         puttumbler(stderr, &offset);
01836 
01837     while (i--)
01838         L(" ");
01839 #endif
01840 }

void dumpistreamgr typecuc crumptr  ) 
 

???

(to be defined)

Definition at line 1739 of file test.cxx.

References debug, dodumpistreamgr(), and tumblerclear.

Referenced by showistream().

01741 {
01742 #ifndef DISTRIBUTION
01743     Tumbler offset;
01744 
01745     if (debug < 5)
01746         return;
01747 
01748     tumblerclear(&offset);
01749     dodumpistreamgr(crumptr, &offset);
01750 #endif
01751 }

void dumpitem typeitem itemptr