Get Argument Helpers
GetArgument
/*
Gets a non heap object from arguments
Returns true if argument is of type T and index < args.size()
obj is set to the args[index] if it returns true
*/
template<typename T>
bool GetArgument(std::vector<TObject>& args, size_t index, T& obj);
//Heres it in code
static TObject My_Custom(GCList& ls, std::vector<TObject> args)
{
int64_t n;
if(GetArgument(args,0,n))
{
return n + 5;
}
return (int64_t)5;
}
GetArgumentHeap
/*
Gets a heap object from arguments
Returns true if argument is of type T and index < args.size()
obj is set to the args[index] if it returns true
*/
template<typename T>
bool GetArgumentHeap(std::vector<TObject>& args, size_t index, T& obj);
//Heres it in code
static TObject My_Custom(GCList& ls, std::vector<TObject> args)
{
TList* list;
if(GetArgumentHeap(args,0,list))
{
list->Add((std::string)"Hello, world");
}
return nullptr;
}
```c++
/*
Gets a non heap object from src
Returns true if argument is of type T
obj is set to src if it returns true
*/
template<typename T>
bool GetObject(TObject& src, T& obj);
//Heres it in code
static TObject My_Custom(GCList& ls, std::vector<TObject> args)
{
int64_t n;
TDictionary* dict;
if(GetArgumentHeap(args,0,dict))
{
auto item = dict->GetValue("MyItem");
if(GetObject(item, n))
return n + 5;
}
return (int64_t)5;
}
GetArgumentHeap
/*
Gets a heap object from src
Returns true if argument is of type T
obj is set to src if it returns true
*/
template<typename T>
bool GetObjectHeap(TObject& src, T& obj);
//Heres it in code
static void My_Custom(TObject something)
{
TList* ls;
if(GetObjectHeap(something, ls))
{
ls->Add((int64_t)42);
}
}