Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
Base.h
1 /**************************************************************************\
2  * Copyright (c) Kongsberg Oil & Gas Technologies AS
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * Redistributions of source code must retain the above copyright notice,
10  * this list of conditions and the following disclaimer.
11  *
12  * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * Neither the name of the copyright holder nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 \**************************************************************************/
32 
33 #ifndef DIME_BASE_H
34 #define DIME_BASE_H
35 
36 #include <dime/Basic.h>
37 #include <stddef.h> // for size_t
38 
39 class dimeMemHandler;
40 
41 class DIME_DLL_API dimeBase
42 {
43 public:
44  enum {
45  dimeBaseType = 1,
46  dimeRecordType,
47  dimeStringRecordType,
48  dimeFloatRecordType,
49  dimeDoubleRecordType,
50  dimeInt8RecordType,
51  dimeInt16RecordType,
52  dimeInt32RecordType,
53  dimeHexRecordType,
54  dimeRecordHolderType,
55  dimeClassType,
56  dimeUnknownClassType,
57  dimeObjectType,
58  dimeUnknownObjectType,
59  dimeEntityType,
60  dimeUnknownEntityType,
61  dimePolylineType,
62  dimeVertexType,
63  dimeFaceEntityType,
64  dimeExtrusionEntityType,
65  dime3DFaceType,
66  dimeSolidType,
67  dimeTraceType,
68  dimeLineType,
69  dimeTextType,
70  dimePointType,
71  dimeBlockType,
72  dimeInsertType,
73  dimeCircleType,
74  dimeArcType,
75  dimeLWPolylineType,
76  dimeEllipseType,
77  dimeSplineType,
78  dimeSectionType,
79  dimeUnknownSectionType,
80  dimeEntitiesSectionType,
81  dimeBlocksSectionType,
82  dimeTablesSectionType,
83  dimeHeaderSectionType,
84  dimeClassesSectionType,
85  dimeObjectsSectionType,
86  dimeTableType,
87  dimeTableEntryType,
88  dimeUnknownTableType,
89  dimeUCSTableType,
90  dimeLayerTableType,
91 
92  // this should be last
93  dimeLastTypeTag
94  };
95  dimeBase(void);
96  virtual ~dimeBase();
97 
98  virtual int typeId() const = 0;
99  virtual bool isOfType(const int thetypeid) const;
100 public:
101  void *operator new(size_t size, dimeMemHandler *memhandler = NULL,
102  const int alignment = 4);
103  void operator delete(void *ptr);
104 
105 }; // class dimeBase
106 
107 #endif // ! DIME_BASE_H
108 
The dimeBase class is the superclass for most classes in Dime.
Definition: Base.h:41
The dimeMemHandler class is a special-purpose memory manager.
Definition: MemHandler.h:38