+++ title = 'Get Argument Helpers' date = 2025-10-22T20:31:08-05:00 +++ ## GetArgument ```c++ /* 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 bool GetArgument(std::vector& args, size_t index, T& obj); ``` ```c++ //Heres it in code static TObject My_Custom(GCList& ls, std::vector args) { int64_t n; if(GetArgument(args,0,n)) { return n + 5; } return (int64_t)5; } ``` ## GetArgumentHeap ```c++ /* 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 bool GetArgumentHeap(std::vector& args, size_t index, T& obj); ``` ```c++ //Heres it in code static TObject My_Custom(GCList& ls, std::vector 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 bool GetObject(TObject& src, T& obj); ``` ```c++ //Heres it in code static TObject My_Custom(GCList& ls, std::vector 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 ```c++ /* Gets a heap object from src Returns true if argument is of type T obj is set to src if it returns true */ template bool GetObjectHeap(TObject& src, T& obj); ``` ```c++ //Heres it in code static void My_Custom(TObject something) { TList* ls; if(GetObjectHeap(something, ls)) { ls->Add((int64_t)42); } } ```