| Ast.Array(ty,lb,size,rb) ->
fullType ty; mcode print_string lb; print_option expression size;
mcode print_string rb
- | Ast.EnumName(kind,name) -> mcode print_string kind; print_string " ";
- ident name
+ | Ast.EnumName(kind,name) ->
+ mcode print_string kind;
+ print_option (function x -> ident x; print_string " ") name
+ | Ast.EnumDef(ty,lb,ids,rb) ->
+ fullType ty; mcode print_string lb;
+ dots force_newline expression ids;
+ mcode print_string rb
| Ast.StructUnionName(kind,name) ->
mcode structUnion kind;
print_option (function x -> ident x; print_string " ") name
| Ast.FloatType -> print_string "float "
| Ast.LongType -> print_string "long "
| Ast.LongLongType -> print_string "long long "
+ | Ast.SizeType -> print_string "size_t "
+ | Ast.SSizeType -> print_string "ssize_t "
+ | Ast.PtrDiffType -> print_string "ptrdiff_t "
and structUnion = function
Ast.Struct -> print_string "struct "
Ast.MetaInit(name,_,_) ->
mcode print_meta name; print_string " "
| Ast.InitExpr(exp) -> expression exp
- | Ast.InitList(allminus,lb,initlist,rb,whencode) ->
+ | Ast.ArInitList(lb,initlist,rb) ->
+ mcode print_string lb; open_box 0;
+ dots force_newline initialiser initlist; close_box();
+ mcode print_string rb
+ | Ast.StrInitList(allminus,lb,initlist,rb,whencode) ->
mcode print_string lb; open_box 0;
if not (whencode = [])
then
| Ast.InitGccName(name,eq,ini) ->
ident name; mcode print_string eq; initialiser ini
| Ast.IComma(comma) -> mcode print_string comma; force_newline()
+ | Ast.Idots(dots,Some whencode) ->
+ mcode print_string dots; print_string " when != "; initialiser whencode
+ | Ast.Idots(dots,None) -> mcode print_string dots
| Ast.OptIni(ini) -> print_string "?"; initialiser ini
| Ast.UniqueIni(ini) -> print_string "!"; initialiser ini