summaryrefslogtreecommitdiff
path: root/inc/NCollection_DefineHSet.hxx
blob: ab07af89b2f0a39d4461997266b6cbc9565b2fa0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// File:        NCollection_DefineHSet.hxx
// Created:     Mon Apr 29 12:34:55 2002
// Author:      Alexander KARTOMIN (akm)
//              <a-kartomin@opencascade.com>

#ifndef NCollection_DefineHSet_HeaderFile
#define NCollection_DefineHSet_HeaderFile

#include <Standard_DefineHandle.hxx>
#include <NCollection_DefineSet.hxx>
#include <MMgt_TShared.hxx>

//      Declaration of Set class managed by Handle

#define DEFINE_HSET(HClassName, _SetType_)                                     \
                                                                               \
class HClassName : public _SetType_,                                           \
                   public MMgt_TShared {                                       \
 public:                                                                       \
   inline                  HClassName ();                                      \
   inline                  HClassName (const _SetType_& anOther);              \
   inline const _SetType_& Set        () const;                                \
   inline _SetType_&       ChangeSet  ();                                      \
   DEFINE_STANDARD_RTTI (HClassName)                                           \
};                                                                             \
                                                                               \
DEFINE_STANDARD_HANDLE (HClassName, MMgt_TShared)                              \
                                                                               \
inline HClassName::HClassName () :                                             \
       _SetType_(),                                                            \
       MMgt_TShared() {}                                                       \
                                                                               \
inline HClassName::HClassName (const _SetType_& anOther) :                     \
       _SetType_(anOther),                                                     \
       MMgt_TShared() {}                                                       \
                                                                               \
inline const _SetType_& HClassName::Set () const                               \
{ return * (const _SetType_ *) this; }                                         \
                                                                               \
inline _SetType_& HClassName::ChangeSet ()                                     \
{ return * (_SetType_ *) this; }                                               \

#define IMPLEMENT_HSET(HClassName)                                             \
IMPLEMENT_STANDARD_HANDLE  (HClassName, MMgt_TShared)                          \
IMPLEMENT_STANDARD_RTTIEXT (HClassName, MMgt_TShared)

#endif