-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathunionObjectExample2.py
More file actions
executable file
·49 lines (39 loc) · 1.32 KB
/
unionObjectExample2.py
File metadata and controls
executable file
·49 lines (39 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env python
from __future__ import print_function
from pvaccess import *
print('\n*************************')
print('\nTEST regular union')
pvtemp = PvObject({ 'd' : DOUBLE, 'dArr' : [DOUBLE]})
print('\nCONSTRUCT union via pvtemp structure:')
print(pvtemp.getStructureDict())
union = PvUnion(pvtemp)
print('union=PvUnion(pvtemp):\n',union)
print('introspection:\n',union.getStructureDict())
print('dictionary:\n',union.toDict())
union2 = PvObject({'value' : ({ 'd' : DOUBLE, 'dArr' : [DOUBLE]},)})
print('\nCONSTRUCT union via value tuple:')
print('union2=PvObject({"value":({},)}):\n',union2)
print('introspection:\n',union2.getStructureDict())
print('dictionary:\n',union2.toDict())
pv = union
isVariant = pv.isUnionVariant()
if isVariant==True :
print(channelName,'is a variant array')
exit
names = pv.getUnionFieldNames()
print('\nunion fieldNames: ',names)
print('\nSELECT double field')
value = pv.selectUnionField('d')
print('value:\n', value)
value.setDouble(2.0)
print('\nAFTER setDouble')
print('pv structure:\n',pv)
print('pv dictionary:\n',pv.get())
print('value:\n', value)
print('\nSELECT double array field')
value = pv.selectUnionField('dArr')
value.setScalarArray([1.0,2.0,3.0,4.0])
print('\nAFTER setScalarArray')
print('pv structure:\n',pv)
print('pv dictionary:\n',pv.get())
print('value:\n', value)