Skip to content

Commit a8ba18c

Browse files
Fixed an issue with generation when called from a script.
Signed-off-by: David Rebbe <drebbe@intrepidcs.com>
1 parent 203d014 commit a8ba18c

1 file changed

Lines changed: 21 additions & 44 deletions

File tree

generate_icsneo40_structs.py

Lines changed: 21 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def parse_object(f, pos=-1, pack_size=None, is_embedded=False):
206206
continue
207207
opening_bracket_count += line.count('{')
208208
opening_bracket_count -= line.count('}')
209-
assert(opening_bracket_count >= 0)
209+
assert (opening_bracket_count >= 0)
210210
# Determine if we are at the end of the struct
211211
if opening_bracket_count == 0 and re.match('}.*;', line):
212212
extra_names = ''.join(line.split()).strip('};').split(',')
@@ -271,14 +271,14 @@ def parse_struct_member(buffered_line):
271271
# uint8_t data[4 * 1024]; /* The data */
272272

273273
# remove all unneeded whitespace
274-
#print("DEBUG BEFORE:", buffered_line)
274+
# print("DEBUG BEFORE:", buffered_line)
275275
# if len(buffered_line.split('\n')):
276276
# new_buffered_line = ''
277277
# for line in buffered_line.split('\n'):
278278
# new_buffered_line += re.sub('{|union|}|;', '', line) + '\n'
279279
# buffered_line = new_buffered_line
280280
buffered_line = re.sub("\s*\[", "[", ' '.join(buffered_line.split()))
281-
#print("DEBUG AFTER:", buffered_line)
281+
# print("DEBUG AFTER:", buffered_line)
282282

283283
# Figure out if we are an array type and get the array length
284284
array_subsection = re.search('\[.*\]', buffered_line)
@@ -473,7 +473,7 @@ def format_file(filename):
473473
processed_fname = os.path.basename(filename)
474474
name, ext = os.path.splitext(processed_fname)
475475
processed_fname = f'{name}_processed{ext}'
476-
#processed_fname = "icsnVC40_processed.h"
476+
# processed_fname = "icsnVC40_processed.h"
477477
# Run it through the preprocessor
478478
# clang -E -P .\include\ics\icsnVC40.h -o output.h
479479
result = run(["clang", "-DEXTERNAL_PROJECT", "-E", "-P", filename, "-o", processed_fname], stdout=PIPE, stderr=PIPE)
@@ -597,14 +597,14 @@ def generate(filename='include/ics/icsnVC40.h'):
597597
except FileNotFoundError:
598598
pass
599599
ignore_names = [
600-
'__fsid_t', '__darwin_pthread_handler_rec',
600+
'__fsid_t', '__darwin_pthread_handler_rec',
601601
'_mbstate_t', 'mbstate_t_', 'mbstatet_', 'Mbstatet_', '_Mbstatet',
602602
'_LONGDOUBLE', 'LONGDOUBLE_',
603603
'_opaque_pthread_attr_t', '_opaque_pthread_cond_t', '_opaque_pthread_condattr_t',
604604
'_opaque_pthread_mutex_t', '_opaque_pthread_mutexattr_t', '_opaque_pthread_once_t',
605605
'_opaque_pthread_rwlock_t', '_opaque_pthread_rwlockattr_t', '_opaque_pthread_t',
606-
'crt_locale_pointers_', 'crt_locale_data_public_', '__crt_locale_data_public',
607-
'ldiv_t', 'lldiv_t', 'ldouble_', 'ldbl12_', 'div_t', 'crt_float_', 'crt_double_',
606+
'crt_locale_pointers_', 'crt_locale_data_public_', '__crt_locale_data_public',
607+
'ldiv_t', 'lldiv_t', 'ldouble_', 'ldbl12_', 'div_t', 'crt_float_', 'crt_double_',
608608
'ndis_adapter_information',
609609
'NeoDevice', 'neo_device', 'NeoDeviceEx', 'neo_device_ex',
610610
'icsSpyMessage', 'icsSpyMessageJ1850', 'ics_spy_message', 'ics_spy_message_j1850']
@@ -651,7 +651,7 @@ def generate(filename='include/ics/icsnVC40.h'):
651651
fname = re.sub('(\.py)', '', file_name)
652652
r = re.compile('(' + fname + ')')
653653
if list(filter(r.match, ignore_names)):
654-
#print("IGNORING:", fname)
654+
# print("IGNORING:", fname)
655655
continue
656656
f.write(' "')
657657
f.write(fname)
@@ -664,7 +664,7 @@ def generate(filename='include/ics/icsnVC40.h'):
664664
fname = re.sub('(\.py)', '', file_name)
665665
r = re.compile('(' + fname + ')')
666666
if list(filter(r.match, ignore_names)):
667-
#print("IGNORING:", fname)
667+
# print("IGNORING:", fname)
668668
continue
669669
f.write(f' "ics.structures.{fname}",\n')
670670
f.write(']\n\n')
@@ -739,7 +739,7 @@ def _write_member(f, member, is_struct_or_union=False):
739739
data_type = convert_to_ctype_object(member.data_type)
740740
# If we aren't a valid ctypes data type we are probably a struct
741741
if not data_type:
742-
#print(f"Warning: Couldn't find a valid ctype type for '{member.data_type}' in '{member.name}'")
742+
# print(f"Warning: Couldn't find a valid ctype type for '{member.data_type}' in '{member.name}'")
743743
global NON_CTYPE_OBJ_NAMES
744744
NON_CTYPE_OBJ_NAMES.append(member.data_type)
745745
data_type = member.data_type
@@ -779,8 +779,8 @@ def _write_member(f, member, is_struct_or_union=False):
779779

