diff options
Diffstat (limited to 'cpp/include/Slice')
-rw-r--r-- | cpp/include/Slice/CPlusPlusUtil.h | 1 | ||||
-rw-r--r-- | cpp/include/Slice/CsUtil.h | 4 | ||||
-rw-r--r-- | cpp/include/Slice/FileTracker.h | 9 | ||||
-rw-r--r-- | cpp/include/Slice/JavaUtil.h | 11 | ||||
-rw-r--r-- | cpp/include/Slice/Parser.h | 18 | ||||
-rw-r--r-- | cpp/include/Slice/Preprocessor.h | 7 | ||||
-rw-r--r-- | cpp/include/Slice/Util.h | 9 |
7 files changed, 47 insertions, 12 deletions
diff --git a/cpp/include/Slice/CPlusPlusUtil.h b/cpp/include/Slice/CPlusPlusUtil.h index 4fc6ea5e822..0f121bcda98 100644 --- a/cpp/include/Slice/CPlusPlusUtil.h +++ b/cpp/include/Slice/CPlusPlusUtil.h @@ -48,6 +48,7 @@ SLICE_API void writeAllocateCode(::IceUtilInternal::Output&, const ParamDeclList const StringList&, bool = false, bool = false); SLICE_API void writeStreamMarshalUnmarshalCode(::IceUtilInternal::Output&, const TypePtr&, const std::string&, bool, const std::string& = "", bool = false, const StringList& = StringList()); +SLICE_API std::string findMetaData(const SequencePtr&, const StringList&, bool, bool&); SLICE_API std::string findMetaData(const StringList&, bool); SLICE_API bool inWstringModule(const SequencePtr&); diff --git a/cpp/include/Slice/CsUtil.h b/cpp/include/Slice/CsUtil.h index e9acdfc8138..1f046d19e33 100644 --- a/cpp/include/Slice/CsUtil.h +++ b/cpp/include/Slice/CsUtil.h @@ -51,8 +51,8 @@ private: class MetaDataVisitor : public ParserVisitor { public: - MetaDataVisitor(); + virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); virtual void visitClassDecl(const ClassDeclPtr&); @@ -74,8 +74,8 @@ private: void validate(const ContainedPtr&); + std::string _fileName; StringSet _history; - bool _globalMetaDataDone; }; }; diff --git a/cpp/include/Slice/FileTracker.h b/cpp/include/Slice/FileTracker.h index 944774d809b..81261f361d3 100644 --- a/cpp/include/Slice/FileTracker.h +++ b/cpp/include/Slice/FileTracker.h @@ -47,14 +47,23 @@ public: static FileTrackerPtr instance(); + void setSource(const std::string&); + void setOutput(const std::string&, bool); void addFile(const std::string&); void addDirectory(const std::string&); void cleanup(); + void dumpxml(); private: + std::string escape(const std::string&) const; + std::list<std::pair< std::string, bool> > _files; + std::string _source; + std::map<std::string, std::string> _errors; + std::map<std::string, std::list<std::string> > _generated; + std::map<std::string, std::list<std::string> >::iterator _curr; }; } diff --git a/cpp/include/Slice/JavaUtil.h b/cpp/include/Slice/JavaUtil.h index d85ae3cf2bb..3ede63869e8 100644 --- a/cpp/include/Slice/JavaUtil.h +++ b/cpp/include/Slice/JavaUtil.h @@ -81,6 +81,12 @@ protected: const std::string& = std::string(), const std::string& = std::string()) const; + + // + // Returns the package prefix for a give Slice file. + // + std::string getPackagePrefix(const ContainedPtr&) const; + // // Returns the Java package of a Contained entity. // @@ -181,8 +187,7 @@ protected: // bool getDictionaryTypes(const DictionaryPtr&, const std::string&, const StringList&, std::string&, std::string&) const; - bool getSequenceTypes(const SequencePtr&, const std::string&, const StringList&, - std::string&, std::string&) const; + bool getSequenceTypes(const SequencePtr&, const std::string&, const StringList&, std::string&, std::string&) const; virtual JavaOutput* createOutput(); @@ -198,6 +203,7 @@ private: { public: + virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitClassDecl(const ClassDeclPtr&); virtual bool visitClassDefStart(const ClassDefPtr&); @@ -223,6 +229,7 @@ private: std::string _dir; ::IceUtilInternal::Output* _out; + mutable std::map<std::string, std::string> _filePackagePrefix; }; } diff --git a/cpp/include/Slice/Parser.h b/cpp/include/Slice/Parser.h index 4d0aac70b79..a3db93ab5e4 100644 --- a/cpp/include/Slice/Parser.h +++ b/cpp/include/Slice/Parser.h @@ -418,6 +418,7 @@ public: TypeList lookupTypeNoBuiltin(const std::string&, bool = true); ContainedList lookupContained(const std::string&, bool = true); ExceptionPtr lookupException(const std::string&, bool = true); + UnitPtr unit() const; ModuleList modules() const; ClassList classes() const; ExceptionList exceptions() const; @@ -938,6 +939,7 @@ public: void setComment(const std::string&); std::string currentComment(); // Not const, as this function removes the current comment. std::string currentFile() const; + std::string topLevelFile() const; int currentLine() const; void nextLine(); @@ -945,6 +947,7 @@ public: int currentIncludeLevel() const; void addGlobalMetaData(const StringList&); + void setSeenDefinition(); void error(const char*); // Not const, because error count is increased. @@ -960,6 +963,7 @@ public: DefinitionContextPtr currentDefinitionContext() const; void pushDefinitionContext(); void popDefinitionContext(); + DefinitionContextPtr findDefinitionContext(const std::string&) const; void addContent(const ContainedPtr&); void removeContent(const ContainedPtr&); @@ -974,8 +978,16 @@ public: FeatureProfile profile() const; + // + // Returns the path names of the files included directly by the top-level file. + // StringList includeFiles() const; - + + // + // Returns the path names of all files parsed by this unit. + // + StringList allFiles() const; + int parse(const std::string&, FILE*, bool, FeatureProfile profile = Ice); virtual void destroy(); @@ -992,20 +1004,20 @@ private: bool _all; bool _allowIcePrefix; bool _caseSensitive; - StringList _defaultGlobalMetadata; + StringList _defaultGlobalMetaData; int _errors; std::string _currentComment; int _currentLine; int _currentIncludeLevel; std::string _currentFile; std::string _topLevelFile; - std::map<std::string, std::string> _fullPaths; std::stack<DefinitionContextPtr> _definitionContextStack; StringList _includeFiles; std::stack<ContainerPtr> _containerStack; std::map<Builtin::Kind, BuiltinPtr> _builtins; std::map<std::string, ContainedList> _contentMap; FeatureProfile _featureProfile; + std::map<std::string, DefinitionContextPtr> _definitionContextMap; }; extern SLICE_API Unit* unit; // The current parser for bison/flex diff --git a/cpp/include/Slice/Preprocessor.h b/cpp/include/Slice/Preprocessor.h index 54535e28812..23458bccfbb 100644 --- a/cpp/include/Slice/Preprocessor.h +++ b/cpp/include/Slice/Preprocessor.h @@ -32,15 +32,15 @@ class SLICE_API Preprocessor { public: - Preprocessor(const std::string&, const std::string&, const std::vector<std::string>&, const std::string& = "cpp"); + Preprocessor(const std::string&, const std::string&, const std::vector<std::string>&); ~Preprocessor(); FILE* preprocess(bool); bool close(); - enum Language { CPlusPlus, Java, CSharp, VisualBasic }; + enum Language { CPlusPlus, Java, JavaXML, CSharp, VisualBasic }; - bool printMakefileDependencies(Language, const std::vector<std::string>&); + bool printMakefileDependencies(Language, const std::vector<std::string>&, const std::string& = "cpp"); std::string getBaseName(); @@ -54,7 +54,6 @@ private: const std::string _path; const std::string _fileName; const std::vector<std::string> _args; - const std::string _cppSourceExt; #ifdef _WIN32 std::wstring _cppFile; #else diff --git a/cpp/include/Slice/Util.h b/cpp/include/Slice/Util.h index 1e645595ea4..76c5a27d6f3 100644 --- a/cpp/include/Slice/Util.h +++ b/cpp/include/Slice/Util.h @@ -17,7 +17,14 @@ namespace Slice SLICE_API std::string fullPath(const std::string&); SLICE_API std::string changeInclude(const std::string&, const std::vector<std::string>&); - +SLICE_API void setErrorStream(std::ostream&); +SLICE_API std::ostream& getErrorStream(); +SLICE_API void emitError(const std::string&, int, const std::string&); +SLICE_API void emitWarning(const std::string&, int, const std::string&); +SLICE_API void emitError(const std::string&, const std::string&, const std::string&); +SLICE_API void emitWarning(const std::string&, const std::string&, const std::string&); +SLICE_API void emitRaw(const char*); +SLICE_API std::vector<std::string> filterMcppWarnings(const std::string&); } #endif |