Saaa wrote:
My first stab at the get function.
As you might see, I need help :D
Thanks!

How do I make the function take a variadic argument and get its type?

void get(in char[][] file, in char[] identifier, ...)
{
        TypeInfo type = _arguments[0];
        void* var = _argptr;
        // etc
}

void get(in char[][] file, in char[] indentifier, void* var)
{

TypeInfo type = typeof(var);
int row;

// Is it possible to check it is an array, no matter the depth?

If you use tango:

import tango.core.RuntimeTraits;
if (isArray(type)) {}

Otherwise, just copy the code from RuntimeTraits. The functions you would need are: realType, isStaticArray, isDynamicArray, isArray

if ( !( type ==  typeid(int) || type == typeid(int[][])  ) ) // || etc
{
  throw new exception;
  //which kind of exception should I throw?

Define your own exception type.

//what is the prototype of a function which has a variadic return type?

"Variadic" means that the function can take any number of arguments.

Use Variant, from std.variant or tango.core.Variant. It's typesafe. You could also return a void*, but that will require allocation.

var = parse(file, row, type, identifier);
//can all types hold null?

If you use Variant, you can check isEmpty / hasValue or some such.

Reply via email to