// // Copyright (c) ZeroC, Inc. All rights reserved. // #ifndef PREPROCESSOR_H #define PREPROCESSOR_H #include #include #include namespace Slice { class Preprocessor; typedef IceUtil::Handle PreprocessorPtr; class Preprocessor : public IceUtil::SimpleShared { public: static PreprocessorPtr create(const std::string&, const std::string&, const std::vector&); ~Preprocessor(); FILE* preprocess(bool, const std::string& = ""); FILE* preprocess(bool, const std::vector&); bool close(); enum Language { CPlusPlus, Java, CSharp, Python, Ruby, PHP, JavaScript, JavaScriptJSON, ObjC, SliceXML, MATLAB }; bool printMakefileDependencies(std::ostream&, Language, const std::vector&, const std::string& = "", const std::string& = "cpp", const std::string& = ""); bool printMakefileDependencies(std::ostream&, Language, const std::vector&, const std::vector&, const std::string& = "cpp", const std::string& = ""); std::string getFileName(); 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&); bool checkInputFile(); const std::string _path; const std::string _fileName; const std::string _shortFileName; const std::vector _args; std::string _cppFile; FILE* _cppHandle; }; } #endif