| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying   file Copyright.txt or https://cmake.org/licensing for details.  */#ifndef cmDependsJavaParserHelper_h#define cmDependsJavaParserHelper_h#include <cmConfigure.h> // IWYU pragma: keep#include <string>#include <vector>class cmDependsJavaParserHelper;#define YYSTYPE cmDependsJavaParserHelper::ParserType#define YYSTYPE_IS_DECLARED#define YY_EXTRA_TYPE cmDependsJavaParserHelper*#define YY_DECL int cmDependsJava_yylex(YYSTYPE* yylvalp, yyscan_t yyscanner)/** \class cmDependsJavaParserHelper * \brief Helper class for parsing java source files * * Finds dependencies for java file and list of outputs */class cmDependsJavaParserHelper{public:  typedef struct  {    char* str;  } ParserType;  cmDependsJavaParserHelper();  ~cmDependsJavaParserHelper();  int ParseString(const char* str, int verb);  int ParseFile(const char* file);  // For the lexer:  void AllocateParserType(cmDependsJavaParserHelper::ParserType* pt,                          const char* str, int len = 0);  int LexInput(char* buf, int maxlen);  void Error(const char* str);  // For yacc  void AddClassFound(const char* sclass);  void PrepareElement(ParserType* me);  void DeallocateParserType(char** pt);  void CheckEmpty(int line, int cnt, ParserType* pt);  void StartClass(const char* cls);  void EndClass();  void AddPackagesImport(const char* sclass);  void SetCurrentPackage(const char* pkg) { this->CurrentPackage = pkg; }  const char* GetCurrentPackage() { return this->CurrentPackage.c_str(); }  void SetCurrentCombine(const char* cmb) { this->CurrentCombine = cmb; }  const char* GetCurrentCombine() { return this->CurrentCombine.c_str(); }  void UpdateCombine(const char* str1, const char* str2);  std::vector<std::string>& GetClassesFound() { return this->ClassesFound; }  std::vector<std::string> GetFilesProduced();private:  class CurrentClass  {  public:    std::string Name;    std::vector<CurrentClass> NestedClasses;    void AddFileNamesForPrinting(std::vector<std::string>* files,                                 const char* prefix, const char* sep) const;  };  std::string CurrentPackage;  std::string::size_type InputBufferPos;  std::string InputBuffer;  std::vector<char> OutputBuffer;  std::vector<std::string> ClassesFound;  std::vector<std::string> PackagesImport;  std::string CurrentCombine;  std::vector<CurrentClass> ClassStack;  int CurrentLine;  int UnionsAvailable;  int LastClassId;  int CurrentDepth;  int Verbose;  std::vector<char*> Allocates;  void PrintClasses();  void Print(const char* place, const char* str);  void CombineUnions(char** out, const char* in1, char** in2, const char* sep);  void SafePrintMissing(const char* str, int line, int cnt);  void CleanupParser();};#endif
 |