1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
5 #include "cmConfigure.h" // IWYU pragma: keep
11 /** \class cmDependsJavaParserHelper
12 * \brief Helper class for parsing java source files
14 * Finds dependencies for java file and list of outputs
16 class cmDependsJavaParserHelper
24 cmDependsJavaParserHelper();
25 ~cmDependsJavaParserHelper();
27 cmDependsJavaParserHelper(const cmDependsJavaParserHelper&) = delete;
28 cmDependsJavaParserHelper& operator=(const cmDependsJavaParserHelper&) =
31 int ParseString(const char* str, int verb);
32 int ParseFile(const char* file);
35 void AllocateParserType(cmDependsJavaParserHelper::ParserType* pt,
36 const char* str, int len = 0);
38 int LexInput(char* buf, int maxlen);
39 void Error(const char* str);
42 void AddClassFound(const char* sclass);
43 void PrepareElement(ParserType* me);
44 void DeallocateParserType(char** pt);
45 void CheckEmpty(int line, int cnt, ParserType* pt);
46 void StartClass(const char* cls);
48 void AddPackagesImport(const char* sclass);
49 void SetCurrentPackage(const char* pkg) { this->CurrentPackage = pkg; }
50 const char* GetCurrentPackage() { return this->CurrentPackage.c_str(); }
51 void SetCurrentCombine(const char* cmb) { this->CurrentCombine = cmb; }
52 const char* GetCurrentCombine() { return this->CurrentCombine.c_str(); }
53 void UpdateCombine(const char* str1, const char* str2);
55 std::vector<std::string>& GetClassesFound() { return this->ClassesFound; }
57 std::vector<std::string> GetFilesProduced();
64 std::vector<CurrentClass> NestedClasses;
65 void AddFileNamesForPrinting(std::vector<std::string>* files,
66 const char* prefix, const char* sep) const;
68 std::string CurrentPackage;
69 std::string::size_type InputBufferPos;
70 std::string InputBuffer;
71 std::vector<char> OutputBuffer;
72 std::vector<std::string> ClassesFound;
73 std::vector<std::string> PackagesImport;
74 std::string CurrentCombine;
76 std::vector<CurrentClass> ClassStack;
84 std::vector<std::unique_ptr<char[]>> Allocates;
88 void Print(const char* place, const char* str) const;
89 void CombineUnions(char** out, const char* in1, char** in2, const char* sep);
90 void SafePrintMissing(const char* str, int line, int cnt);
95 #define YYSTYPE cmDependsJavaParserHelper::ParserType
96 #define YYSTYPE_IS_DECLARED
97 #define YY_EXTRA_TYPE cmDependsJavaParserHelper*
98 #define YY_DECL int cmDependsJava_yylex(YYSTYPE* yylvalp, yyscan_t yyscanner)