lastund = True
return (ret + lastchar.lower()).strip("_")
+def doc_to_params_ret_nullable(doc):
+ if doc is None:
+ return (set(), False)
+ params = set()
+ ret_null = False
+ for line in doc.splitlines():
+ if "may be NULL or all-0s to represent None" not in line:
+ continue
+ if "Note that the return value" in line:
+ ret_null = True
+ elif "Note that " in line:
+ param = doc.split("Note that ")[1].split(" ")[0]
+ params.add(param)
+ return (params, ret_null)
+
unitary_enums = set()
complex_enums = set()
opaque_structs = set()
return_type_info = type_mapping_generator.map_type(method_return_type.strip() + " ret", True, ret_arr_len, False, False)
+ (params_nullable, ret_nullable) = doc_to_params_ret_nullable(doc_comment)
+ if ret_nullable:
+ return_type_info.nullable = True
+
argument_types = []
default_constructor_args = {}
takes_self = False
takes_self = True
if argument_conversion_info.ty_info.is_ptr:
takes_self_ptr = True
+ elif argument_conversion_info.arg_name in params_nullable:
+ argument_conversion_info.nullable = True
if argument_conversion_info.arg_conv is not None and "Warning" in argument_conversion_info.arg_conv:
+ assert not argument_conversion_info.arg_name in params_nullable
if argument_conversion_info.rust_obj in constructor_fns:
assert not is_free
for explode_arg in constructor_fns[argument_conversion_info.rust_obj].split(','):