19 virtual std::string Name()
const=0;
20 virtual std::string
Type()
const=0;
21 virtual void *GetValue()
const=0;
22 virtual void SetValue(
void *val)=0;
25class ValueCreationObject :
public CreationObject
28 ValueCreationObject(std::string
name, T t) :
name(
name), t(t) { }
29 virtual std::string Name()
const {
return name; }
30 virtual std::string
Type()
const {
return typeid(T).
name(); }
31 virtual void *GetValue()
const {
return (
void*)&t; }
32 virtual void SetValue(
void *val)
48 virtual std::string
Name()
const=0;
58 virtual bool Editable()
const {
return false; }
59 virtual void Edit(std::string s) { }
70 std::string
Name()
const {
return name; }
72 std::string
ParamType(
int i)
const {
return ""; }
73 void SetParam(
int i,
void *param) { }
75 void *
GetReturn()
const {
return (
void*)
static_cast<const T*
>(&value); }
77 void Append(
void *param) { }
78 bool Editable()
const {
return true; }
79 void Edit(std::string s)
94 int NumParams()
const {
return arr.Size()+1; }
95 std::string
Name()
const {
return name; }
96 std::string
ReturnType()
const {
return typeid(Array<int,T>).
name(); }
97 std::string
ParamType(
int i)
const {
return typeid(T).
name(); }
101 arr.push_back((T)param);
111 return (
void*)
static_cast<Array<int,T>*
>(&arr);
114 void Append(
void *param) {
116 arr.push_back((T)param);
121 mutable VectorArray<T> arr;
130 int NumParams()
const {
return arr.Size()+1; }
131 std::string
Name()
const {
return name; }
132 std::string
ReturnType()
const {
return typeid(Array<int,T>).
name(); }
133 std::string
ParamType(
int i)
const {
return typeid(T*).
name(); }
137 arr.push_back(*(T*)param);
147 return (
void*)
static_cast<Array<int,T>*
>(&arr);
150 void Append(
void *param) {
152 arr.push_back(*(T*)param);
157 mutable VectorArray<T> arr;
166 CreationFunction0(R (*fptr)(), std::string
name) : fptr(fptr),
name(
name) { }
167 virtual bool Appendable()
const {
return false; }
168 virtual void Append(
void*) { }
170 std::string
ParamType(
int i)
const {
return ""; }
171 virtual std::string
Name()
const {
return name; }
179 void *
GetReturn()
const {
return (
void*)retval; }
180 virtual std::string
ReturnType()
const {
return typeid(R).
name(); }
189template<
class T,
class R>
194 CreationFunction1(R (*fptr2)(
const T &), std::string
name) : fptr2(fptr2),
name(
name) { }
195 virtual bool Appendable()
const {
return false; }
196 virtual void Append(
void*) { }
198 std::string
ParamType(
int i)
const {
return typeid(T).
name(); }
199 virtual std::string
Name()
const {
return name; }
204 case 0: param0 = (T*)param;
break;
213 retval = fptr2(*param0);
215 void *
GetReturn()
const {
return (
void*)retval; }
216 virtual std::string
ReturnType()
const {
return typeid(R).
name(); }
219 R (*fptr2)(
const T&);
226template<
class T1,
class T2,
class R>
231 CreationFunction2(R (*fptr2)(T1&,T2&), std::string
name,
int dummy) : fptr2(fptr2),
name(
name) { }
232 CreationFunction2(R (*fptr3)(
const T1&,
const T2&), std::string
name,
float dummy) : fptr2(NULL), fptr3(fptr3),
name(
name) { }
233 CreationFunction2(R (*fptr4)(
const T1&, T2&), std::string
name,
float dummy,
float dummy2) : fptr2(NULL), fptr3(NULL), fptr4(fptr4),
name(
name) { }
235 virtual bool Appendable()
const {
return false; }
236 virtual void Append(
void*) { }
239 virtual std::string
Name()
const {
return name; }
240 virtual std::string
ReturnType()
const {
return typeid(R).
name(); }
245 case 0:
return typeid(T1).
name();
246 case 1:
return typeid(T2).
name();
254 case 0: param0 = (T1*)param;
break;
255 case 1: param1 = (T2*)param;
break;
260 if (fptr2) { retval = fptr2(*param0, *param1); }
261 else if (fptr3) { retval = fptr3(*param0, *param1); }
262 else if (fptr4) { retval = fptr4(*param0, *param1); }
264 void *
GetReturn()
const {
return (
void*)retval; }
268 R (*fptr3)(
const T1&,
const T2&);
269 R (*fptr4)(
const T1&,T2&);
277template<
class T1,
class T2,
class T3,
class R>
281 CreationFunction3(R (*fptr)(
const T1&,
const T2&,
const T3&), std::string
name) : fptr(fptr), fptr2(0),
name(
name) { }
282 CreationFunction3(R (*fptr2)(
const T1&,
const T2&,T3&), std::string
name) : fptr(0), fptr2(fptr2),
name(
name) { }
284 virtual bool Appendable()
const {
return false; }
285 virtual void Append(
void*) { }
288 virtual std::string
Name()
const {
return name; }
289 virtual std::string
ReturnType()
const {
return typeid(R).
name(); }
294 case 0:
return typeid(T1).
name();
295 case 1:
return typeid(T2).
name();
296 case 2:
return typeid(T3).
name();
304 case 0: param0 = (T1*)param;
break;
305 case 1: param1 = (T2*)param;
break;
306 case 2: param2 = (T3*)param;
break;
313 retval = fptr2(*param0, *param1, *param2);
317 retval = fptr(*param0, *param1, *param2);
324 void *
GetReturn()
const {
return (
void*)retval; }
326 R (*fptr)(
const T1&,
const T2&,
const T3&);
327 R (*fptr2)(
const T1&,
const T2&, T3&);
346 int Size()
const {
return vec.
Size(); }
347 CreationFunction*
Index(
int i)
const {
return vec.Index(i); }
350 void push_value(std::string
name)
352 vec.push_back(
new ValueCreationFunction<T>(
name));
356 void push_back_array(std::string
name)
358 vec.push_back(
new CreationArray<T>(
name));
361 void push_back_ptr_array(std::string
name)
363 vec.push_back(
new CreationPointerArray<T>(
name));
367 void push_back(R (*fptr)(), std::string
name)
369 vec.push_back(
new CreationFunction0<R>(fptr,
name));
371 template<
class T,
class R>
372 void push_back_ref(R (*fptr)(T&), std::string
name)
374 vec.push_back(
new CreationFunction1<T,R>(fptr,
name));
383 template<
class T,
class R>
384 void push_back_cref(R (*fptr)(
const T&), std::string
name)
386 vec.push_back(
new CreationFunction1<T,R>(fptr,
name));
390 template<
class T1,
class T2,
class R>
391 void push_back_ref_ref(R (*fptr)(T1&,T2&), std::string
name)
393 vec.push_back(
new CreationFunction2<T1,T2,R>(fptr,
name, 666));
395 template<
class T1,
class T2,
class R>
396 void push_back_cref_ref(R (*fptr)(T1&,T2&), std::string
name)
398 vec.push_back(
new CreationFunction2<T1,T2,R>(fptr,
name, 666,666));
401 template<
class T1,
class T2,
class R>
402 void push_back_ref_cref(R (*fptr)(T1&,
const T2&), std::string
name)
404 vec.push_back(
new CreationFunction2<T1,T2,R>(fptr,
name));
406 template<
class T1,
class T2,
class R>
407 void push_back_cref_cref(R (*fptr)(
const T1&,
const T2&), std::string
name)
409 vec.push_back(
new CreationFunction2<T1,T2,R>(fptr,
name, 10.0));
418 template<
class T1,
class T2,
class T3,
class R>
419 void push_back_cref_cref_cref(R (*fptr)(
const T1&,
const T2&,
const T3&), std::string
name)
421 vec.push_back(
new CreationFunction3<T1,T2,T3,R>(fptr,
name));
424 template<
class T1,
class T2,
class T3,
class R>
425 void push_back_cref_cref_ref(R (*fptr)(
const T1&,
const T2&,T3&), std::string
name)
427 vec.push_back(
new CreationFunction3<T1,T2,T3,R>(fptr,
name));
444 VectorArray<CreationFunction*> vec;
P func(int c, EveryApi &ev)
Definition test.cpp:59
P tree(EveryApi &ev)
Definition test.cpp:301
Type
Definition Database.hh:9
void ExecuteGtkmm(int argc, char **argv, ExpressionTree< ExpressionNode > *&tree)
CreationFunctionArray * creation_array()
FrameAnim * CreateFrameAnim(ExpressionTree< ExpressionNode > *tree, Render *r)
std::vector< CreationFunction * > filter_creation_array(Array< int, CreationFunction * > &arr, std::string ret_type)
CurveMultiply * curve_multiply_func(MatrixCurve &curve, CurveIn3d &curve2)
std::string stringify(float x)
ArrayConvert< CreationFunctionArray, int, CreationFunction * > CreationFunctionArrayConvert
Definition Editor.hh:449
void valuefy(std::string s, T &f)
ExpressionTree< ExpressionNode > * create_expr_tree_node(CreationFunction *func)
void ExecuteEffect(ExpressionTree< ExpressionNode > *tree, Low_SDL_Surface *surf)
virtual int Size() const=0
virtual void Append(void *param)=0
virtual void Edit(std::string s)
Definition Editor.hh:59
virtual void * GetReturn() const =0
virtual std::string ParamType(int i) const =0
virtual std::string ReturnType() const =0
virtual int NumParams() const =0
virtual bool Editable() const
Definition Editor.hh:58
virtual void SetParam(int i, void *param)=0
virtual std::string Name() const =0
virtual bool Appendable() const =0
Definition Effect.hh:2171
virtual CreationFunction * Index(int a) const=0
Definition Effect.hh:1582
Definition Effect.hh:9514
iVBORw0KGgoAAAANSUhEUgAAANcAAAB5CAMAAACdtUQZAAAA51BMVEX</div ></div >< div style="padding: 0px 0px; width: 1324px;">< div style="height: 400px; width: 1324px;"></div >< div itemscope itemtype="https: </div><div itemscope itemtype="https:</div >< div itemscope itemtype="https: </div></div><p><div style="padding:0px 0px;width:1324px;"><div></div><div itemscope itemtype="https:< ul >< li >< b > Application name
8AkrcAgqgAs9wqQ0ey2tkAo8gAuuQfeI4hPUH09fXHy8z4+fng4uNKXF/Lz9BzfoAcgpkQMTUAKjAbOT4Qr9AXhJ8Rl7ktMCwTosA...
Definition meshpage.php:1610
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
CreationFunction * func
Definition Editor.hh:464
std::vector< ExpressionTree< T > * > children
Definition Editor.hh:459
T t
Definition Editor.hh:458
Definition GameApi_low.hh:679