~ubuntu-branches/ubuntu/utopic/tcm/utopic

« back to all changes in this revision

Viewing changes to src/gl/code.h

  • Committer: Bazaar Package Importer
  • Author(s): Otavio Salvador
  • Date: 2003-07-03 20:08:21 UTC
  • Revision ID: james.westby@ubuntu.com-20030703200821-se4xtqx25e5miczi
Tags: upstream-2.20
ImportĀ upstreamĀ versionĀ 2.20

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//------------------------------------------------------------------------------
 
2
//
 
3
// This file is part of Toolkit for Conceptual Modeling (TCM).
 
4
// (c) copyright 1997, Vrije Universiteit Amsterdam.
 
5
// Author: Frank Dehne (frank@cs.vu.nl).
 
6
//
 
7
// TCM is free software; you can redistribute it and/or modify
 
8
// it under the terms of the GNU General Public License as published
 
9
// by
 
10
// the Free Software Foundation; either version 2 of the License, or
 
11
// (at your option) any later version.
 
12
//
 
13
// TCM is distributed in the hope that it will be useful,
 
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
// GNU General Public License for more details.
 
17
//
 
18
// You should have received a copy of the GNU General Public License
 
19
// along with TCM; if not, write to the Free Software
 
20
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
21
// 02111-1307, USA.
 
22
//------------------------------------------------------------------------------
 
23
#ifndef _CODE_H
 
24
#define _CODE_H
 
25
#include "typename.h"
 
26
 
 
27
 
 
28
// This include file contains all codes of all types of subjects (nodes and
 
29
// edges) and of all types of shapes.
 
30
 
 
31
/// Functions and constants for shape and subject codes.
 
