ChangeLog - ytomino/headmaster GitHub Wiki
0.20
fix preprocessing ## with macro argument. __attribute__((blocks(...))) is parsed. __attribute__((objc_gc(...))) is parsed. __attribute__((visibility(...))) is parsed. __builtin_object_size is parsed. blocks is parsed. fix parsing anonymous struct/union. a struct having mixed bit-field and normal field is fixed. a expression that is (int)(T)(int)expr is folded to (int)expr. ptrdiff_t, size_t, wchar_t in header are treated typedef of special-typedef. (Ada) a hidden type of formal parameter is qualified with a package name. (Ada) cast expression is qualified.
0.19
fix typing that is const of volatile of array. unsized array is always made. last unsized array in struct is replaced to [0]. alignment of array is fixed. (Ada) derived types and derived types of typedef-ed type are compatible. (Ada) cast from int to named enum is supported. (Ada) wide string literal is supported. (Ada) builtin_va_list is subtype of System.Address.
0.18
source images of numeric literals are kept in scanner/preprocessor. handling 0x1##00 as 0x100. fix preprocessing # and ## with nested macro. __attribute__((noinline)) is parsed. struct __attribute__((...)) is parsed. 'abcd' is parsed as 'a' << 24 | 'b' << 16 | 'c' << 8 | 'd'. L"wi" L"de" is parsed as L"wide". signed __int64 is accepted. (Ada) folding a long long string constant. (Ada) sized arrays are reduced. (Ada) anonymous struct in union is supported.
0.17
prefer the macro if a macro overrides normal function. (Ada) add "aliased" to extern object. (Ada) loop statements are implemented. (Ada) imaginay/complex literals are implemented. (Ada) a confliction of argument name and type name is dirty fixed.
0.16
illegal parameter like void f(void g()) as void f(void (*g)()) is accepted. better alignment of struct. (Ada) handling explicit aligned type and fix incorrect alignment unit. (Ada) limited supporting multi-dimension arrays. (Ada) all reserved words are escaped.
0.15
#pragma push_macro, pop_macro are parsed, but ignored. #pragma undef (reserved word) is parsed. __attribute__((__optimize__(...))) is parserd. fix preprocessing # and ## with macro argument. performance of #include is improved. handling mixed bit-field and normal field and better sizeof(struct). use length of initializer for no sized array like char s[] = "XYZ". pointer values in conditional expr is accepted. identifying a defined enum/struct/union tag.
0.14
ok for gc.h (Boehm GC 7.1). __builtin_return_address is added. __attribute__((..., ...)) is parserd. __attribute__((__nonnull__(...))) is parserd. __attribute__((__returns_twice__)) is parserd. cast to typedef is resolved. checking for that normal struct and bit-field are mixed. it uses mingw-w64 instead of mingw.org for testing, but incomplete. (Ada) void_ptr and void_const_ptr are subtype(s) of System.Address.
0.13
ok for libxml/xmlreader.h, libxml/xmlwriter.h (libxml2) __attribute__((alloc_size(...))) is parsed. __attribute__((unused)) is parsed. (Ada) handling a pattern opaque and full declaration are in another source. (Ada) more expanding arugment to anonymous access type.
0.12
ok for expat.h (expat) ok for png.h (libpng) ok for readline.h (readline, libedit) __attribute__((cdecl)) is parsed. __attribute__((__thiscall__)) is parsed. fix handling sequence of opaque struct -> typedef -> struct body. implicit cast to bool is inserted in if statement or conditional expr. !!expr is folded to (bool)expr. known-unparsible-marcros and known-uninterpretable-macros are separated. handling NULL pointer literal. (Ada) handling NULL pointer literal.
0.11
K&R-style formal parameters in parser. compound literal and designation in parser. for statement with declaration and switch statement in parser. #pragma instance is added, handled only initializer-macro. (Ada) string literal is fixed. (Ada) compound literal is implemented.
0.10
ok for cairo.h (cairo) error handling for illegal token like "0xL". dependency, finding is separated from semantics. dependency analysis for defined enum-element. handling implicit-conversions. (Ada) unmodified local variable to constant. (Ada) nested functions are moved to local declare block.
0.09
__attribute__((__warn_unused_result__)) is parsed. some prototypes of builtin functions are fixed. builtin comparator functions is handled. keep source order in local declarations. (Ada) handling "#define X void" (Ada) handling anonymous field in struct (Ada) some fix for formatting.
0.08
multiple source files in command line is accepted. type of statement expression is fixed. (Ada) volatile is translated with suffix "_volatile". (Ada) it outputs sized array types that is used in define renaming field. (Ada) parenthesis depending precedence of Ada logical operators is fixed. (Ada) statement expression is translated to inner function. (Ada) local variable is supported. (Ada) assignment expression in statement is supported. (Ada) enum/struct/union with #pragma for-include is supported.
0.07
ok for gmp.h (GMP) with gcc-4.2 or later. identical test for making derived types. function type is maked for every source files. function macro name used as macro argument is expanded. dereferencing typedef-ed pointer is resolved. accessing an element of typedef-ed struct/union is resolved. (Ada) macro renaming function is translated to function renaming. (Ada) if extern and extern inline conflicted, extern inline is omitted.
0.06
#pragma GCC visibility is parsed, but ignored. __attribute__((__mode__(...))) in declarator is handled. register storage class is accepted. no push/pop form of #pragma pack is accepted. (Ada) for alias name by __asm, first underscore is removed. (Ada) __attribute__((noreturn)) is translated to pragma No_Return. (Ada) conditional expression is implemented.
0.05
ok for yaml.h (libyaml) char, short in bit-operators does not cause promotion to int. analyzed anonymous types is included position-info. return type is handled. (Ada) #pragma include renames #pragma overload. (Ada) extern open array is translated to full range of size_t. (Ada) typedef-ed function type is translated to comment out. (Ada) if statement is implemented. (Ada) assginment-expression in expression is translated to inner function.
0.04
ok for gmp.h (GMP), mpfr.h (MPFR), mpc.h (MPC) enum is typed. -p option is added to create missing destination directory. (Ada) enum has duplicated representation is translated to renaming. (Ada) struct item is escaped reserved words of Ada. (Ada) bit-field is translated to representation clause. (Ada) derivd-type in parameter declaration is expanded. (Ada) pointer cast is translated to use Ada.Unchecked_Conversion. (Ada) macro renaming iem of struct/union is translated to inline function.
0.03
ok for gc.h (Boehm GC). #pragma GCC poison is parsed. ptrdiff_t, size_t, wchar_t are treated special-typedef. (Ada) selecting relative-name or full-name is resolved.
0.02
ok for zlib.h (zlib). detecting modified actual parameters(s). (Ada) implementation to output bodies of (inline-)function has begun. (Ada) iline-assembler is translated with System.Machine_Code. (Ada) parenthesis depending precedence of Ada operators is fixed.
0.01
ok for iconv.h (iconv). it has be able to translate first header! experimental released.