Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cUIDArray.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cUIDArray_H
7 #define _INC_cUIDArray_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cUID.h"
13 #include "../Variant/cVariant.h"
14 #ifdef USE_ISCRIPTABLE
15 #include "../Scriptable/cScriptableInterface.h" // CSCRIPT_CLASS_DEF0
16 #endif
18 
19 #ifdef GRAY_DLL // force implementation/instantiate for DLL/SO.
20 namespace Gray
21 {
22  template class GRAYLIB_LINK CArray < GrayLib::UID_t, GrayLib::UID_t >;
23  template class GRAYLIB_LINK cArrayTyped < GrayLib::UID_t, GrayLib::UID_t >;
24  template class GRAYLIB_LINK cArraySorted < GrayLib::UID_t, GrayLib::UID_t, GrayLib::UID_t >;
25 }
26 #endif
27 
28 namespace GrayLib
29 {
30  class cXObject;
31  class cScriptFileWriter;
32 
33  //****************************************************
34 
36  {
41 
42 #ifdef USE_ISCRIPTABLE
43  public:
44  CSCRIPT_CLASS_DEF0(UIDArray);
45  enum M_TYPE_
46  {
47 #define cUIDArrayMethod(a,b,c,d) M_##a,
48 #include "cUIDArrayMethods.tbl"
49 #undef cUIDArrayMethod
51  };
52  static cScriptableMethod sm_Methods[M_QTY + 1];
53 #endif
54 
55  public:
56  ITERATE_t FindUID(UID_t uid) const
57  {
60  return FindIForKey(uid);
61  }
62  bool isUIDIn(UID_t uid) const
63  {
64  return(FindUID(uid) >= 0);
65  }
66 
67  ITERATE_t AttachUID(UID_t uid);
68  ITERATE_t DetachUID(UID_t uid);
69 
70  UID_t GetAtCheck(int i) const
71  {
72  if (!IsValidIndex(i))
73  return cUID::k_CLEAR;
74  return GetAt(i);
75  }
76 
77  // get UID out of the pObj
78  ITERATE_t FindObj(const cXObject* pObj) const;
79  bool isObjIn(const cXObject* pObj) const
80  {
81  return(FindObj(pObj) >= 0);
82  }
83  ITERATE_t AttachObj(const cXObject* pObj);
84  ITERATE_t DetachObj(const cXObject* pObj);
85 
86 #ifdef USE_ISCRIPTABLE
87  // Scripted access.
88  void s_WriteObjs(cScriptFileWriter& s, const ATOMCHAR_t* pszTag);
89  HRESULT s_PropGetObjs(const ATOMCHAR_t* pszKey, OUT cVariant& vValRet);
90  HRESULT s_InvokeExtProp(const cVariant& vArgs, OUT cVariant& vValRet);
91 #endif
92  };
93 };
94 
95 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define CSCRIPT_CLASS_DEF0(TYPE)
Definition: cScriptableInterface.h:271
Definition: cScriptFile.h:24
Definition: cScriptableInterface.h:97
Definition: cUIDArray.h:36
HRESULT s_PropGetObjs(const ATOMCHAR_t *pszKey, OUT cVariant &vValRet)
bool isUIDIn(UID_t uid) const
Definition: cUIDArray.h:62
bool isObjIn(const cXObject *pObj) const
Definition: cUIDArray.h:79
M_TYPE_
Definition: cUIDArray.h:46
@ M_QTY
Definition: cUIDArray.h:50
HRESULT s_InvokeExtProp(const cVariant &vArgs, OUT cVariant &vValRet)
ITERATE_t FindUID(UID_t uid) const
Definition: cUIDArray.h:56
void s_WriteObjs(cScriptFileWriter &s, const ATOMCHAR_t *pszTag)
UID_t GetAtCheck(int i) const
Definition: cUIDArray.h:70
Definition: cVariant.h:26
Definition: cXObject.h:78
Definition: cMesh.h:22
class __DECL_IMPORT cXObject
Definition: cXObject.h:33
HASHCODE32_t UID_t
Sort of the same as a HASHCODE_t. not the same as UIDINDEX_t.
Definition: cUID.h:18
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
int ITERATE_t
like size_t but signed
Definition: Index.h:28
char ATOMCHAR_t
the char form (UNICODE or not) for an atom. (for symbolic names)
Definition: StrConst.h:15