123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- # common utility functions for all bindings generators
- import re
- re_1d_array = re.compile(r"^(?:const )?\w*\s*\*?\[\d*\]$")
- re_2d_array = re.compile(r"^(?:const )?\w*\s*\*?\[\d*\]\[\d*\]$")
- def is_1d_array_type(s):
- return re_1d_array.match(s) is not None
- def is_2d_array_type(s):
- return re_2d_array.match(s) is not None
- def is_array_type(s):
- return is_1d_array_type(s) or is_2d_array_type(s)
- def extract_array_type(s):
- return s[:s.index('[')].strip()
- def extract_array_sizes(s):
- return s[s.index('['):].replace('[', ' ').replace(']', ' ').split()
- def is_string_ptr(s):
- return s == "const char *"
- def is_const_void_ptr(s):
- return s == "const void *"
- def is_void_ptr(s):
- return s == "void *"
- def is_func_ptr(s):
- return '(*)' in s
- def extract_ptr_type(s):
- tokens = s.split()
- if tokens[0] == 'const':
- return tokens[1]
- else:
- return tokens[0]
- # PREFIX_BLA_BLUB to bla_blub
- def as_lower_snake_case(s, prefix):
- outp = s.lower()
- if outp.startswith(prefix):
- outp = outp[len(prefix):]
- return outp
- # prefix_bla_blub => blaBlub, PREFIX_BLA_BLUB => blaBlub
- def as_lower_camel_case(s, prefix):
- outp = s.lower()
- if outp.startswith(prefix):
- outp = outp[len(prefix):]
- parts = outp.split('_')
- outp = parts[0]
- for part in parts[1:]:
- outp += part.capitalize()
- return outp
|