home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / IRIT / IRITS.ZIP / DATAPRSL.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-05  |  3.2 KB  |  76 lines

  1. /*****************************************************************************
  2. *   "Irit" - the 3d polygonal solid modeller.                     *
  3. *                                         *
  4. * Written by:  Gershon Elber                Ver 0.2, Mar. 1990   *
  5. ******************************************************************************
  6. * General, local to module, definitions of DataPrsr goes to here:         *
  7. *****************************************************************************/
  8.  
  9. #ifndef    DATA_PRSR_LH
  10. #define    DATA_PRSR_LH
  11.  
  12. #define UNGET_STACK_SIZE    5             /* Internal stack size. */
  13.  
  14. /*****************************************************************************
  15. * Tokens definitions goes into here                         *
  16. *****************************************************************************/
  17. #define    TKN_OPEN_PARAN       1
  18. #define    TKN_CLOSE_PARAN       2
  19.  
  20. #define    TKN_NUMBER       10       /* Not used as number & names are decoded */
  21.                    /* according to their places in grammer.  */
  22.  
  23. #define    TKN_VERTEX       20
  24. #define    TKN_POLYGON       21
  25. #define    TKN_POLYLINE       22
  26. #define    TKN_OBJECT       23
  27.  
  28. #define    TKN_PLANE       30
  29. #define    TKN_INTERNAL       31
  30. #define    TKN_COLOR       32
  31.  
  32. #define    TKN_OTHER       100            /* Probably names & numbers. */
  33. #define    TKN_EOF       -1
  34.  
  35. /*****************************************************************************
  36. * And some more    definitions ...                             *
  37. *****************************************************************************/
  38. typedef    struct BinTree {       /* The entries are saved as binary trees. */
  39.      char Name[OBJ_NAME_LEN];
  40.      struct BinTree *Right, *Left;              /* Classic, isnt it !? */
  41.      union {
  42.       VoidPtr PVoid;           /* Help to assign without type... */
  43.       struct VertexStruct     *PVertex;
  44.       struct PolygonStruct     *PPolygon;
  45.      } U;
  46. } BinTree;
  47.  
  48. /*****************************************************************************
  49. * And finaly the prototypes of the local functions:                 *
  50. *****************************************************************************/
  51. static void DataPrsrPutMatObject(FILE *f, ObjectStruct *PObj);
  52. static void DataPrsrPutGeomObject(FILE *f, ObjectStruct *PObj);
  53. static ObjectStruct *DataPrsrGetGeomObject(FILE *f, char *ObjName);
  54. static ObjectStruct *DataPrsrGetMatObject(FILE *f);
  55. static void DPUpdatePolyPlane(PolygonStruct *PPoly);
  56. static struct BinTree * AllocBinTree(char *Name,
  57.                 BinTree * Right, BinTree * Left, VoidPtr Ptr);
  58. static void DataPrsrFreeAll(BinTree *VertexRoot, BinTree *PolygonRoot);
  59. static void DataPrsrFreeTree(BinTree *Root, int ObjType);
  60. static void UnGetToken(char *StringToken);
  61. static void GetStringToken(FILE *f, char *StringToken);
  62. static int GetToken(FILE *f, char *StringToken);
  63. static void EliminateComments(FILE *f);
  64. static void ParserError(int ErrNum, char *Msg);
  65. static void InsertBinTree(BinTree **Tree, BinTree *PNewRecord);
  66. static BinTree *GetBinTree(char *Name, BinTree *Tree);
  67. static struct VertexStruct *GetVertexList(FILE *f,
  68.                 struct BinTree *VertexRoot, int PolyType);
  69. static struct PolygonStruct *GetPolyList(FILE *f,
  70.                     struct BinTree *PolygonRoot);
  71. static void GetPolyAttr(FILE *f, PolygonStruct *PPolygon, int *PlaneDefined);
  72. static void GetVertexAttr(FILE *f, VertexStruct *PVertex);
  73. static void GetObjectAttr(FILE *f, int *Color);
  74.  
  75. #endif    /* DATA_PRSR_LH */
  76.