'Object' equivalent for basic types?

BlitzMax Forums/BlitzMax Beginners Area/'Object' equivalent for basic types?

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

I'd like to write a function that runs different code based on a passed array parameter's type. NON-working example:


SuperStrict

Local ByteMap:Byte[5,15]

Local IntMap:Int[5,15]

ProcessArray ByteMap
ProcessArray IntMap

End

Function ProcessArray(arr:Object[,] Var)
	
	If Not arr Then Return
	
	If Byte[,](arr) Then Print "Bytes"
	If Int[,](arr) Then Print "Ints"
	If Long[,](arr) Then Print "Longs"
	If Float[,](arr) Then Print "Floats"
	If Double[,](arr) Then Print "Doubles"
	
EndFunction



Is there a way to do this?


A functional Object-based equivalent would be:


SuperStrict

Local ByteMap:TByte[5,15]
ByteMap[0,0] = New TByte

Local IntMap:TInt[5,15]
IntMap[0,0] = New TInt

ProcessArray ByteMap
ProcessArray IntMap

End

Function ProcessArray(arr:Object[,] Var)
	
	If Not arr Then Return
	
	If TByte(arr[0,0]) Then Print "Bytes"
	If TInt(arr[0,0]) Then Print "Ints"
	If TLong(arr[0,0]) Then Print "Longs"
	If TFloat(arr[0,0]) Then Print "Floats"
	If TDouble(arr[0,0]) Then Print "Doubles"
	
EndFunction


Type TByte
	Field f:Byte
EndType

Type TInt
	Field f:Int
EndType

Type TLong
	Field f:Long
EndType

Type TFloat
	Field f:Float
EndType

Type TDouble
	Field f:Double
EndType 


Basically, I want a generic function that handles all types rather than writing a function for every type: ProcessByteArray, ProcessIntArray, ProcessDoubleArray, etc.