Annotation of researchv10dc/cmd/ideal/ideal.h, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include "stdas.h"
        !             3: #include <math.h>
        !             4: 
        !             5: extern double modf();
        !             6: 
        !             7: #define TRUE   1
        !             8: #define FALSE  0
        !             9: typedef int    boolean;
        !            10: 
        !            11: #define EPSILON 0.0001
        !            12: #define        INFINITY        1e30
        !            13: #define INTERSIZE      20
        !            14: #define        POSSINTER       2
        !            15: 
        !            16: #define        MAXX    0
        !            17: #define        MAXY    1
        !            18: #define        MINX    2
        !            19: #define        MINY    3
        !            20: 
        !            21: #define known(x) (!(((DEPPTR)x->left)->var || ((DEPPTR)x->right)->var))
        !            22: #define fabs(z)        ((z>0)?z:-(z))
        !            23: #define        iabs(z) ((z>0)?z:-(z))
        !            24: #define max(x,y) (((x)>(y))?(x):(y))
        !            25: #define min(x,y) (((x)<(y))?(x):(y))
        !            26: #define Re(z)  ((DEPPTR)z->left)->coeff
        !            27: #define Im(z)  ((DEPPTR)z->right)->coeff
        !            28: #define        ISREAL(z)       (z->re_name > 0)
        !            29: #define        THENAME(z)      (iabs(z->re_name))
        !            30: #define        arecollinear(a,b,c,d,e,f)       (fabs((f-b)*(c-a)-(e-a)*(d-b))<EPSILON)
        !            31: #define        between(ax,ay,bx,by,cx,cy)      ((ax-bx)*(bx-cx) > 0 || (ay-by)*(by-cy) > 0)
        !            32: 
        !            33: extern int when_bug;
        !            34: extern boolean dbg;
        !            35: #define bug_on dbg = TRUE
        !            36: #define bug_off        dbg = FALSE
        !            37: #define dprintf        if (dbg) fprintf(stderr,
        !            38: 
        !            39: extern char *filename;
        !            40: extern int lineno;
        !            41: #define        LIBFIL  1
        !            42: #define        SILENT  2
        !            43: #define        CHATTY  3
        !            44: 
        !            45: extern boolean radflag;
        !            46: extern boolean wantout;
        !            47: #define dtor(x)        x *= PI/180
        !            48: #define rtod(x)        x *= 180/PI
        !            49: 
        !            50: /* these are codes for classification of intersection points */
        !            51: #define        UNUSED          0
        !            52: #define        SIMPLE          1
        !            53: #define        AT0             2
        !            54: #define        AT1             3
        !            55: #define        COLLINEAR       4
        !            56: #define        ON0             5
        !            57: #define        ON1             6
        !            58: #define        TANGENT         7
        !            59: 
        !            60: /* these are codes for setting up the list of intersections */
        !            61: #define        INHERIT         0
        !            62: /*
        !            63: #define        SIMPLE          1
        !            64: */
        !            65: #define        EXTREMUM        2
        !            66: #define        INFLECTION      3
        !            67: #define        EXT0            4
        !            68: #define        EXT1            5
        !            69: #define        INFL0           6
        !            70: #define        INFL1           7
        !            71: #define        IGNORE          8
        !            72: 
        !            73: #define        INBEGIN         0
        !            74: #define        OUTBEGIN        1
        !            75: #define        ONBEGIN         2
        !            76: 
        !            77: /* structure definitions for data structures */
        !            78: typedef char *EXPR;
        !            79: #define        tryfree(doomed) free((char *)doomed)
        !            80: 
        !            81: typedef struct stmtnode {      /* hooks together stmts in bodies */
        !            82:        struct stmtnode *next;
        !            83:        EXPR stmt;
        !            84:        int kind;
        !            85:        } STMTNODE, *STMTPTR;
        !            86: 
        !            87: typedef struct boxnode {       /* hooks together box definitions */
        !            88:        struct boxnode *next;
        !            89:        int name;
        !            90:        STMTPTR stmtlist;
        !            91:        } BOXNODE, *BOXPTR;
        !            92: 
        !            93: typedef struct namenode {      /* holds var lists and path names */
        !            94:        struct namenode *next;
        !            95:        int name;
        !            96:        } NAMENODE, *NAMEPTR;
        !            97: 
        !            98: typedef struct exprnode {      /* points to equations and bdlists */
        !            99:        struct exprnode *next;
        !           100:        EXPR expr;
        !           101:        } EXPRNODE, *EXPRPTR;
        !           102: 
        !           103: typedef struct putnode {       /* put statements */
        !           104:        int name;
        !           105:        BOXPTR parm;
        !           106:        int p_or_c;
        !           107:        } PUTNODE, *PUTPTR;
        !           108: 
        !           109: typedef struct pen_node {      /* conn ... using statements */
        !           110:        EXPR from,
        !           111:                to,
        !           112:                copies,
        !           113:                start,
        !           114:                end;
        !           115:        BOXPTR pen;
        !           116:        } PEN_NODE, *PENPTR;
        !           117: 
        !           118: typedef struct miscnode {      /* opaque, draw handling */
        !           119:        int info;
        !           120:        } MISCNODE, *MISCPTR;
        !           121: 
        !           122: typedef struct strnode {       /* strings */
        !           123:        int command;
        !           124:        char *string;
        !           125:        EXPR at;
        !           126:        } STRNODE, *STRPTR;
        !           127: 
        !           128: typedef struct exprintl {      /* internal node of expr tree */
        !           129:        boolean leaf;   /* always FALSE */
        !           130:        boolean used;
        !           131:        int oper;
        !           132:        EXPR left;
        !           133:        EXPR right;
        !           134:        } EXPRINTL, *INTLPTR;
        !           135: 
        !           136: typedef struct exprextl {      /* external node of expr tree */
        !           137:        boolean leaf;   /* always TRUE */
        !           138:        boolean used;
        !           139:        union u {
        !           140:                struct namenode *path;
        !           141:                float const;
        !           142:        } info;
        !           143:        int kind;       /* should be one of PATH, CONST */
        !           144:        } EXPREXTL, *EXTLPTR;
        !           145: 
        !           146: typedef struct noad {  /* linked structures in which variables reside */
        !           147:        PUTPTR defnode;
        !           148:        struct varnode *edgevarlist;
        !           149:        struct varnode *boxvarlist;
        !           150:        struct linenode *linelist;
        !           151:        struct noad *father;
        !           152:        struct noad *brother;
        !           153:        struct noad *son;
        !           154:        } NOAD, *NOADPTR;
        !           155: 
        !           156: typedef struct varnode {       /* where ONE variable--the real or imag part of a var--lives */
        !           157:        struct varnode *next;
        !           158:        int re_name;    /* positive for real part, negative for imag part */
        !           159:        struct depnode *deplist;
        !           160:        } VARNODE, *VARPTR;
        !           161: 
        !           162: typedef struct depnode {       /* a term in the dependency list representation of a variable */
        !           163:        struct depnode *next;
        !           164:        VARPTR var;
        !           165:        float coeff;
        !           166:        } DEPNODE, *DEPPTR;
        !           167: 
        !           168: typedef struct linenode {      /* a line segment on linelist */
        !           169:        struct linenode *next;
        !           170:        int kind;       /* always LINE */
        !           171:        float x0,
        !           172:                y0,
        !           173:                x1,
        !           174:                y1;
        !           175:        } LINENODE, *LINEPTR;
        !           176: 
        !           177: typedef struct edgenode {      /* an edge of an opaque polygon */
        !           178:        struct edgenode *next,
        !           179:                *prev;
        !           180:        struct arcnode *fax;
        !           181:        boolean flipped;
        !           182:        float sx, sy,           /* start point */
        !           183:                ex, ey,         /* end point */
        !           184:                stx, sty,       /* coords of endpt of a tan vector at start */
        !           185:                etx, ety;       /* coords of endpt of a tan vector at end */
        !           186:        int code[POSSINTER];
        !           187:        float alpha[POSSINTER];
        !           188:        } EDGENODE, *EDGEPTR;
        !           189: 
        !           190: typedef struct circnode {      /* a circle on linelist */
        !           191:        struct linenode *next;
        !           192:        int kind;       /* always CIRCLE */
        !           193:        float x0,
        !           194:                y0,
        !           195:                r;
        !           196:        } CIRCNODE, *CIRCPTR;
        !           197: 
        !           198: typedef struct arcnode {       /* an arc on linelist */
        !           199:        struct linenode *next;
        !           200:        int kind;       /* always ARC */
        !           201:        float x0,
        !           202:                y0,
        !           203:                x1,
        !           204:                y1,
        !           205:                x2,
        !           206:                y2,
        !           207:                theta1,
        !           208:                theta2,
        !           209:                radius; /* TROFF figures out the center depending on sign of radius */
        !           210:        } ARCNODE, *ARCPTR;
        !           211: 
        !           212: typedef struct textnode {      /* a string on linelist */
        !           213:        struct linenode *next;
        !           214:        int kind,       /* always STRING */
        !           215:                command;
        !           216:        char *string;
        !           217:        float x0,
        !           218:                y0;
        !           219:        } TEXTNODE, *TEXTPTR;
        !           220: 
        !           221: typedef struct splnode {       /* a spline on linelist */
        !           222:        struct linenode *next;
        !           223:        int kind;       /* always SPLINE */
        !           224:        EXPRPTR knotlist;
        !           225:        } SPLNODE, *SPLPTR;
        !           226: 
        !           227: typedef struct eqnnode {       /* a non-linear equation residing on list */
        !           228:        struct eqnnode *next;
        !           229:        EXPR eqn;
        !           230:        NOADPTR noad;
        !           231:        } EQNNODE, *EQNPTR;
        !           232: 
        !           233: typedef struct opqnode {       /* an alpha or theta of intersection */
        !           234:        struct opqnode *next;
        !           235:        int code;
        !           236:        float alpha;
        !           237:        } OPQNODE, *OPQPTR;
        !           238: 
        !           239: /* routines in memut.c */
        !           240: extern STMTPTR stmtgen ();
        !           241: extern BOXPTR boxgen ();
        !           242: extern NAMEPTR namegen ();
        !           243: extern EXPRPTR exprgen ();
        !           244: extern PUTPTR putgen ();
        !           245: extern PENPTR pengen ();
        !           246: extern MISCPTR miscgen ();
        !           247: extern INTLPTR intlgen ();
        !           248: extern INTLPTR commagen ();
        !           249: extern EXTLPTR extlgen ();
        !           250: extern EXTLPTR fextlgen ();
        !           251: extern NOADPTR noadgen ();
        !           252: extern VARPTR vargen ();
        !           253: extern DEPPTR depgen ();
        !           254: extern LINEPTR linegen ();
        !           255: extern EDGEPTR edgeline ();
        !           256: extern LINEPTR circgen ();
        !           257: extern LINEPTR arcgen ();
        !           258: extern LINEPTR angularc ();
        !           259: extern LINEPTR pointarc ();
        !           260: extern EDGEPTR edgearc ();
        !           261: extern LINEPTR textgen ();
        !           262: extern LINEPTR splgen ();
        !           263: extern STRPTR strgen ();
        !           264: extern EQNPTR eqngen ();
        !           265: extern OPQPTR opqgen ();
        !           266: extern void nextfree ();
        !           267: extern void depfree ();
        !           268: extern void namefree ();
        !           269: extern void exprlsfree ();
        !           270: extern void linefree ();
        !           271: extern void intlfree ();
        !           272: extern void noadfree ();
        !           273: extern void varfree ();
        !           274: extern void exprfree ();
        !           275: extern void boxfree ();
        !           276: extern void emergency ();
        !           277: 
        !           278: /* routines in util.c */
        !           279: extern int lookup();
        !           280: extern char* idprint();
        !           281: extern BOXPTR findbox();
        !           282: extern INTLPTR varfind();
        !           283: extern INTLPTR pathfind();
        !           284: extern BOXPTR tail ();
        !           285: extern void forget ();
        !           286: extern void exprprint ();
        !           287: extern STMTPTR nextstmt ();
        !           288: extern EXPR bracket ();
        !           289: extern void depprint ();
        !           290: extern void dexch();
        !           291: extern void fexch();
        !           292: extern float rprin();
        !           293: extern float dprin();
        !           294: extern void angorder();
        !           295: extern STMTPTR reverse ();
        !           296: extern void impossible ();
        !           297: 
        !           298: /* routines in bldds.c */
        !           299: extern NOADPTR buildnoadtree();
        !           300: extern VARPTR buildvarlist();
        !           301: extern NOADPTR walkputlist();
        !           302: 
        !           303: /* routines in simul.c */
        !           304: extern DEPPTR depadd();
        !           305: extern DEPPTR depsubst();
        !           306: 
        !           307: /* routines in exprn.c */
        !           308: extern INTLPTR expreval();
        !           309: extern void eqndo();
        !           310: extern void depvarclean();
        !           311: extern void depvarkill();
        !           312: extern void eqneval();
        !           313: extern void nl_eval();
        !           314: 
        !           315: /* routines in action.c */
        !           316: extern LINEPTR build();
        !           317: extern LINEPTR connact();
        !           318: extern LINEPTR penact();
        !           319: extern LINEPTR drawact();
        !           320: extern LINEPTR stract();
        !           321: extern LINEPTR circact();
        !           322: extern LINEPTR arcact();
        !           323: extern LINEPTR splact();
        !           324: 
        !           325: /* routines in piece.c */
        !           326: extern void linecall ();
        !           327: extern void circcall ();
        !           328: extern void arccall ();
        !           329: extern void textcall ();
        !           330: extern void splcall ();
        !           331: extern void boundscall ();
        !           332: extern void bbline ();
        !           333: extern void bbcirc ();
        !           334: 
        !           335: /* routines in opaque.c */
        !           336: extern LINEPTR opqact();
        !           337: extern void opqinsert();
        !           338: extern LINEPTR lineclean();
        !           339: extern void halfplane();
        !           340: extern void triangle();
        !           341: 
        !           342: /* routines in inter.c */
        !           343: extern boolean llinter();
        !           344: extern boolean lcinter();
        !           345: extern boolean ccinter();
        !           346: 
        !           347: /* routines in opqpoly.c */
        !           348: extern void opqpoly();
        !           349: extern void polyline();
        !           350: extern void polyarc();
        !           351: extern void linetest();
        !           352: extern void arctest();
        !           353: 
        !           354: /* routines in opqcirc.c */
        !           355: extern void opqcirc();
        !           356: extern void circline();
        !           357: extern void circarc();
        !           358: 
        !           359: /* routines in opqsect.c */
        !           360: extern void opqsect();
        !           361: 
        !           362: /* routines in opqseg.c */
        !           363: extern void opqseg();
        !           364: 
        !           365: /* lexical analyzer routines */
        !           366: extern void filepush ();
        !           367: extern void filepop ();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.