ezEngine  Milestone 7
ConsoleFunctionHelper_inl.h
1 // NO #pragma once in this file !
2 
3 template <typename R EZ_COMMA_IF(ARG_COUNT) EZ_LIST(typename P, ARG_COUNT)>
4 class ezConsoleFunction<R (EZ_LIST(P, ARG_COUNT))> : public ezConsoleFunctionBase
5 {
6 public:
8 
9  FUNC m_Func;
10 
11  ezConsoleFunction(const char* szFunctionName, const char* szDescription, FUNC f) : ezConsoleFunctionBase(szFunctionName, szDescription)
12  {
13  m_Func = f;
14  }
15 
16  ezUInt32 GetNumParameters() const override { return ARG_COUNT; }
17 
18  virtual ezVariant::Type::Enum GetParameterType(ezUInt32 uiParam) const override
19  {
20  EZ_ASSERT_DEV(uiParam < GetNumParameters(), "Invalid Parameter Index %d", uiParam);
21 
22 #if (ARG_COUNT > 0)
23 
24  switch (uiParam)
25  {
26  case 0:
28 
29 #if (ARG_COUNT > 1)
30  case 1:
32 #endif
33 #if (ARG_COUNT > 2)
34  case 2:
36 #endif
37 #if (ARG_COUNT > 3)
38  case 3:
40 #endif
41 #if (ARG_COUNT > 4)
42  case 4:
44 #endif
45 #if (ARG_COUNT > 5)
46  case 5:
48 #endif
49  }
50 
51 #endif
53  }
54 
55  virtual ezResult Call(ezArrayPtr<ezVariant> params) override
56  {
57  ezResult r = EZ_FAILURE;
58  EZ_IGNORE_UNUSED(r);
59 
60 #if (ARG_COUNT > 0)
61  P0 param0 = params[0].ConvertTo<P0>(&r);
62 
63  if (r.Failed())
64  return EZ_FAILURE;
65 #endif
66 
67 #if (ARG_COUNT > 1)
68  P1 param1 = params[1].ConvertTo<P1>(&r);
69 
70  if (r.Failed())
71  return EZ_FAILURE;
72 #endif
73 
74 #if (ARG_COUNT > 2)
75  P2 param2 = params[2].ConvertTo<P2>(&r);
76 
77  if (r.Failed())
78  return EZ_FAILURE;
79 #endif
80 
81 #if (ARG_COUNT > 3)
82  P3 param3 = params[3].ConvertTo<P3>(&r);
83 
84  if (r.Failed())
85  return EZ_FAILURE;
86 #endif
87 
88 #if (ARG_COUNT > 4)
89  P4 param4 = params[4].ConvertTo<P4>(&r);
90 
91  if (r.Failed())
92  return EZ_FAILURE;
93 #endif
94 
95 #if (ARG_COUNT > 5)
96  P5 param5 = params[5].ConvertTo<P5>(&r);
97 
98  if (r.Failed())
99  return EZ_FAILURE;
100 #endif
101 
102  m_Func(EZ_LIST(param, ARG_COUNT));
103  return EZ_SUCCESS;
104  }
105 };
106 
107 
108