home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / educatio / xcoral16.zip / CLASS_DI.H < prev    next >
C/C++ Source or Header  |  1993-01-15  |  4KB  |  105 lines

  1. /*
  2. ** Copyright 1989, 1992 by Lionel Fournigault
  3. **
  4. ** Permission to use, copy, and distribute for non-commercial purposes,
  5. ** is hereby granted without fee, providing that the above copyright
  6. ** notice appear in all copies and that both the copyright notice and this
  7. ** permission notice appear in supporting documentation.
  8. ** The software may be modified for your own purposes, but modified versions
  9. ** may not be distributed.
  10. ** This software is provided "as is" without any expressed or implied warranty.
  11. **
  12. **
  13. */
  14.  
  15. #ifndef CLASSDICT_H
  16. #define CLASSDICT_H
  17.  
  18.  
  19. /*------------------------------------------------------------------------------
  20. */
  21. enum ScopeType {
  22.     UNKNOWN_SCOPE,
  23.     PUBLIC_SCOPE,
  24.     PROTECTED_SCOPE,
  25.     PRIVATE_SCOPE
  26. };
  27. typedef enum ScopeType ScopeType;
  28.  
  29.  
  30. /*------------------------------------------------------------------------------
  31. */
  32. struct ParentRec {
  33.   char*             _name;             /*  Le nom de la classe parent   */
  34.   ScopeType         _scope;            /*  La nature de l'heritage      */
  35.   struct ParentRec* _next;             /*  La classe suivante           */
  36. };
  37.  
  38. typedef struct ParentRec ParentRec;
  39.  
  40.  
  41. struct ClassRec;
  42.  
  43. struct MethodRec {
  44.   char*             _name;             /*  Le de la methode                    */
  45.   char*             _class_name;       /*  Le nom de la classe                 */
  46.   ScopeType         _scope;            /*  La portee de la methode             */
  47.   int               _virtual_decl;     /*  La methode est virtuelle ou non     */
  48.   FileRec*          _decl_file;        /*  Le fichier de declaration           */
  49.   LineNumber        _decl_line;        /*  La ligne dans le fichier precedent  */
  50.   FileRec*          _impl_file;        /*  Le fichier d'implementation         */
  51.   LineNumber        _impl_line;        /*  La ligne d'implementation           */
  52.   struct MethodRec* _next_marked;      /*  Le pointeur de marquage             */
  53.   struct MethodRec* _next;             /*  La methode suivante                 */
  54. };
  55.  
  56. typedef struct MethodRec MethodRec;
  57.  
  58.  
  59. /*------------------------------------------------------------------------------
  60. */
  61. struct ClassRec {
  62.   char*            _name;              /*  La nom de la classe                 */
  63.   FileRec*         _decl_file;         /*  Le fichier de declaration           */
  64.   LineNumber       _decl_line;         /*  La ligne de declaration             */
  65.   ParentRec*       _parents_list;      /*  La liste des parents                */
  66.   int              _parents_count;     /*  Le nombre de parents                */
  67.   MethodRec*       _methods_list;      /*  La liste des methodes               */
  68.   struct ClassRec* _next_marked;       /*  Le pointeur de marquage             */
  69.   struct ClassRec* _next;              /*  La classe suivante                  */
  70. };
  71. typedef struct ClassRec ClassRec;
  72.  
  73.  
  74. /*------------------------------------------------------------------------------
  75. //                         Le dictionnaire des classes
  76. //------------------------------------------------------------------------------
  77. */
  78.  
  79. #define CLASS_DICT_SIZE      503
  80.  
  81. extern ClassRec*  class_dict[CLASS_DICT_SIZE];
  82.  
  83. extern int        class_count;
  84.  
  85.  
  86. /*------------------------------------------------------------------------------
  87. //       Les procedures utilisees manipuler le dictionnaire des fichiers
  88. //------------------------------------------------------------------------------
  89. */
  90.  
  91. extern ClassRec*    create_class  (/* char* file_name */);
  92.  
  93. extern ClassRec*    find_class    (/* char* file_name */);
  94.  
  95.  
  96. /*------------------------------------------------------------------------------
  97. //          La procedure d'initialisation du dictionnaire des classes
  98. //------------------------------------------------------------------------------
  99. */
  100.  
  101. extern   void init_class ();
  102.  
  103. #endif  /*  CLASSDICT_H  */
  104.  
  105.