Add types

This commit is contained in:
2025-10-22 20:53:27 -05:00
parent ed7be44d4f
commit e971e5838a
2 changed files with 121 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
+++
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<typename T>
bool GetArgument(std::vector<TObject>& args, size_t index, T& obj);
```
```c++
//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
```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<typename T>
bool GetArgumentHeap(std::vector<TObject>& args, size_t index, T& obj);
```
```c++
//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);
```
```c++
//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
```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<typename T>
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);
}
}
```

21
content/runtime/types.md Normal file
View File

@@ -0,0 +1,21 @@
+++
title = 'Types'
date = 2025-10-22T20:43:05-05:00
+++
| Name | IsHeap | Description | TypeOf |
| ===== | ======= | ============ | ====== |
| int64_t | false | A integer | "Long" |
| double | false | A double precision float | "Double" |
| char | false | A character | "Char" |
| bool | false | a boolean | "Boolean" |
| std::string | false | A string | "String" |
| std::regex | false | A regex | "Regex" |
| std::nullptr_t | false | Null | "Null" |
| Undefined | false | Undefined | "Undefined" |
| MethodInvoker | false | MethodInvoker's type | "MethodInvoker" |
| THeapObjectHolder | false | Holds onto heap object | "HeapObject" |
| TVMVersion | false | A CrossLang Version | "Version" |
| TDateTime | false | A date time | "DateTime" |
| std::shared_ptr<Tesses::Framework::Streams::Stream> | false | A Stream | "Stream" |
| std::shared_ptr<Tesses::Framework::Filesystem::VFS> | false | A Filesystem | "Filesystem" |