Forum Discussion
TheEndless
11 years agoRoku Guru
"Komag" wrote:
What about roArray, roBoolean, and Integer and roInteger?
I'm assuming:
getInterface(val, "ifArray") <> invalid
getInterface(val, "ifBoolean") <> invalid
getInterface(val, "ifInt") <> invalid
Generally speaking, yes, but I've apparently run into at least one occasion where the interface check didn't work as expected, resulting in me having these utility functions:
Function IsBoolean(value As Dynamic) As Boolean
Return GetInterface(value, "ifBoolean") <> invalid
End Function
Function IsInteger(value As Dynamic) As Boolean
Return GetInterface(value, "ifInt") <> invalid And (Type(value) = "roInt" Or Type(value) = "roInteger" Or Type(value) = "Integer")
End Function
Function IsFloat(value As Dynamic) As Boolean
Return (GetInterface(value, "ifFloat") <> invalid Or (Type(value) = "roFloat" Or Type(value) = "Float"))
End Function
Function IsDouble(value As Dynamic) As Boolean
Return (GetInterface(value, "ifDouble") <> invalid Or (Type(value) = "roDouble" Or Type(value) = "roIntrinsicDouble" Or Type(value) = "Double"))
End Function
Function IsList(value As Dynamic) As Boolean
Return GetInterface(value, "ifList") <> invalid
End Function
Function IsArray(value As Dynamic) As Boolean
Return GetInterface(value, "ifArray") <> invalid
End Function
Function IsAssociativeArray(value As Dynamic) As Boolean
Return GetInterface(value, "ifAssociativeArray") <> invalid
End Function
Function IsString(value As Dynamic) As Boolean
Return GetInterface(value, "ifString") <> invalid
End Function
Function IsDateTime(value As Dynamic) As Boolean
Return (GetInterface(value, "ifDateTime") <> invalid Or Type(value) = "roDateTime")
End Function
Function IsXmlElement(value As Dynamic) As Boolean
Return GetInterface(value, "ifXMLElement") <> invalid
End Function
Function IsFunction(value As Dynamic) As Boolean
Return GetInterface(value, "ifFunction") <> invalid
End Function
Function IsHttpAgent(value As Dynamic) As Boolean
Return GetInterface(value, "ifHttpAgent") <> invalid
End Function
Note that roDateTime, in particular, doesn't appear to actually implement the ifDateTime interface... not sure what that's all about.