806e6fca0ad969bf836a0a173812983bd99af6fd
[platform/upstream/doxygen.git] / src / types.h
1 /******************************************************************************
2  *
3  * Copyright (C) 1997-2015 by Dimitri van Heesch.
4  *
5  * Permission to use, copy, modify, and distribute this software and its
6  * documentation under the terms of the GNU General Public License is hereby 
7  * granted. No representations are made about the suitability of this software 
8  * for any purpose. It is provided "as is" without express or implied warranty.
9  * See the GNU General Public License for more details.
10  *
11  * Documents produced by Doxygen are derivative works derived from the
12  * input used in their production; they are not affected by this license.
13  *
14  */
15
16 #ifndef TYPES_H
17 #define TYPES_H
18
19 #include <qcstring.h>
20
21 /** @file
22  *  @brief This file contains a number of basic enums and types. 
23  */
24
25 /** Protection level of members */
26 enum Protection   { Public, Protected, Private, Package } ;
27
28 /** Virtualness of a member. */
29 enum Specifier    { Normal, Virtual, Pure } ;
30
31 /** Kind of method */
32 enum MethodTypes  { Method, Signal, Slot, DCOP, Property, Event };
33
34 /** Type of member relation */
35 enum RelatesType  { Simple, Duplicate, MemberOf };
36
37 /** Kind of member relationship */
38 enum Relationship { Member, Related, Foreign };
39
40 /** Language as given by extension */
41 enum SrcLangExt
42 {
43   SrcLangExt_Unknown  = 0x00000,
44   SrcLangExt_IDL      = 0x00008,
45   SrcLangExt_Java     = 0x00010,
46   SrcLangExt_CSharp   = 0x00020,
47   SrcLangExt_D        = 0x00040,
48   SrcLangExt_PHP      = 0x00080,
49   SrcLangExt_ObjC     = 0x00100,
50   SrcLangExt_Cpp      = 0x00200,
51   SrcLangExt_JS       = 0x00400,
52   SrcLangExt_Python   = 0x00800,
53   SrcLangExt_Fortran  = 0x01000,
54   SrcLangExt_VHDL     = 0x02000,
55   SrcLangExt_XML      = 0x04000,
56   SrcLangExt_Tcl      = 0x08000,
57   SrcLangExt_Markdown = 0x10000,
58   SrcLangExt_SQL = 0x20000
59 };
60
61 /** Grouping info */
62 struct Grouping 
63 {
64   /** Grouping priority */
65   enum GroupPri_t 
66   {
67     GROUPING_LOWEST,
68     GROUPING_AUTO_WEAK = GROUPING_LOWEST,     //!< membership in group was defined via \@weakgroup 
69     GROUPING_AUTO_ADD,     //!< membership in group was defined via \@add[to]group 
70     GROUPING_AUTO_DEF,     //!< membership in group was defined via \@defgroup
71     GROUPING_AUTO_HIGHEST = GROUPING_AUTO_DEF,
72     GROUPING_INGROUP,      //!< membership in group was defined by \@ingroup
73     GROUPING_HIGHEST = GROUPING_INGROUP
74   };
75
76   static const char *getGroupPriName( GroupPri_t priority )
77   {
78     switch( priority )
79     {
80       case GROUPING_AUTO_WEAK:
81         return "@weakgroup";
82       case GROUPING_AUTO_ADD:
83         return "@addtogroup";
84       case GROUPING_AUTO_DEF:
85         return "@defgroup";
86       case GROUPING_INGROUP:
87         return "@ingroup";
88     }       
89     return "???";
90   }
91
92   Grouping( const char *gn, GroupPri_t p ) : groupname(gn), pri(p) {}
93   Grouping( const Grouping &g ) : groupname(g.groupname), pri(g.pri) {}
94   QCString groupname;   //!< name of the group
95   GroupPri_t pri;       //!< priority of this definition
96
97 };
98
99 struct ListItemInfo
100 {
101   QCString type;
102   int itemId;
103 };
104
105 enum MemberListType
106 {
107   MemberListType_privateLists       = 0x0800,
108   MemberListType_detailedLists      = 0x1000,
109   MemberListType_declarationLists   = 0x2000,
110   MemberListType_documentationLists = 0x4000,
111
112   MemberListType_pubMethods              = 0,
113   MemberListType_proMethods              = 1,
114   MemberListType_pacMethods              = 2,
115   MemberListType_priMethods              = 3 + MemberListType_privateLists,
116   MemberListType_pubStaticMethods        = 4,
117   MemberListType_proStaticMethods        = 5,
118   MemberListType_pacStaticMethods        = 6,
119   MemberListType_priStaticMethods        = 7 + MemberListType_privateLists,
120   MemberListType_pubSlots                = 8,
121   MemberListType_proSlots                = 9,
122   MemberListType_priSlots                = 10 + MemberListType_privateLists,
123   MemberListType_pubAttribs              = 11,
124   MemberListType_proAttribs              = 12,
125   MemberListType_pacAttribs              = 13,
126   MemberListType_priAttribs              = 14 + MemberListType_privateLists,
127   MemberListType_pubStaticAttribs        = 15,
128   MemberListType_proStaticAttribs        = 16,
129   MemberListType_pacStaticAttribs        = 17,
130   MemberListType_priStaticAttribs        = 18 + MemberListType_privateLists,
131   MemberListType_pubTypes                = 19,
132   MemberListType_proTypes                = 20,
133   MemberListType_pacTypes                = 21,
134   MemberListType_priTypes                = 22 + MemberListType_privateLists,
135   MemberListType_related                 = 23,
136   MemberListType_signals                 = 24,
137   MemberListType_friends                 = 25,
138   MemberListType_dcopMethods             = 26,
139   MemberListType_properties              = 27,
140   MemberListType_events                  = 28,
141
142   MemberListType_typedefMembers          = 29 + MemberListType_detailedLists,
143   MemberListType_enumMembers             = 30 + MemberListType_detailedLists,
144   MemberListType_enumValMembers          = 31 + MemberListType_detailedLists,
145   MemberListType_functionMembers         = 32 + MemberListType_detailedLists,
146   MemberListType_relatedMembers          = 33 + MemberListType_detailedLists,
147   MemberListType_variableMembers         = 34 + MemberListType_detailedLists,
148   MemberListType_propertyMembers         = 35 + MemberListType_detailedLists,
149   MemberListType_eventMembers            = 36 + MemberListType_detailedLists,
150   MemberListType_constructors            = 37 + MemberListType_detailedLists,
151
152   MemberListType_allMembersList          = 38,
153
154   MemberListType_decDefineMembers        = 39 + MemberListType_declarationLists,
155   MemberListType_decProtoMembers         = 40 + MemberListType_declarationLists, 
156   MemberListType_decTypedefMembers       = 41 + MemberListType_declarationLists,
157   MemberListType_decEnumMembers          = 42 + MemberListType_declarationLists,
158   MemberListType_decFuncMembers          = 43 + MemberListType_declarationLists,
159   MemberListType_decVarMembers           = 44 + MemberListType_declarationLists,
160   MemberListType_decEnumValMembers       = 45 + MemberListType_declarationLists,
161   MemberListType_decPubSlotMembers       = 46 + MemberListType_declarationLists,
162   MemberListType_decProSlotMembers       = 47 + MemberListType_declarationLists,
163   MemberListType_decPriSlotMembers       = 48 + MemberListType_declarationLists,
164   MemberListType_decSignalMembers        = 49 + MemberListType_declarationLists,
165   MemberListType_decEventMembers         = 50 + MemberListType_declarationLists,
166   MemberListType_decFriendMembers        = 51 + MemberListType_declarationLists,
167   MemberListType_decPropMembers          = 52 + MemberListType_declarationLists,
168
169   MemberListType_docDefineMembers        = 53 + MemberListType_documentationLists,
170   MemberListType_docProtoMembers         = 54 + MemberListType_documentationLists,
171   MemberListType_docTypedefMembers       = 55 + MemberListType_documentationLists,
172   MemberListType_docEnumMembers          = 56 + MemberListType_documentationLists,
173   MemberListType_docFuncMembers          = 57 + MemberListType_documentationLists,
174   MemberListType_docVarMembers           = 58 + MemberListType_documentationLists,
175   MemberListType_docEnumValMembers       = 59 + MemberListType_documentationLists,
176   MemberListType_docPubSlotMembers       = 60 + MemberListType_documentationLists,
177   MemberListType_docProSlotMembers       = 61 + MemberListType_documentationLists,
178   MemberListType_docPriSlotMembers       = 62 + MemberListType_documentationLists,
179   MemberListType_docSignalMembers        = 63 + MemberListType_documentationLists,
180   MemberListType_docEventMembers         = 64 + MemberListType_documentationLists,
181   MemberListType_docFriendMembers        = 65 + MemberListType_documentationLists,
182   MemberListType_docPropMembers          = 66 + MemberListType_documentationLists,
183
184   MemberListType_redefinedBy             = 67,
185   MemberListType_enumFields              = 68,
186   MemberListType_memberGroup             = 69,
187
188   // this one is for the summary section on the class page
189   MemberListType_interfaces              = 70,
190   // this one is for the detailed section on the class page
191   MemberListType_interfaceMembers        = 71 + MemberListType_detailedLists,
192   MemberListType_services                = 72,
193   MemberListType_serviceMembers          = 73 + MemberListType_detailedLists,
194 };
195
196 enum MemberType 
197
198   MemberType_Define,
199   MemberType_Function, 
200   MemberType_Variable, 
201   MemberType_Typedef, 
202   MemberType_Enumeration, 
203   MemberType_EnumValue,
204   MemberType_Signal,
205   MemberType_Slot,
206   MemberType_Friend,
207   MemberType_DCOP,
208   MemberType_Property,
209   MemberType_Event,
210   MemberType_Interface,
211   MemberType_Service,
212 };
213
214 enum FortranFormat
215 {
216   FortranFormat_Unknown,
217   FortranFormat_Free,
218   FortranFormat_Fixed
219 };
220
221 #endif