D styled data format, Json failed

Saaa empty at needmail.com
Wed May 6 09:27:56 PDT 2009


Thanks!
With this I can go on for a bit :)

"Christopher Wright" <dhasenan at gmail.com> wrote in message 
news:gtrpo7$2h7j$1 at digitalmars.com...
> 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.
> 




More information about the Digitalmars-d-learn mailing list