Developers of C/C++ will probably be a little confused over the lack of pointers. I use syntax like:
Func MyFunc(MyObject ob)
What is “ob”? Am I sending the full object, a reference or a pointer?
Func MyFunc(MyObject ob, uint32 i) ob.myParameter = 1 i=2 End MyObject foo uint32 var Call MyFunc(foo, var)
In C/C++ this would create a copy on the stack, so any changes would remain local. This is very clear in C/C++ because we control pointers. In other languages “MyObject” would become a hidden pointer with the consequence that the assign inside the function would alter “foo” while the 2nd assign will only change the local copy if “i”.
The idea (for now) is that objects always are passed as a pointer by default, while build in data-types always create a local stack entry.
Func MyFunc(copy MyObject ob, Reference uint32 i) ob.myParameter = 1 i=2 End
This one add a option parameter “copy” to force the object to become a local stack copy in case we need that option. I also add the keyword “Reference” to force i to become a pointer so that changing I will change the oroginal variable. Using “Reference” will generate an error if we try calling this with a constant value.