Testing object type

BlitzMax Forums/BlitzMax Programming/Testing object type

KamaShin(Posted 2005) [#1]
I was wondering how I could know if an object is an Int or anything else...
I ve got something like this:
Function TestType (o:Object)
     If o isA Int Then
          Return True
     Else
          Return False
     End If
End Function

Well... this is some pseudo code since IsA doesn't exist... but how could I do this?
I ve seen in the doc that to test if an object is of type TImage you do:
If TImage(o) Then
'your code
End If
so I tried doing something like:
If Int(o) Then...
but this return an error like "Unable to convert from object to int"


Dreamora(Posted 2005) [#2]
This is because numericals and strings are no types in the same meaning of the other types.

So for such a check you will have to test
if object(o)

else
 ' your numerical / string tests here

endif



KamaShin(Posted 2005) [#3]
Well, the truth is that I wanted to create a Remove function that remove an element from a given array: however I wanted to have 2 possibilities:
either call Remove(MyArray:Object[], index:Int) where index is the index of the element to remove
or call Remove(MyArray:Object[], o:Object) where o would be the object to remove from the array
So I first tried to overload the Remove function but this doesn't seem to work as the compiler refuses it...
then I had the idea to only create the Remove(MyArray:Object[], o:Object) and test o to know if it's an int or any other object... but I don't know how to do that :(


KamaShin(Posted 2005) [#4]
Oooooooh... that simple??? damn I didn't even give a thought to such a solution... damn, thanks Dreamora :))


KamaShin(Posted 2005) [#5]
Huuh... one last question then... How do you differentiate a string from an int??? If I call Int(o) it will always convert it to an Int even if it's a string... Then if I call Str(o), even if o is an int it will be converted to a string...


Dreamora(Posted 2005) [#6]
How about a more OO centered naming?

remove_object ()
remove_by_index ()


KamaShin(Posted 2005) [#7]
well... I thought about it and will eventually do it this way... but I would have liked to have a single Remove procedure... cause it's annoying to type remove_object(...) since there is no codecompletion... well... I think I ll do it this way 'cause it appears I m stucked :(