diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/Ice/Const.h | 22 | ||||
-rw-r--r-- | cpp/include/Slice/CPlusPlusUtil.h | 2 | ||||
-rw-r--r-- | cpp/include/Slice/Parser.h | 1 | ||||
-rw-r--r-- | cpp/src/Slice/CPlusPlusUtil.cpp | 20 | ||||
-rw-r--r-- | cpp/src/Slice/Parser.cpp | 18 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 11 |
6 files changed, 47 insertions, 27 deletions
diff --git a/cpp/include/Ice/Const.h b/cpp/include/Ice/Const.h new file mode 100644 index 00000000000..4d367c22b3c --- /dev/null +++ b/cpp/include/Ice/Const.h @@ -0,0 +1,22 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef ICE_CONST_H +#define ICE_CONST_H + +#if defined(_WIN32) +# define ICE_INT64_LITERAL(n) n##i64 +#elif defined(__linux__) && defined(i386) +# define ICE_INT64_LITERAL(n) n##LL +#else +# error "Unsupported operating system or platform!" +#endif + +#endif diff --git a/cpp/include/Slice/CPlusPlusUtil.h b/cpp/include/Slice/CPlusPlusUtil.h index 8aafe3c730a..fff635b57a9 100644 --- a/cpp/include/Slice/CPlusPlusUtil.h +++ b/cpp/include/Slice/CPlusPlusUtil.h @@ -25,8 +25,6 @@ struct ToIfdef SLICE_API std::string changeInclude(const std::string&, const std::vector<std::string>&); SLICE_API void printHeader(::IceUtil::Output&); SLICE_API void printVersionCheck(::IceUtil::Output&); -SLICE_API void printDefInt64Macro(::IceUtil::Output&); -SLICE_API void printUndefInt64Macro(::IceUtil::Output&); SLICE_API void printDllExportStuff(::IceUtil::Output&, const std::string&); SLICE_API std::string typeToString(const TypePtr&); diff --git a/cpp/include/Slice/Parser.h b/cpp/include/Slice/Parser.h index 1bae532130c..6c230806f4e 100644 --- a/cpp/include/Slice/Parser.h +++ b/cpp/include/Slice/Parser.h @@ -766,6 +766,7 @@ public: bool usesProxies() const; bool usesNonLocals() const; + bool usesConsts() const; StringList includeFiles() const; diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp index 79725c6f4b4..0c800c87ac4 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/Slice/CPlusPlusUtil.cpp @@ -88,26 +88,6 @@ Slice::printVersionCheck(Output& out) } void -Slice::printDefInt64Macro(Output& out) -{ - out << "\n"; - out << "\n#if defined(_WIN32)"; - out << "\n# define INT64LITERAL(n) n##i64"; - out << "\n#elif defined(__linux__) && defined(i386)"; - out << "\n# define INT64LITERAL(n) n##LL"; - out << "\n#else"; - out << "\n# error \"Unsupported operating system or platform!\""; - out << "\n#endif"; -} - -void -Slice::printUndefInt64Macro(Output& out) -{ - out << "\n"; - out << "\n#undef INT64LITERAL"; -} - -void Slice::printDllExportStuff(Output& out, const string& dllExport) { if(dllExport.size()) diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp index 99239c6a191..0b5393ea03d 100644 --- a/cpp/src/Slice/Parser.cpp +++ b/cpp/src/Slice/Parser.cpp @@ -3392,6 +3392,24 @@ Slice::Unit::usesNonLocals() const return false; } +bool +Slice::Unit::usesConsts() const +{ + for(map<string, ContainedList>::const_iterator p = _contentMap.begin(); p != _contentMap.end(); ++p) + { + for(ContainedList::const_iterator q = p->second.begin(); q != p->second.end(); ++q) + { + ConstDefPtr cd = ConstDefPtr::dynamicCast(*q); + if(cd) + { + return true; + } + } + } + + return false; +} + StringList Slice::Unit::includeFiles() const { diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 06bec36200c..eda491f8fb6 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -199,6 +199,11 @@ Slice::Gen::generate(const UnitPtr& unit) H << "\n#include <Ice/LocalObject.h>"; } + if(unit->usesConsts()) + { + H << "\n#include <Ice/Const.h>"; + } + StringList includes = unit->includeFiles(); for(StringList::const_iterator q = includes.begin(); q != includes.end(); ++q) { @@ -214,8 +219,6 @@ Slice::Gen::generate(const UnitPtr& unit) _dllExport += " "; } - printDefInt64Macro(H); - ProxyDeclVisitor proxyDeclVisitor(H, C, _dllExport); unit->visit(&proxyDeclVisitor); @@ -265,8 +268,6 @@ Slice::Gen::generate(const UnitPtr& unit) ImplVisitor implVisitor(implH, implC, _dllExport); unit->visit(&implVisitor); } - - printUndefInt64Macro(H); } Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllExport) : @@ -983,7 +984,7 @@ Slice::Gen::TypesVisitor::visitConstDef(const ConstDefPtr& p) } else if(bp && bp->kind() == Builtin::KindLong) { - H << "INT64LITERAL(" << p->value() << ")"; + H << "ICE_INT64_LITERAL(" << p->value() << ")"; } else { |