diff options
Diffstat (limited to 'cpp/src/Slice/Preprocessor.h')
-rw-r--r-- | cpp/src/Slice/Preprocessor.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/cpp/src/Slice/Preprocessor.h b/cpp/src/Slice/Preprocessor.h new file mode 100644 index 00000000000..f237a41b3f1 --- /dev/null +++ b/cpp/src/Slice/Preprocessor.h @@ -0,0 +1,64 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2016 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef PREPROCESSOR_H +#define PREPROCESSOR_H + +#include <IceUtil/Shared.h> +#include <IceUtil/Handle.h> +#include <vector> + +namespace Slice +{ + +class Preprocessor; +typedef IceUtil::Handle<Preprocessor> PreprocessorPtr; + +class Preprocessor : public IceUtil::SimpleShared +{ +public: + + static PreprocessorPtr create(const std::string&, const std::string&, const std::vector<std::string>&); + + ~Preprocessor(); + + FILE* preprocess(bool, const std::string& = ""); + FILE* preprocess(bool, const std::vector<std::string>&); + bool close(); + + enum Language { CPlusPlus, Java, CSharp, Python, Ruby, PHP, JavaScript, JavaScriptJSON, ObjC, SliceXML }; + + bool printMakefileDependencies(std::ostream&, Language, const std::vector<std::string>&, const std::string& = "", + const std::string& = "cpp", const std::string& = ""); + bool printMakefileDependencies(std::ostream&, Language, const std::vector<std::string>&, + const std::vector<std::string>&, const std::string& = "cpp", + const std::string& = ""); + + std::string getBaseName(); + + static std::string addQuotes(const std::string&); + static std::string normalizeIncludePath(const std::string&); + +private: + + Preprocessor(const std::string&, const std::string&, const std::vector<std::string>&); + + bool checkInputFile(); + + const std::string _path; + const std::string _fileName; + const std::string _shortFileName; + const std::vector<std::string> _args; + std::string _cppFile; + FILE* _cppHandle; +}; + +} + +#endif |