32
class Code {
 
33
/*@Doc: {\large {\bf scope:} global} */
 
34
public:
 
35
        ///
 
36
        enum Type {
 
37
                // general node shape types
 
38
                BOX=1,
 
39
                SQUARE,
 
40
                DOUBLE_BOX,
 
41
                TRIPLE_BOX,
 
42
                UR_LABELED_BOX,
 
43
                ARROW_BOX,
 
44
                TEXT_BOX,
 
45
                ARROW_TEXT_BOX,
 
46
                ELLIPSE,
 
47
                CIRCLE, 
 
48
                BLACK_DOT,
 
49
                WHITE_DOT,
 
50
                ELLIPSIS,
 
51
                BULLS_EYE,
 
52
                MINI_ARROW_ELLIPSE,
 
53
                LEFT_LINE_CIRCLE,
 
54
                ROUNDED_BOX,
 
55
                ELLIPSED_BOX,
 
56
                DIAMOND,
 
57
                HORIZONTAL_BAR,
 
58
                VERTICAL_BAR,
 
59
                TRIANGLE,       
 
60
                HEXAGON,
 
61
                MINI_BOX,
 
62
                MINI_DIAMOND,
 
63
                MINI_ELLIPSE,
 
64
                MINI_TRIANGLE,
 
65
                NOTE_BOX,
 
66
                SOLID_HORIZONTAL_BAR,
 
67
                SOLID_VERTICAL_BAR,
 
68
                STICKMAN,
 
69
                BUILDING_BLOCK,
 
70
                CUBE,
 
71
                FOLDER,
 
72
                SUB_FOLDER,
 
73
                DISK,
 
74
 
 
75
                // general line types.
 
76
                LINE=100,               
 
77
                FLASH_ARROW,
 
78
                T1_LINE,
 
79
                T2_LINE,
 
80
                T4_LINE,
 
81
                T4_TLIST_LINE,
 
82
                TRANSITION_ARROW,
 
83
                C2R2_LINE,
 
84
                C2R2_MLIST_LINE,
 
85
                // next 4 are for backwards compatibility
 
86
                ARROW,
 
87
                T1_ARROW,
 
88
                DOUBLE_ARROW,
 
89
                DOUBLE_HEADED_ARROW,
 
90
 
 
91
                // standard node types.
 
92
                COMMENT=200,    
 
93
                GENERIC_NODE,
 
94
                NOTE,
 
95
                EMPTY_NODE,
 
96
                ENTITY_TYPE,
 
97
                VALUE_TYPE,
 
98
                TAXONOMY_JUNCTION,
 
99
                RELATIONSHIP_NODE,
 
100
                SUBJECT_AREA,
 
101
                CLASS_NODE,
 
102
                MODE_JUNCTION,
 
103
                DATA_PROCESS,   
 
104
                DATA_STORE,
 
105
                EVENT_STORE,
 
106
                EXTERNAL_ENTITY,
 
107
                SPLIT_MERGE_NODE,
 
108
                CONTROL_PROCESS,
 
109
                PS_PROCESS,
 
110
                DATA_STREAM,
 
111
                STATE_VECTOR,
 
112
                CONTROLLED_DATA_STREAM,
 
113
                SN_PROCESS,     
 
114
                STATE,
 
115
                INITIAL_STATE,
 
116
                DECISION_POINT,
 
117
                PROCESS_GRAPH_NODE,
 
118
                PROCESS_GRAPH_ROOT,
 
119
                TEXT_ROOT,
 
120
                TEXT_NODE,
 
121
                FINAL_STATE,
 
122
 
 
123
                // standard edge types
 
124
                GENERIC_EDGE=300,
 
125
                COMMENT_LINK,
 
126
                EMPTY_EDGE,
 
127
                TEXT_EDGE,
 
128
                BINARY_RELATIONSHIP,
 
129
                FUNCTION,
 
130
                ISA_RELATIONSHIP,
 
131
                COMPONENT_FUNCTION,
 
132
                DATA_FLOW,
 
133
                BIDIRECTIONAL_DATA_FLOW,
 
134
                CONTINUOUS_DATA_FLOW,
 
135
                EVENT_FLOW,
 
136
                CONTINUOUS_EVENT_FLOW,
 
137
                CONNECTION_START,
 
138
                CONNECTION_END, 
 
139
                TRANSITION,
 
140
                EVENT,
 
141
 
 
142
                // UML nodes
 
143
                SSD_CLASS_NODE=400,
 
144
                SSD_OBJECT_NODE,
 
145
                SSD_ASSOCIATION_NODE,
 
146
                SSD_GENERALIZATION_NODE,
 
147
                SSD_AGGREGATION_NODE,
 
148
                UCD_ACTOR_NODE,
 
149
                UCD_USE_CASE_NODE,
 
150
                UCD_SYSTEM_NODE,
 
151
                ATD_SYNCHRONIZATION_NODE,
 
152
                ATD_ACTION_STATE_NODE,
 
153
                ATD_WAIT_STATE_NODE,
 
154
                ATD_DECISION_STATE_NODE,
 
155
                ATD_INITIAL_STATE_NODE,
 
156
                ATD_FINAL_STATE_NODE,
 
157
                CPD_COMPONENT_NODE,
 
158
                CPD_INTERFACE_NODE,
 
159
                DPD_RESOURCE_NODE,
 
160
                CBD_ACTOR_NODE,
 
161
                CBD_CLASS_NODE,
 
162
                CBD_OBJECT_NODE,
 
163
                SCD_AND_STATE,
 
164
                SCD_DECISION_STATE,
 
165
                SCD_DEFAULT_STATE,
 
166
                SCD_FINAL_STATE,
 
167
                SCD_OR_STATE,
 
168
                SCD_SYNCHRONIZATION_STATE,
 
169
 
 
170
                // UML edges
 
171
                SSD_BINARY_ASSOCIATION_EDGE,
 
172
                SSD_GENERALIZATION_EDGE,
 
173
                SSD_OBJECT_LINK_EDGE,
 
174
                SSD_PARTICIPANT_LINK_EDGE,
 
175
                SSD_ASSOCIATION_LINK_EDGE,
 
176
                SSD_AGGREGATION_EDGE,
 
177
                SSD_COMPOSITION_EDGE,
 
178
                UCD_BINARY_ASSOCIATION_EDGE,
 
179
                UCD_GENERALIZATION_EDGE,
 
180
                ATD_TRANSITION_EDGE,
 
181
                CPD_DEPENDENCY_EDGE,
 
182
                CPD_REALIZATION_EDGE,
 
183
                DPD_COMMUNICATION_EDGE,
 
184
                CBD_CLASS_LINK_EDGE,
 
185
                CBD_OBJECT_LINK_EDGE,
 
186
                SCD_TRANSITION_EDGE,
 
187
                SCD_AND_EDGE,
 
188
                
 
189
                // specific UML node shapes and lines
 
190
                SSD_SINGLE_OBJECT_BOX=500,
 
191
                SSD_DOUBLE_OBJECT_BOX,
 
192
                SSD_SINGLE_CLASS_BOX,
 
193
                SSD_DOUBLE_CLASS_BOX,
 
194
                SSD_TRIPLE_CLASS_BOX,
 
195
                SSD_RCLINE,
 
196
                SSD_R2LINE,
 
197
                UCD_SINGLE_CLASS_BOX,
 
198
                UCD_BOUNDARY_BOX,
 
199
                CBD_SINGLE_CLASS_BOX,
 
200
                CBD_SINGLE_OBJECT_BOX,
 
201
                SCD_AND_STATE_BOX,
 
202
                SCD_AND_LINE,
 
203
                OBJECT_STICKMAN,
 
204
                ACTOR_CLASS_BOX,
 
205
                ACTOR_OBJECT_BOX,
 
206
                GD_BOUNDARY_SHAPE,
 
207
                GD_CONTROLLER_SHAPE,
 
208
                GD_ENTITY_SHAPE,
 
209
 
 
210
                // a shape view.
 
211
                VIEW=600,                       
 
212
 
 
213
                // types for the COLOR-X tools.
 
214
                CSO_CLASS=700,
 
215
                CSO_OBJECT,
 
216
                CSO_RELATIONSHIP,
 
217
                CSO_PARTICIPANT,
 
218
                CSO_JUNCTION,
 
219
                CSO_INSTANTIATION,      
 
220
                CSO_POSSESSION,         
 
221
                CSO_GENERALIZATION,
 
222
                CSO_AGGREGATION,
 
223
                CSO_SUBCLASSES,
 
224
                CSO_CONSTRAINT_EDGE,
 
225
                CSO_CLASS_BOX,          
 
226
                CSO_OBJECT_BOX,
 
227
                CE_PERMIT_EVENT_NODE,
 
228
                CE_MUST_EVENT_NODE,
 
229
                CE_NEC_EVENT_NODE,
 
230
                CE_START_NODE,  
 
231
                CE_FINAL_NODE,
 
232
                CE_EVENT_EDGE,          
 
233
                CE_NONEVENT_EDGE};
 
234
 
 
235
        /// returns the name of a type having this code (0 if it doesn't exist).
 
236
        static const char* GetName(int code); 
 
237
 
 
238
        /// returns the code of type name (0 if it doesn't exist).
 
239
        static int GetCode(const char* name); 
 
240
 
 
241
        /// returns code subject index (> 1) or 0 if code isn't in code list.
 
242
        static int GetIndex(int code, const int codelist[]); 
 
243
 
 
244
        ///
 
245
        static TypeName typeNames[];
 
246
};
 
247
#endif