how can i use the derive-hierarchy at runtime for typechecking?
    dennis luehring 
    dl.soluz at gmx.net
       
    Thu Sep 20 23:42:13 PDT 2007
    
    
  
Jarrett Billingsley schrieb:
> "Chris Nicholson-Sauls" <ibisbasenji at gmail.com> wrote in message 
> news:fcupko$kh7$2 at digitalmars.com...
> 
>> void ifIs (S, T) (S obj, void delegate(T) dg) {
>>   if (auto casted = cast(T) obj) dg(casted);
>> }
> 
> Or you could skip Downs' confusing way of writing code entirely ( ;) ) and 
> just use:
> 
> if(auto b = cast(B)foo)
> {
>     // do stuff with b
> } 
> 
> 
and how can i insert this test in my base-class to hide the type stuff
class base
{
   int base_bla;
   bool is_derived_from( base other )
   {
     auto check = cast(typeof(this))other;
     return !( check is null );
     // why can't i compile this
     // return ( auto check = cast(typeof(this))other );
   }
}
class test: base
{
   int test_bla;
}
class blub: test
{
   int blub_bla;
}
the is_derived_from test is always true
maybe because of the base type parameter in is_derived_from
and the other thing i need to know(show) the derive-hierachy
"the hole story"
in my c++ project i use objects which represents the type of an object
for example
class car // real implementation
{
}
class car_class // object-type of class car
{
   car create_instance(); ...
   bool is_derived_from
   base_class[] derived_from_me();
   base_class[] base_class_of();
}
and many [whatever]_class objects in my known-types-pool
for example:
i can ask which "types" i know
i can create real types of it
i can ask for the derives/bases of an "type"
i can test if an "type" is hierachical "compatible"=derived from with 
another "type"
and just need to know my base-class interface for doing this
...
all this is done by using my own decription.language (with derive 
ability) and an c++ code generator...
i hope to find a better (more compiletime based) way to get the same 
features - i want to get rid of this generator stuff
ciao dennis
    
    
More information about the Digitalmars-d-learn
mailing list