Skip to content

Commit 37ea6ef

Browse files
authored
Enabling enum flags plugin changes (#2114)
* Enabling Enum Flags plugin changes * Updating the test cases * Making import pytest to global * Updating documentation changes * Updating enum type * Updating the test case to check the values * Updating the test case based on code review * Code review comments * Including comment * Updated test cases
1 parent fd32da7 commit 37ea6ef

File tree

23 files changed

+168
-7
lines changed

23 files changed

+168
-7
lines changed

build/templates/_visatype.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
ViInt32 = ctypes.c_int32
1515
ViUInt32 = ctypes.c_uint32
1616
ViInt64 = ctypes.c_int64
17+
ViUInt64 = ctypes.c_uint64
1718
ViString = ctypes.c_char_p
1819
ViReal32 = ctypes.c_float
1920
ViReal64 = ctypes.c_double

build/templates/enums.py.mako

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ config = template_parameters['metadata'].config
66
enums = config['enums']
77
%>
88
from enum import Enum
9+
% if any(enums[e].get('enum_class', 'Enum') == 'IntFlag' for e in enums):
10+
from enum import IntFlag
11+
% endif
912
% for enum_name in sorted(helper.filter_codegen_enums(enums)):
1013

1114

12-
class ${enums[enum_name]['python_name']}(Enum):
15+
class ${enums[enum_name]['python_name']}(${enums[enum_name].get('enum_class', 'Enum')}):
1316
<%
1417
print_list = []
1518
%>\

generated/nidcpower/nidcpower/_visatype.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
ViInt32 = ctypes.c_int32
1515
ViUInt32 = ctypes.c_uint32
1616
ViInt64 = ctypes.c_int64
17+
ViUInt64 = ctypes.c_uint64
1718
ViString = ctypes.c_char_p
1819
ViReal32 = ctypes.c_float
1920
ViReal64 = ctypes.c_double

generated/nidigital/nidigital/_visatype.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
ViInt32 = ctypes.c_int32
1515
ViUInt32 = ctypes.c_uint32
1616
ViInt64 = ctypes.c_int64
17+
ViUInt64 = ctypes.c_uint64
1718
ViString = ctypes.c_char_p
1819
ViReal32 = ctypes.c_float
1920
ViReal64 = ctypes.c_double

generated/nidmm/nidmm/_visatype.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
ViInt32 = ctypes.c_int32
1515
ViUInt32 = ctypes.c_uint32
1616
ViInt64 = ctypes.c_int64
17+
ViUInt64 = ctypes.c_uint64
1718
ViString = ctypes.c_char_p
1819
ViReal32 = ctypes.c_float
1920
ViReal64 = ctypes.c_double

generated/nifake/nifake/_grpc_stub_interpreter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ def fetch_waveform(self, number_of_samples): # noqa: N802
144144
def fetch_waveform_into(self, number_of_samples): # noqa: N802
145145
raise NotImplementedError('numpy-specific methods are not supported over gRPC')
146146

147+
def function_with_intflag_parameter(self, flag): # noqa: N802
148+
self._invoke(
149+
self._client.FunctionWithIntflagParameter,
150+
grpc_types.FunctionWithIntflagParameterRequest(vi=self._vi, flag=flag.value),
151+
)
152+
147153
def function_with_repeated_capability_type(self, site_list): # noqa: N802
148154
raise NotImplementedError('function_with_repeated_capability_type is not supported over gRPC')
149155

generated/nifake/nifake/_library.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def __init__(self, ctypes_library):
3636
self.niFake_EnumInputFunctionWithDefaults_cfunc = None
3737
self.niFake_ExportAttributeConfigurationBuffer_cfunc = None
3838
self.niFake_FetchWaveform_cfunc = None
39+
self.niFake_FunctionWithIntflagParameter_cfunc = None
3940
self.niFake_FunctionWithRepeatedCapabilityType_cfunc = None
4041
self.niFake_GetABoolean_cfunc = None
4142
self.niFake_GetANumber_cfunc = None
@@ -187,6 +188,14 @@ def niFake_FetchWaveform(self, vi, number_of_samples, waveform_data, actual_numb
187188
self.niFake_FetchWaveform_cfunc.restype = ViStatus # noqa: F405
188189
return self.niFake_FetchWaveform_cfunc(vi, number_of_samples, waveform_data, actual_number_of_samples)
189190

191+
def niFake_FunctionWithIntflagParameter(self, vi, flag): # noqa: N802
192+
with self._func_lock:
193+
if self.niFake_FunctionWithIntflagParameter_cfunc is None:
194+
self.niFake_FunctionWithIntflagParameter_cfunc = self._get_library_function('niFake_FunctionWithIntflagParameter')
195+
self.niFake_FunctionWithIntflagParameter_cfunc.argtypes = [ViSession, ViUInt64] # noqa: F405
196+
self.niFake_FunctionWithIntflagParameter_cfunc.restype = ViStatus # noqa: F405
197+
return self.niFake_FunctionWithIntflagParameter_cfunc(vi, flag)
198+
190199
def niFake_FunctionWithRepeatedCapabilityType(self, vi, site_list): # noqa: N802
191200
with self._func_lock:
192201
if self.niFake_FunctionWithRepeatedCapabilityType_cfunc is None:

generated/nifake/nifake/_library_interpreter.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,13 @@ def fetch_waveform_into(self, waveform_data): # noqa: N802
218218
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
219219
return
220220

221+
def function_with_intflag_parameter(self, flag): # noqa: N802
222+
vi_ctype = _visatype.ViSession(self._vi) # case S110
223+
flag_ctype = _visatype.ViUInt64(flag.value) # case S130
224+
error_code = self._library.niFake_FunctionWithIntflagParameter(vi_ctype, flag_ctype)
225+
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
226+
return
227+
221228
def function_with_repeated_capability_type(self, site_list): # noqa: N802
222229
vi_ctype = _visatype.ViSession(self._vi) # case S110
223230
site_list_ctype = ctypes.create_string_buffer(site_list.encode(self._encoding)) # case C010

generated/nifake/nifake/_visatype.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
ViInt32 = ctypes.c_int32
1515
ViUInt32 = ctypes.c_uint32
1616
ViInt64 = ctypes.c_int64
17+
ViUInt64 = ctypes.c_uint64
1718
ViString = ctypes.c_char_p
1819
ViReal32 = ctypes.c_float
1920
ViReal64 = ctypes.c_double

generated/nifake/nifake/enums.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# This file was generated
33

44
from enum import Enum
5+
from enum import IntFlag
56

67

78
class Color(Enum):
@@ -53,6 +54,21 @@ class FloatEnum(Enum):
5354
'''
5455

5556

57+
class IntFlagEnum(IntFlag):
58+
A = 1
59+
r'''
60+
Flag A option.
61+
'''
62+
B = 2
63+
r'''
64+
Flag B option.
65+
'''
66+
C = 9223372036854775808
67+
r'''
68+
Flag C option.
69+
'''
70+
71+
5672
class MobileOSNames(Enum):
5773
ANDROID = 'Android'
5874
r'''

0 commit comments

Comments
 (0)