The IDL_PRIMITIVE function creates a new IDL_PRIMITIVE. An IDL_PRIMITIVE is a container for IDL primitive data types including any mixture of scalars, arrays, lists, hashes, and other dictionaries. IDL_PRIMITIVE is typically used with IDLParameterPrimitive to allow an IDLTask that defines a parameter as type PRIMITIVE to preserve the structure of the data to pass through dehydration without modification. IDL Task Engine uses dehydration with json serialization to communicate via stdio. In most cases you want hydration to perserve data types and use of HASH and LIST is recommended. There are some scenarios where the key-value structure is important and you want to use IDL_PRIMITIVE. PRIMITIVE type does not guarentee reversiblity on hydration.
Examples
Create an IDL_PRIMITIVE containing a HASH and access value.
mydata = HASH("one", 1.0, "blue", [255,0,0], "Pi", !DPI)
primitive = IDL_PRIMITIVE(mydata)
PRINT, primitive.VALUE
IDL prints:
one: 1.0000000
blue: 255 0 0
Pi: 3.1415926535897931
Compare IDL_PRIMITIVE dehydration vs. HASH dehydration.
mydata = HASH("one", 1.0, "blue", [255,0,0], "Pi", !DPI)
primitive = IDL_PRIMITIVE(mydata)
PRINT, primitive.Dehydrate(), /IMPLIED_PRINT
IDL prints:
{
"one": 1.0000000,
"blue": [255, 0, 0],
"Pi": 3.1415926535897931
}
Now try IDL_PRIMITIVE dehydration:
mydata = HASH("one", 1.0, "blue", [255,0,0], "Pi", !DPI)
PRINT, mydata.Dehydrate(), /IMPLIED_PRINT
IDL prints:
{
"fold_case": false,
"elements": {
"one": {
"type": "FLOAT",
"dehydratedForm": 1.0000000
},
"blue": {
"type": "INT",
"dehydratedForm": [255, 0, 0]
},
"Pi": {
"type": "DOUBLE",
"dehydratedForm": 3.1415926535897931
}
}
}
Methods
Syntax
Result = IDL_Primitive(Value)
Arguments
Value
The value for the IDL_Primitive to contain including any mixture of scalars, arrays, lists, hashes, and other dictionaries.
Keywords
None
Properties
You can retrieve the following properties using either "dot" notation or the ::GetProperty method.
VALUE
This property contains the value IDL_PRIMITIVE contains.
IDL_Primitive::Dehydrate
The IDL_Primitive::Dehydrate method is a pass through of the value it contains.
Examples
mydata = HASH("one", 1.0, "blue", [255,0,0], "Pi", !DPI)
primitive = IDL_PRIMITIVE(mydata)
PRINT, primitive.Dehydrate(), /IMPLIED_PRINT
IDL prints:
{
"one": 1.0000000,
"blue": [255, 0, 0],
"Pi": 3.1415926535897931
}
Syntax
Result = IDL_Primitive.Dehydrate( )
Return Value
Returns the value contained by IDL_Primitive.
Arguments
None
Keywords
None
IDL_Primitive::Hydrate
The IDL_Primitive::Hydrate static method takes a value and creates an IDL_Primitive instance.
Examples
Test if HASH is valid for IDL_Primtive.
mydata = HASH("one", 1.0, "blue", [255,0,0], "Pi", !DPI)
myprimitive = IDL_Primitive.Hydrate(mydata)
help, myprimitive
IDL prints:
MYPRIMITIVE OBJREF = <ObjHeapVar2469(IDL_PRIMITIVE)>
Syntax
Result = IDL_Primitive.Hydrate( Value)
Return Value
Returns an IDL_Primitive instance.
Arguments
Value
The value for the IDL_Primitive to contain.
Keywords
None
IDL_Primitive::IsPrimitive
The IDL_Primitive::IsPrimitive static method is used to validate if the value is a IDL primitive type. It is useful if you do not want to handle a potential error on the creation of an IDL_Primitive.
Examples
Test if HASH is valid for IDL_Primtive.
mydata = HASH("one", 1.0, "blue", [255,0,0], "Pi", !DPI)
PRINT, IDL_Primitive.IsPrimitive(mydata)
IDL prints:
1
Test if a structure is valid for IDL_Primtive.
mydata = {a:0}
PRINT, IDL_Primitive.IsPrimitive(mydata)
IDL prints:
0
Syntax
Result = IDL_Primitive.IsPrimitive( Value)
Return Value
Returns a boolean if value is primitive or not.
Arguments
Value
The value to verify if is of a primitive type.
Keywords
None
Version History
See Also
IDLParameterPrimitive, IDLTask, IDL Task Engine