From 31226b61f2d8056261b429ee7c2e2cb3a746513f Mon Sep 17 00:00:00 2001 From: Craig Silverstein Date: Wed, 10 Mar 2010 00:37:33 +0000 Subject: [PATCH] * Get rid of unnecessary c++ aliasing violation (csilvers) * Better error message on parse failure (tstromberg) git-svn-id: https://gflags.googlecode.com/svn/trunk@37 6586e3c6-dcc4-952a-343f-ff74eb82781d --- src/gflags/gflags.h.in | 22 +++++++++++----------- src/windows/gflags/gflags.h | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/gflags/gflags.h.in b/src/gflags/gflags.h.in index 12a5d2e..21727a8 100644 --- a/src/gflags/gflags.h.in +++ b/src/gflags/gflags.h.in @@ -520,17 +520,17 @@ bool IsBoolFlag(bool from); // The weird 'using' + 'extern' inside the fLS namespace is to work around // an unknown compiler bug/issue with the gcc 4.2.1 on SUSE 10. See // http://code.google.com/p/google-gflags/issues/detail?id=20 -#define DEFINE_string(name, val, txt) \ - namespace fLS { \ - static union { void* align; char s[sizeof(std::string)]; } s_##name[2]; \ - const std::string* const FLAGS_no##name = new (s_##name[0].s) std::string(val); \ - static @ac_google_namespace@::FlagRegisterer o_##name( \ - #name, "string", MAYBE_STRIPPED_HELP(txt), __FILE__, \ - s_##name[0].s, new (s_##name[1].s) std::string(*FLAGS_no##name)); \ - extern std::string& FLAGS_##name; \ - using fLS::FLAGS_##name; \ - std::string& FLAGS_##name = *(reinterpret_cast(s_##name[0].s)); \ - } \ +#define DEFINE_string(name, val, txt) \ + namespace fLS { \ + static union { void* align; char s[sizeof(std::string)]; } s_##name[2]; \ + std::string* const FLAGS_no##name = new (s_##name[0].s) std::string(val); \ + static @ac_google_namespace@::FlagRegisterer o_##name( \ + #name, "string", MAYBE_STRIPPED_HELP(txt), __FILE__, \ + s_##name[0].s, new (s_##name[1].s) std::string(*FLAGS_no##name)); \ + extern std::string& FLAGS_##name; \ + using fLS::FLAGS_##name; \ + std::string& FLAGS_##name = *FLAGS_no##name; \ + } \ using fLS::FLAGS_##name #endif // SWIG diff --git a/src/windows/gflags/gflags.h b/src/windows/gflags/gflags.h index e442eed..e98435d 100644 --- a/src/windows/gflags/gflags.h +++ b/src/windows/gflags/gflags.h @@ -531,17 +531,17 @@ GFLAGS_DLL_DECL bool IsBoolFlag(bool from); // The weird 'using' + 'extern' inside the fLS namespace is to work around // an unknown compiler bug/issue with the gcc 4.2.1 on SUSE 10. See // http://code.google.com/p/google-gflags/issues/detail?id=20 -#define DEFINE_string(name, val, txt) \ - namespace fLS { \ - static union { void* align; char s[sizeof(std::string)]; } s_##name[2]; \ - const std::string* const FLAGS_no##name = new (s_##name[0].s) std::string(val); \ - static ::google::FlagRegisterer o_##name( \ - #name, "string", MAYBE_STRIPPED_HELP(txt), __FILE__, \ - s_##name[0].s, new (s_##name[1].s) std::string(*FLAGS_no##name)); \ - extern __declspec(dllexport) std::string& FLAGS_##name; \ - using fLS::FLAGS_##name; \ - std::string& FLAGS_##name = *(reinterpret_cast(s_##name[0].s)); \ - } \ +#define DEFINE_string(name, val, txt) \ + namespace fLS { \ + static union { void* align; char s[sizeof(std::string)]; } s_##name[2]; \ + std::string* const FLAGS_no##name = new (s_##name[0].s) std::string(val); \ + static ::google::FlagRegisterer o_##name( \ + #name, "string", MAYBE_STRIPPED_HELP(txt), __FILE__, \ + s_##name[0].s, new (s_##name[1].s) std::string(*FLAGS_no##name)); \ + extern __declspec(dllexport) std::string& FLAGS_##name; \ + using fLS::FLAGS_##name; \ + std::string& FLAGS_##name = *FLAGS_no##name; \ + } \ using fLS::FLAGS_##name #endif // SWIG