Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cOleFlashCall.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cOleFlashCall_H
6 #define _INC_cOleFlashCall_H
7 #ifndef NO_PRAGMA_ONCE
8 #pragma once
9 #endif
10 #include "../WinAPI/WinTypes.h"
11 #include "GrayCore/include/StrT.h"
16 
17 #define USE_FLASH
18 #if defined(_WIN32) && defined(_MSC_VER) && defined(USE_FLASH)
19 
20 namespace GrayLib
21 {
22  class cOleFlashArg
23  {
27 
28  public:
29  enum ARG_TYPE
30  {
31  ARG_NONE = 0,
32  ARG_NUMBER,
33  ARG_BOOLEAN,
34  ARG_STRING
35  };
36  static const cOleFlashArg k_Null; // ARG_NONE
37 
38  private:
39  ARG_TYPE m_eType;
40  cString m_sArg;
41 
42  public:
43  cOleFlashArg() noexcept
44  : m_eType(ARG_NONE)
45  {
46  }
47  cOleFlashArg(ARG_TYPE eType, cString sArg = "")
48  : m_eType(eType)
49  , m_sArg(sArg)
50  {
51  }
52  cOleFlashArg(const char* sVal)
53  : m_eType(ARG_STRING)
54  , m_sArg(sVal)
55  {
56  }
57  cOleFlashArg(cString sVal)
58  : m_eType(ARG_STRING)
59  , m_sArg(sVal)
60  {
61  }
62  cOleFlashArg(bool bVal)
63  : m_eType(ARG_BOOLEAN)
64  , m_sArg(bVal ? "true" : "false")
65  {
66  }
67  cOleFlashArg(int iVal)
68  : m_eType(ARG_NUMBER)
69  {
70  m_sArg = StrArg<GChar_t>(iVal);
71  }
72  cOleFlashArg(unsigned int uVal)
73  : m_eType(ARG_NUMBER)
74  {
75  m_sArg = StrArg<GChar_t>(uVal);
76  }
77  cOleFlashArg(unsigned long ulVal)
78  : m_eType(ARG_NUMBER)
79  {
80  m_sArg = StrArg<GChar_t>((UINT64)ulVal);
81  }
82  cOleFlashArg(float fVal)
83  : m_eType(ARG_NUMBER)
84  {
85  char szBuffer[256];
86  StrT::DtoA(double(fVal), szBuffer, _countof(szBuffer));
87  m_sArg = (const char*)(szBuffer);
88  }
89 
90  void put_ArgType(ARG_TYPE eType)
91  {
92  m_eType = eType;
93  }
94  ARG_TYPE get_ArgType() const
95  {
96  return m_eType;
97  }
98  const char* get_ArgTypeName() const;
99 
100  const cString& get_String() const
101  {
102  // ARG_STRING
103  return m_sArg;
104  }
105  int get_Number() const;
106  float get_Float() const;
107  bool get_Boolean() const;
108 
109  void AppendString(const cString& sArg2)
110  {
111  m_sArg += sArg2;
112  }
113  };
114 
115  class GRAYLIB_LINK cOleFlashCall : public cNonCopyable
116  {
120 
121  friend class cOleFlashParser;
122 
123  private:
124  cString m_sName; // <invoke name="x"> of the function to invoke.
125  cArrayStruct<cOleFlashArg> m_aArgs; // <arguments>
126  cString m_sReturnType; // <invoke returntype="xml">
127  cString m_sReturnVal;
128 
129  public:
130  cOleFlashCall(const char* xmlStream);
131  cOleFlashCall(const char* pszFunctionName, const char* pszArgs); // parse a string as args.
132 
133  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1)
134  : m_sName(pszFunctionName)
135  {
136  AddArg(arg1);
137  }
138  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2)
139  : m_sName(pszFunctionName)
140  {
141  AddArg(arg1); AddArg(arg2);
142  }
143  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2, cOleFlashArg& arg3)
144  : m_sName(pszFunctionName)
145  {
146  AddArg(arg1); AddArg(arg2); AddArg(arg3);
147  }
148  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2, cOleFlashArg& arg3, cOleFlashArg& arg4)
149  : m_sName(pszFunctionName)
150  {
151  AddArg(arg1); AddArg(arg2); AddArg(arg3); AddArg(arg4);
152  }
153  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2, cOleFlashArg& arg3, cOleFlashArg& arg4, cOleFlashArg& arg5)
154  : m_sName(pszFunctionName)
155  {
156  AddArg(arg1); AddArg(arg2); AddArg(arg3); AddArg(arg4); AddArg(arg5);
157  }
158  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2, cOleFlashArg& arg3, cOleFlashArg& arg4, cOleFlashArg& arg5, cOleFlashArg& arg6)
159  : m_sName(pszFunctionName)
160  {
161  AddArg(arg1); AddArg(arg2); AddArg(arg3); AddArg(arg4); AddArg(arg5); AddArg(arg6);
162  }
163  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2, cOleFlashArg& arg3, cOleFlashArg& arg4, cOleFlashArg& arg5, cOleFlashArg& arg6, cOleFlashArg& arg7, cOleFlashArg& arg8)
164  : m_sName(pszFunctionName)
165  {
166  AddArg(arg1); AddArg(arg2); AddArg(arg3); AddArg(arg4); AddArg(arg5); AddArg(arg6); AddArg(arg7); AddArg(arg8);
167  }
168  cOleFlashCall(const char* pszFunctionName, cOleFlashArg& arg1, cOleFlashArg& arg2, cOleFlashArg& arg3, cOleFlashArg& arg4, cOleFlashArg& arg5, cOleFlashArg& arg6, cOleFlashArg& arg7, cOleFlashArg& arg8, cOleFlashArg& arg9)
169  : m_sName(pszFunctionName)
170  {
171  AddArg(arg1); AddArg(arg2); AddArg(arg3); AddArg(arg4); AddArg(arg5); AddArg(arg6); AddArg(arg7); AddArg(arg8); AddArg(arg9);
172  }
173 
174  ~cOleFlashCall();
175 
176  const cString& get_FuncName() const
177  {
178  return m_sName; // name of the function invoked.
179  }
180  bool hasArgs() const
181  {
182  return m_aArgs.GetSize() != 0;
183  }
184  ITERATE_t get_ArgCount() const
185  {
186  return m_aArgs.GetSize();
187  }
188  const cOleFlashArg& GetArg(ITERATE_t i) const
189  {
190  if (!m_aArgs.IsValidIndex(i))
191  return cOleFlashArg::k_Null;
192  return m_aArgs[i];
193  }
194  void AddArg(cOleFlashArg& arg)
195  {
196  m_aArgs.Add(arg);
197  }
198 
199  bool hasReturnType() const
200  {
201  return !m_sReturnType.IsEmpty();
202  }
203  void put_ReturnTypeXML();
204  cString& ref_ReturnVal2()
205  {
206  return m_sReturnVal;
207  }
208  cString& ref_ReturnVal() // a string ref i may change. XML format.
209  {
210  put_ReturnTypeXML(); // i am settings a XML return.
211  return ref_ReturnVal2();
212  }
213  const cString get_ReturnVal() const
214  {
215  return m_sReturnVal;
216  }
217 
218  cString get_InvokeStr() const;
219  cString get_DebugStr() const;
220  };
221 }
222 
223 #endif
224 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define _countof(a)
Definition: cKernel.h:35
Definition: cMesh.h:22
int ITERATE_t
like size_t but signed
Definition: Index.h:28
cStringT< GChar_t > cString
Definition: cString.h:636
static __DECL_IMPORT StrLen_t __stdcall DtoA(double nVal, OUT TYPE *pszOut, StrLen_t iStrMax, int iDecPlaces=-1, char chE=- 'e')