Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cScriptContext.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cScriptContext_H
7 #define _INC_cScriptContext_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../Scriptable/IScriptableObj.h"
13 #include "../Expression/cExpressionContext.h"
14 #include "../Variant/cVarMap.h"
15 #include "../Auth/IAuthUser.h"
17 
18 namespace GrayLib
19 {
20  class cScriptableObj;
21 
23  : public cExpressionContext // no data in here.
24  {
33 
35 
36  public:
37  enum M_TYPE_
38  {
39 #define cScriptContextFunc(a,b,c,d) M_##a,
40 #include "cScriptContextFunc.tbl"
41 #undef cScriptContextFunc
43  };
44  static cScriptableMethod sm_Methods[M_QTY + 1];
45 
48 
49  private:
50  cStreamOutput* m_pOutConsole;
51 
52  IAuthUser* m_pAuth;
53  PLEVEL_TYPE m_ePrivLevel;
54 
56  cIUnkPtr<IXObject> m_pBaseObj;
57 
58  private:
59  void InitDefaults();
60  HRESULT s_Invoke_DumpArgs();
61 
62  public:
63  cScriptContext(IAuthUser* pAuth = nullptr, cStreamOutput* pOutConsole = nullptr);
64  cScriptContext(IAuthUser* pAuth, cStreamOutput* pOutConsole, IXObject* pBaseObj);
65  cScriptContext(IAuthUser* pAuth, cStreamOutput* pOutConsole, IXObject* pBaseObj, PLEVEL_TYPE ePrivLevel);
66 
67  cScriptContext(cScriptContext* pContextToDupe);
68  virtual ~cScriptContext();
69 
71  STDMETHOD(s_InvokeExec)(const cScriptableMethod* pFunc, const cVariant& vArgs, OUT cVariant& vValRet);
72 
73  virtual bool isValidCheck() const noexcept override
74  {
75  if (!COBJECT_IsValidCheck())
76  return false;
77  return IS_TYPE_OF(cScriptContext,this);
78  }
79 
80  cString get_ContextName() const; // auth + context ?
81 
82  void put_SrcAuth(IAuthUser* pAuth) noexcept
83  {
85  m_pAuth = pAuth;
86  }
87  IAuthUser* get_SrcAuth() const noexcept
88  {
89  return m_pAuth;
90  }
91 
92  void put_SrcConsole(cStreamOutput* pOutConsole)
93  {
95  m_pOutConsole = pOutConsole;
96  }
97  cStreamOutput* get_SrcConsole() const;
98  cScriptableObj* get_SrcObj() const;
99 
101  {
103  return m_ePrivLevel;
104  }
105  void put_ExecPrivLevel(PLEVEL_TYPE ePrivLevel) noexcept
106  {
109  m_ePrivLevel = ePrivLevel;
110  }
111  void put_ExecPrivLevelMin(PLEVEL_TYPE ePrivLevel = PLEVEL_Admin) noexcept
112  {
114  if (m_ePrivLevel < ePrivLevel) // raise privilege level to at least this.
115  m_ePrivLevel = ePrivLevel;
116  }
117 
119  {
122  return m_pBaseObj;
123  }
124  void put_BaseObject(IXObject* pObj) noexcept
125  {
128  m_pBaseObj = pObj;
129  }
130  cString get_BaseObjName() const;
131 
132  virtual cScriptContext* DupeContext(cScriptContext* pNew) const;
133  };
134 
136  {
139 
140  public:
141  static cScriptContext* GRAYCALL GetContextRoot(); // the global/default/root context for all.
142  static cScriptContext* GRAYCALL GetContextCurrent(); // for this thread.
143  static cScriptContext* GRAYCALL GetContextSafe(cScriptContext* pContext);
144  };
145 }
146 
147 #endif
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define IS_TYPE_OF(t, p)
Definition: PtrCast.h:23
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define COBJECT_IsValidCheck()
Definition: cObject.h:64
#define CSCRIPT_CLASS_DEF1(TYPE, _BASETYPE)
Definition: cScriptableInterface.h:277
Definition: cExpressionContext.h:18
M_TYPE_
Definition: cExpressionContext.h:37
Definition: cScriptContext.h:136
Definition: cScriptContext.h:24
void put_BaseObject(IXObject *pObj) noexcept
Definition: cScriptContext.h:124
void put_SrcAuth(IAuthUser *pAuth) noexcept
Definition: cScriptContext.h:82
PLEVEL_TYPE get_ExecPrivLevel() const noexcept
Definition: cScriptContext.h:100
void put_SrcConsole(cStreamOutput *pOutConsole)
Definition: cScriptContext.h:92
void put_ExecPrivLevelMin(PLEVEL_TYPE ePrivLevel=PLEVEL_Admin) noexcept
Definition: cScriptContext.h:111
void put_ExecPrivLevel(PLEVEL_TYPE ePrivLevel) noexcept
Definition: cScriptContext.h:105
IAuthUser * get_SrcAuth() const noexcept
Definition: cScriptContext.h:87
cVarMap m_ArgMap
local variables and arguments for this context. NOT the same as function_name(args).
Definition: cScriptContext.h:47
virtual bool isValidCheck() const noexcept override
< memory allocation and structure definitions are valid.
Definition: cScriptContext.h:73
cIUnkPtr< IXObject > get_BaseObject() const noexcept
Definition: cScriptContext.h:118
@ M_QTY
Definition: cScriptContext.h:42
Definition: cScriptableObj.h:26
Definition: cScriptableInterface.h:97
Definition: cVarMap.h:109
Definition: cVariant.h:26
Definition: cIUnkPtr.h:32
Definition: cStream.h:126
Definition: IAuthUser.h:17
Definition: IXObject.h:46
Definition: cMesh.h:22
PLEVEL_TYPE
Definition: PrivLevel.h:16
class __DECL_IMPORT cScriptContext
Definition: cScriptableInterface.h:31