where const is placed after char (example inotifytools)
somefunc(char const * xxx);
Previously it resulting in char any * (or earlier, just char!)
now it says char* as the ctype.
from .sourcescanner import (
SourceSymbol, ctype_name, CTYPE_POINTER,
CTYPE_BASIC_TYPE, CTYPE_UNION, CTYPE_ARRAY, CTYPE_TYPEDEF,
from .sourcescanner import (
SourceSymbol, ctype_name, CTYPE_POINTER,
CTYPE_BASIC_TYPE, CTYPE_UNION, CTYPE_ARRAY, CTYPE_TYPEDEF,
- CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT,
+ CTYPE_VOID, CTYPE_ENUM, CTYPE_FUNCTION, CTYPE_STRUCT, CTYPE_INVALID,
CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
CSYMBOL_TYPE_ENUM, CSYMBOL_TYPE_UNION, CSYMBOL_TYPE_OBJECT,
CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS, CSYMBOL_TYPE_CONST,
CSYMBOL_TYPE_FUNCTION, CSYMBOL_TYPE_TYPEDEF, CSYMBOL_TYPE_STRUCT,
CSYMBOL_TYPE_ENUM, CSYMBOL_TYPE_UNION, CSYMBOL_TYPE_OBJECT,
CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS, CSYMBOL_TYPE_CONST,
value = 'void'
elif source_type.type == CTYPE_BASIC_TYPE:
value = source_type.name
value = 'void'
elif source_type.type == CTYPE_BASIC_TYPE:
value = source_type.name
- if source_type.base_type:
- value += ' ' + self._create_source_type(source_type.base_type)
+ # share the const down the tree..
+ if not source_type.base_type:
+ return value
+ value_add = self._create_source_type(source_type.base_type)
+ if len(value_add):
+ value += ' ' + value_add
elif source_type.type == CTYPE_TYPEDEF:
value = source_type.name
elif source_type.type == CTYPE_ARRAY:
elif source_type.type == CTYPE_TYPEDEF:
value = source_type.name
elif source_type.type == CTYPE_ARRAY:
value = self._create_source_type(source_type.base_type) + '*'
elif source_type.type == CTYPE_STRUCT:
value = source_type.name
value = self._create_source_type(source_type.base_type) + '*'
elif source_type.type == CTYPE_STRUCT:
value = source_type.name
+ elif source_type.type == CTYPE_INVALID:
+ #this happens if const is after the type..
+ value = ''
else:
value = 'any'
return value
else:
value = 'any'
return value