AnyCAD C++ API  2018
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 
APIObjectDef.h
浏览该文件的文档.
1 #ifndef APIObject_h__
2 #define APIObject_h__
3 
4 #include "APIClassPtrDef.h"
5 
6 namespace AnyCAD {
7  namespace API
8  {
9 
10 #define DECLARE_APIOBJECT(className)\
11 public:\
12  typedef AnyCore::A##className##Ptr ObjectPtr;\
13  static className Null;\
14  className();\
15  className(int, bool);\
16  className(const className::ObjectPtr& implObject)\
17  {\
18  SetImpl(implObject);\
19 }\
20  virtual ~className(){}\
21  virtual bool IsNull() const { return className##Impl_ == 0; }\
22  bool IsValid() const { return !IsNull(); }\
23 private:\
24  ObjectPtr className##Impl_;\
25 public:\
26  const ObjectPtr& GetImpl() const { return className##Impl_; }\
27  void SetImpl(const ObjectPtr& impl) { className##Impl_ = impl; }
28 
29 #define IMPLEMENT_APIOBJECT(className)\
30  className className::Null(1,true);\
31  className::className(int, bool){}
32 
33 #define DECLARE_APISUPER(className, super)\
34  typedef super Super;\
35 public:\
36  static className Null;\
37  typedef AnyCore::A##className##Ptr ObjectPtr;\
38  className();\
39  className(int, bool);\
40  className(const className::ObjectPtr& implObject)\
41  {\
42  SetImpl(implObject);\
43 }\
44  virtual ~className(){}\
45  virtual bool IsNull() const { return className##Impl_ == 0; }\
46  bool IsValid() const { return !IsNull(); }\
47 private:\
48  ObjectPtr className##Impl_;\
49 public:\
50  const ObjectPtr& GetImpl() const { return className##Impl_; }\
51  void SetImpl(const ObjectPtr& impl);
52 
53 #define IMPLEMENT_APISUPER(className)\
54  className className::Null(1,true);\
55  className::className(int aa,bool bb):Super(aa,bb){}\
56  void className::SetImpl(const ObjectPtr& impl) { Super::SetImpl(impl); className##Impl_ = impl; }
57 }}
58 
59 
60 #endif // APIObject_h__