From: <cod...@go...> - 2008-10-07 22:37:27
|
Author: wol...@gm... Date: Tue Oct 7 15:14:47 2008 New Revision: 329 Modified: trunk/hoc/InterfaceGenerator2/HackEnumNames.hs Log: Make enum names hack less aggressive -- do not combine anonymous enums with int (long/unsigned/etc.) typedefs that follow. Modified: trunk/hoc/InterfaceGenerator2/HackEnumNames.hs ============================================================================== --- trunk/hoc/InterfaceGenerator2/HackEnumNames.hs (original) +++ trunk/hoc/InterfaceGenerator2/HackEnumNames.hs Tue Oct 7 15:14:47 2008 @@ -6,15 +6,14 @@ hackEnumNames :: HeaderInfo -> HeaderInfo -hackEnumNames (HeaderInfo name imports decls) - = HeaderInfo name imports (hackEnums1 Just id decls) +hackEnumNames (HeaderInfo headerName imports decls) + = HeaderInfo headerName imports (hackEnums1 Just id decls) where hackEnums1 :: (a -> Maybe DeclarationAndPos) -> (DeclarationAndPos -> a) -> [a] -> [a] hackEnums1 unwrap wrap (x : y : xs) | Just (pos, CTypeDecl (CTEnum name1 vals)) <- unwrap x, Just (_, Typedef baseType name2) <- unwrap y, - null name1 || name1 == name2 || name1 == '_' : name2, - acceptableEnumBaseType baseType + null name1 && acceptableEnumBaseType name2 baseType || acceptableEnumTag name1 name2 = wrap (pos, Typedef (CTEnum name1 vals) name2) : hackEnums1 unwrap wrap xs hackEnums1 unwrap wrap (x : xs) @@ -28,8 +27,9 @@ decl (pos, d) = (pos, LocalDecl d) hackEnums1 unwrap wrap [] = [] - acceptableEnumBaseType (CTSimple name) + acceptableEnumBaseType name2 (CTSimple name) | name == "NSInteger" || name == "NSUInteger" = True - acceptableEnumBaseType (CTBuiltin _ _ name) - | name == "int" = True - acceptableEnumBaseType _ = False + acceptableEnumBaseType _ _ = False + + acceptableEnumTag name1 name2 + = dropWhile (== '_') name1 == name2 |