780780

781781
def generate_pyfile(c_object, path):
782-
#name = get_preferred_struct_name(c_object.names)
783-
#c_object.preferred_name = convert_to_snake_case(name)
782+
# name = get_preferred_struct_name(c_object.names)
783+
# c_object.preferred_name = convert_to_snake_case(name)
784784
# Make the fname and the path
785785
fname = f'{c_object.preferred_name}.py'
786786
fname_with_path = os.path.normpath(os.path.join(path, fname))
@@ -844,38 +844,15 @@ def generate_all_files():
844844
import os
845845
import pathlib
846846

847-
filename = 'include/ics/icsnVC40.h'
848-
if __name__ == '__main__':
849-
try:
850-
if sys.argv[0] == 'setup.py':
851-
raise IndexError
852-
# Grab the filename from the command line
853-
filename = sys.argv[1]
854-
filename = os.path.normpath(filename)
855-
print(f"Parsing '{filename}'...")
856-
except IndexError as _:
857-
# use our default path if it isn't supplied
858-
filename = 'include/ics/icsnVC40.h'
859-
if not pathlib.Path(filename).exists():
860-
raise FileNotFoundError(filename)
861-
generate(filename)
862-
863-
# Internal Header
864-
if __name__ == '__main__':
865-
filename_internal = 'include/ics/icsnVC40Internal.h'
866-
try:
867-
if sys.argv[0] == 'setup.py':
868-
raise IndexError
869-
# Grab the filename from the command line
870-
filename_internal = sys.argv[2]
871-
filename_internal = os.path.normpath(filename_internal)
872-
print(f"Parsing '{filename_internal}'...")
873-
except IndexError as _:
874-
# use our default path if it isn't supplied
875-
filename_internal = 'include/ics/icsnVC40Internal.h'
876-
if pathlib.Path(filename_internal).exists():
877-
print("WARNING: Generating internal header!")
878-
generate(filename_internal)
847+
filenames = ('icsnVC40.h', 'icsnVC40Internal.h')
848+
for filename in filenames:
849+
path = pathlib.Path('include/ics/')
850+
path = path.joinpath(filename)
851+
if path.exists():
852+
if 'Internal' in str(filename):
853+
print("WARNING: Generating internal header!")
854+
print(f"Parsing {str(path)}...")
855+
generate(str(path))
879856

880857

881858
if __name__ == '__main__':

0 commit comments

Comments
 (0)