I think I already learned this and I forget when I had the idea about TypeInfo. 
:) 

This is basically the pattern I’m attempting. I have a generic class and I 
thought I could avoid specializing and making a subclass so that I could call a 
method if the type of the generic was a class. So what happens as you now is 
that I can’t cast “value” to TObject because if the generic was specialized as 
an integer for example, the type cast would be illegal and I get stuck at 
compile time (Illegal type conversion: "LongInt" to "TObject”).

Is there anyway I could push the type checking to runtime? I wanted to using 
writeln also to perform some printing for debugging but I get stuck at compile 
time again trying to mix, integers, strings, records, classes etc… in the 
generic. I would use an interface but there are compiler types and records 
involved so that’s not an option.

type
        TLongIntMatrix = specialize TMatrix<LongInt>;
        TObjectMatrix = specialize TMatrix<TObject>;


function TMatrix.RetainValue (value: T): T;
begin
        if typeKind = tkClass then
                TObject(value).Retain;
                
        result := value;
end;



Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to