diff options
Diffstat (limited to 'cpp/include/Slice/JavaUtil.h')
-rw-r--r-- | cpp/include/Slice/JavaUtil.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/cpp/include/Slice/JavaUtil.h b/cpp/include/Slice/JavaUtil.h new file mode 100644 index 00000000000..e9b92a6cf87 --- /dev/null +++ b/cpp/include/Slice/JavaUtil.h @@ -0,0 +1,93 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef JAVA_UTIL_H +#define JAVA_UTIL_H + +#include <Slice/Parser.h> +#include <IceUtil/OutputUtil.h> + +namespace Slice +{ + +class JavaGenerator : public ::IceUtil::noncopyable +{ +public: + + virtual ~JavaGenerator(); + +protected: + + JavaGenerator(const std::string&, const std::string&); + + // + // Given the fully-scoped Java class name, create any intermediate + // package directories and open the class file + // + bool open(const std::string&); + void close(); + + ::IceUtil::Output& output() const; + + // + // Check a symbol against any of the Java keywords. If a + // match is found, return the symbol with a leading underscore. + // + std::string fixKwd(const std::string&) const; + + // + // Convert a scoped name into a Java class name. If an optional + // scope is provided, the scope will be removed from the result. + // + std::string getAbsolute(const std::string&, + const std::string& = std::string(), + const std::string& = std::string(), + const std::string& = std::string()) const; + + // + // Get the Java name for a type. If an optional scope is provided, + // the scope will be removed from the result if possible. + // + enum TypeMode + { + TypeModeIn, + TypeModeOut, + TypeModeMember, + TypeModeReturn + }; + std::string typeToString(const TypePtr&, TypeMode mode, + const std::string& = std::string()) const; + + // + // Generate code to marshal or unmarshal a type + // + void writeMarshalUnmarshalCode(::IceUtil::Output&, const std::string&, const TypePtr&, + const std::string&, bool, int&, bool = false); + + // + // Generate generic code to marshal or unmarshal a type + // + void writeGenericMarshalUnmarshalCode(::IceUtil::Output&, const std::string&, const TypePtr&, + const std::string&, const std::string&, bool, int&, + bool = false); + +private: + + void printHeader(); + + std::string _dir; + std::string _package; + + ::IceUtil::Output* _out; +}; + +} + +#endif |