9 from datalayer.clib_variant
import C_DLR_VARIANT
16 status of function call
21 INVALID_ADDRESS = 0x80010001
22 UNSUPPORTED = 0x80010002
23 OUT_OF_MEMORY = 0x80010003
24 LIMIT_MIN = 0x80010004
25 LIMIT_MAX = 0x80010005
26 TYPE_MISMATCH = 0x80010006
27 SIZE_MISMATCH = 0x80010007
28 INVALID_FLOATINGPOINT = 0x80010009
29 INVALID_HANDLE = 0x8001000A
30 INVALID_OPERATION_MODE = 0x8001000B
31 INVALID_CONFIGURATION = 0x8001000C
32 INVALID_VALUE = 0x8001000D
33 SUBMODULE_FAILURE = 0x8001000E
35 ALREADY_EXISTS = 0x80010010
36 CREATION_FAILED = 0x80010011
37 VERSION_MISMATCH = 0x80010012
38 DEPRECATED = 0x80010013
39 PERMISSION_DENIED = 0x80010014
40 NOT_INITIALIZED = 0x80010015
42 COMM_PROTOCOL_ERROR = 0x80020001
43 COMM_INVALID_HEADER = 0x80020002
45 CLIENT_NOT_CONNECTED = 0x80030001
49 RT_NOT_OPEN = 0x80060001
50 RT_INVALID_OBJECT = 0x80060002
51 RT_WRONG_REVISION = 0x80060003
52 RT_NO_VALID_DATA = 0x80060004
53 RT_MEMORY_LOCKED = 0x80060005
54 RT_INVALID_MEMORY_MAP = 0x80060006
55 RT_INVALID_RETAIN = 0x80060007
56 RT_INVALID_ERROR = 0x80060008
59 sec_noSEC_NO_TOKEN_token = 0x80070001
60 SEC_INVALID_SESSION = 0x80070002
61 SEC_INVALID_TOKEN_CONTENT = 0x80070003
62 SEC_UNAUTHORIZED = 0x80070004
65 def _missing_(cls, value):
69 i = 0xFFFFFFFF & value
72 if (i >= 0x80010001)
and (i <= 0x80010015):
74 if (i >= 0x80020001)
and (i <= 0x80020002):
78 if (i >= 0x80060001)
and (i <= 0x80060008):
80 if (i >= 0x80070001)
and (i <= 0x80070004):
122 Variant is a container for a many types of data.
124 Hint: see python context manager for instance handling
127 __slots__ = [
'_variant',
'__closed']
129 def __init__(self, c_variant: C_DLR_VARIANT =
None):
134 if c_variant
is None:
135 self.
_variant = datalayer.clib.libcomm_datalayer.DLR_variantCreate()
142 use the python context manager
146 def __exit__(self, exc_type, exc_val, exc_tb):
148 use the python context manager
160 closes the variant instance
165 datalayer.clib.libcomm_datalayer.DLR_variantDelete(self.
_variant)
169 handle value of variant
175 Returns the type of the variant
176 @returns <VariantType>
182 Returns the pointer to the data of the variant
183 @returns array of bytes
185 length = datalayer.clib.libcomm_datalayer.DLR_variantGetSize(
187 c_data = ctypes.string_at(
188 datalayer.clib.libcomm_datalayer.DLR_variantGetData(self.
_variant), length)
189 return bytearray(c_data)
193 @returns size of the type in bytes
195 return datalayer.clib.libcomm_datalayer.DLR_variantGetSize(self.
_variant)
199 Returns the count of elements in the variant (scalar data types = 1, array = count of elements in array)
200 @returns count of a type
202 return datalayer.clib.libcomm_datalayer.DLR_variantGetCount(self.
_variant)
206 Checks whether the variant can be converted to another type
207 @returns <Result>, status of function call
209 return Result(datalayer.clib.libcomm_datalayer.DLR_variantCheckConvert(
213 def copy(c_variant: C_DLR_VARIANT):
215 copies the content of a variant to another variant
216 @returns tuple (Result, Variant)
217 @return <Result>, status of function call,
218 @return <Variant>, copy of variant
221 result =
Result(datalayer.clib.libcomm_datalayer.DLR_variantCopy(
222 dest._variant, c_variant))
227 clones the content of a variant to another variant
228 @returns tuple (Result, Variant)
229 @return <Result>, status of function call,
230 @return <Variant>, clones of variant
236 Returns the value of the variant as a bool (auto convert if possible) otherwise 0
237 @returns [True, False]
239 return datalayer.clib.libcomm_datalayer.DLR_variantGetBOOL8(self.
_variant)
243 Returns the value of the variant as a int8 (auto convert if possible) otherwise 0
246 return datalayer.clib.libcomm_datalayer.DLR_variantGetINT8(self.
_variant)
250 Returns the value of the variant as a uint8 (auto convert if possible) otherwise 0
253 return datalayer.clib.libcomm_datalayer.DLR_variantGetUINT8(self.
_variant)
257 Returns the value of the variant as a int16 (auto convert if possible) otherwise 0
258 @returns [-32768, 32767]
260 return datalayer.clib.libcomm_datalayer.DLR_variantGetINT16(self.
_variant)
264 Returns the value of the variant as a uint16 (auto convert if possible) otherwise 0
267 return datalayer.clib.libcomm_datalayer.DLR_variantGetUINT16(self.
_variant)
271 Returns the value of the variant as a int32 (auto convert if possible) otherwise 0
272 @returns [-2.147.483.648, 2.147.483.647]
274 return datalayer.clib.libcomm_datalayer.DLR_variantGetINT32(self.
_variant)
278 Returns the value of the variant as a Uint32 (auto convert if possible) otherwise 0
279 @returns [0, 4.294.967.295]
281 return datalayer.clib.libcomm_datalayer.DLR_variantGetUINT32(self.
_variant)
285 Returns the value of the variant as a int64 (auto convert if possible) otherwise 0
286 @returns [-9.223.372.036.854.775.808, 9.223.372.036.854.775.807]
288 return datalayer.clib.libcomm_datalayer.DLR_variantGetINT64(self.
_variant)
292 Returns the value of the variant as a uint64 (auto convert if possible) otherwise 0
293 @returns [0, 18446744073709551615]
295 return datalayer.clib.libcomm_datalayer.DLR_variantGetUINT64(self.
_variant)
299 Returns the value of the variant as a float (auto convert if possible) otherwise 0
300 @returns [1.2E-38, 3.4E+38]
302 return datalayer.clib.libcomm_datalayer.DLR_variantGetFLOAT32(self.
_variant)
306 Returns the value of the variant as a double (auto convert if possible) otherwise 0
307 @returns [2.3E-308, 1.7E+308]
309 return datalayer.clib.libcomm_datalayer.DLR_variantGetFLOAT64(self.
_variant)
313 Returns the array of bool8 if the type is a array of bool otherwise null
318 b = datalayer.clib.libcomm_datalayer.DLR_variantGetSTRING(
322 return b.decode(
'utf-8')
326 Returns the flatbuffers if the type is a flatbuffers otherwise null
327 @returns flatbuffer (bytearray)
336 Returns the array of int8 if the type is a array of int8 otherwise null
337 @returns array of bool8
342 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfBOOL8(
344 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
346 return [c_data[i]
for i
in range(length)]
350 Returns the array of int8 if the type is a array of int8 otherwise null
351 @returns array of int8
355 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfINT8(
357 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
359 return [c_data[i]
for i
in range(length)]
363 Returns the array of uint8 if the type is a array of uint8 otherwise null
364 @returns array of uint8
368 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfUINT8(
370 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
372 return [c_data[i]
for i
in range(length)]
376 Returns the array of int16 if the type is a array of int16 otherwise null
377 @returns array of int16
381 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfINT16(
383 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
385 return [c_data[i]
for i
in range(length)]
389 Returns the array of uint16 if the type is a array of uint16 otherwise null
390 @returns array of uint16
392 if self.
check_convert(VariantType.ARRAY_UINT16) != Result.OK:
394 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfUINT16(
396 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
398 return [c_data[i]
for i
in range(length)]
402 Returns the array of int32 if the type is a array of int32 otherwise null
403 @returns array of int32
407 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfINT32(
409 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
411 return [c_data[i]
for i
in range(length)]
415 Returns the array of uint32 if the type is a array of uint32 otherwise null
416 @returns array of uint32
418 if self.
check_convert(VariantType.ARRAY_UINT32) != Result.OK:
420 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfUINT32(
422 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
424 return [c_data[i]
for i
in range(length)]
428 Returns the array of int64 if the type is a array of int64 otherwise null
429 @returns array of int64
433 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfINT64(
435 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
437 return [c_data[i]
for i
in range(length)]
441 Returns the array of uint64 if the type is a array of uint64 otherwise null
442 @returns array of uint64
444 if self.
check_convert(VariantType.ARRAY_UINT64) != Result.OK:
446 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfUINT64(
448 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
450 return [c_data[i]
for i
in range(length)]
454 Returns the array of float if the type is a array of float otherwise null
455 @returns array of float32
457 if self.
check_convert(VariantType.ARRAY_FLOAT32) != Result.OK:
459 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfFLOAT32(
461 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
463 return [c_data[i]
for i
in range(length)]
467 Returns the array of double if the type is a array of double otherwise null
468 @returns array of float64
470 if self.
check_convert(VariantType.ARRAY_FLOAT64) != Result.OK:
472 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfFLOAT64(
474 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
476 return [c_data[i]
for i
in range(length)]
480 Returns the type of the variant
481 @returns array of strings
483 if self.
check_convert(VariantType.ARRAY_STRING) != Result.OK:
485 c_data = datalayer.clib.libcomm_datalayer.DLR_variantGetArrayOfSTRING(
487 length = datalayer.clib.libcomm_datalayer.DLR_variantGetCount(
489 return [c_data[i].decode(
'utf-8')
for i
in range(length)]
491 def set_bool8(self, data: bool) -> Result:
494 @returns <Result>, status of function call
496 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetBOOL8(self.
_variant, data))
498 def set_int8(self, data: int) -> Result:
501 @returns <Result>, status of function call
503 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetINT8(self.
_variant, data))
505 def set_uint8(self, data: int) -> Result:
508 @returns <Result>, status of function call
510 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetUINT8(self.
_variant, data))
512 def set_int16(self, data: int) -> Result:
515 @returns <Result>, status of function call
517 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetINT16(self.
_variant, data))
522 @returns <Result>, status of function call
524 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetUINT16(self.
_variant, data))
526 def set_int32(self, data: int) -> Result:
529 @returns <Result>, status of function call
531 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetINT32(self.
_variant, data))
536 @returns <Result>, status of function call
538 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetUINT32(self.
_variant, data))
540 def set_int64(self, data: int) -> Result:
543 @returns <Result>, status of function call
545 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetINT64(self.
_variant, data))
550 @returns <Result>, status of function call
552 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetUINT64(self.
_variant, data))
557 @returns <Result>, status of function call
559 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetFLOAT32(self.
_variant, data))
564 @returns <Result>, status of function call
566 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetFLOAT64(self.
_variant, data))
571 @returns <Result>, status of function call
573 b_data = data.encode(
'utf-8')
574 return Result(datalayer.clib.libcomm_datalayer.DLR_variantSetSTRING(self.
_variant, b_data))
579 @returns <Result>, status of function call
581 buf = (ctypes.c_byte * len(data)).from_buffer(data)
582 c_data = ctypes.cast(buf, ctypes.POINTER(ctypes.c_byte))
583 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetFlatbuffers(
591 @returns <Result>, status of function call
593 c_data = (ctypes.c_bool * len(data))(*data)
594 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_BOOL8(
602 @returns <Result>, status of function call
604 c_data = (ctypes.c_int8 * len(data))(*data)
605 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_INT8(
613 @returns <Result>, status of function call
615 c_data = (ctypes.c_uint8 * len(data))(*data)
616 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_UINT8(
624 @returns <Result>, status of function call
626 c_data = (ctypes.c_int16 * len(data))(*data)
627 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_INT16(
635 @returns <Result>, status of function call
637 c_data = (ctypes.c_uint16 * len(data))(*data)
638 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_UINT16(
646 @returns <Result>, status of function call
648 c_data = (ctypes.c_int32 * len(data))(*data)
649 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_INT32(
657 @returns <Result>, status of function call
659 c_data = (ctypes.c_uint32 * len(data))(*data)
660 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_UINT32(
668 @returns <Result>, status of function call
670 c_data = (ctypes.c_int64 * len(data))(*data)
671 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_INT64(
679 @returns <Result>, status of function call
681 c_data = (ctypes.c_uint64 * len(data))(*data)
682 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_UINT64(
690 @returns <Result>, status of function call
692 c_data = (ctypes.c_float * len(data))(*data)
693 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_FLOAT32(
701 @returns <Result>, status of function call
703 c_data = (ctypes.c_double * len(data))(*data)
704 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_FLOAT64(
712 @returns <Result>, status of function call
714 c_data = (ctypes.c_char_p * len(data))(*
715 [d.encode(
'utf-8')
for d
in data])
716 r =
Result(datalayer.clib.libcomm_datalayer.DLR_variantSetARRAY_OF_STRING(
724 Variant Helper interface,
725 Important: store not an instance of VariantRef, uses the clone/copy function
728 def __init__(self, c_variant: C_DLR_VARIANT =
None):
740 def __exit__(self, exc_type, exc_val, exc_tb):