diff options
| author | bloodstalker <thabogre@gmail.com> | 2018-11-12 13:27:34 +0000 | 
|---|---|---|
| committer | bloodstalker <thabogre@gmail.com> | 2018-11-12 13:27:34 +0000 | 
| commit | 9d57b17e209983252f0ebda98087316577f04e6e (patch) | |
| tree | a4cc546cfac7bfaab4dff9376a549ea5daec57f4 | |
| parent | update (diff) | |
| download | cgrep-9d57b17e209983252f0ebda98087316577f04e6e.tar.gz cgrep-9d57b17e209983252f0ebda98087316577f04e6e.zip | |
update
| -rw-r--r-- | README.md | 8 | ||||
| -rw-r--r-- | cgrep.cpp | 14 | 
2 files changed, 15 insertions, 7 deletions
| @@ -14,7 +14,7 @@ make  ## Usage  A simple usage example:<br/>  ```bash -cgrep --func --var --regex nam ./cgrep.cpp +cgrep --func --var --regex n[aA]m ./cgrep.cpp  ```  Pleade do note that the regex will pass through both C++ and the regex engine, so if you would want to escape `\`, the regex you pass as the commandline arg would be `\\\\` instead of the normal `\\`.<br/> @@ -24,10 +24,9 @@ For an up-to-date list, you can run `crep --help`.<br/>  ```bash    -all                       - turns on all switches other than nameddecl +  -awk                       - outputs location in a gawk freidnly format    -class                     - match class declrations only    -dir=<string>              - recursively goes through all the files and directories. assumes compilation databases are present for all source files. -  -extra-arg=<string>        - Additional argument to append to the compiler command line -  -extra-arg-before=<string> - Additional argument to prepend to the compiler command line    -func                      - match functions only    -header                    - match headers in header inclusions    -macro                     - match macro definitions @@ -35,7 +34,6 @@ For an up-to-date list, you can run `crep --help`.<br/>    -memfunc                   - match member functions only    -memvar                    - match member variables only    -nameddecl                 - matches all named declrations -  -p=<string>                - Build path    -regex=<string>            - the regex to match against    -struct                    - match structures only    -syshdr                    - match identifiers in system header as well @@ -43,4 +41,4 @@ For an up-to-date list, you can run `crep --help`.<br/>    -var                       - map variables only  ``` -Also, cgrep is a clang tool, so it will accecpt all valid clang commandline options.<br/> +`cgrep` is a clang tool, so it will accecpt all valid clang commandline options.<br/> @@ -51,7 +51,7 @@ cl::opt<bool> CO_CLASS("class", cl::desc("match class declrations only"), cl::in  cl::opt<bool> CO_STRUCT("struct", cl::desc("match structures only"), cl::init(false), cl::cat(CGrepCat), cl::Optional); // done  cl::opt<bool> CO_UNION("union", cl::desc("match unions only"), cl::init(false), cl::cat(CGrepCat), cl::Optional); // done  cl::opt<bool> CO_MACRO("macro", cl::desc("match macro definitions"), cl::init(false), cl::cat(CGrepCat), cl::Optional); //done -cl::opt<bool> CO_HEADER("header", cl::desc("match headers in header inclusions"), cl::init(false), cl::cat(CGrepCat), cl::Optional); +cl::opt<bool> CO_HEADER("header", cl::desc("match headers in header inclusions"), cl::init(false), cl::cat(CGrepCat), cl::Optional); //done  cl::opt<bool> CO_ALL("all", cl::desc("turns on all switches other than nameddecl"), cl::init(false), cl::cat(CGrepCat), cl::Optional); // done  cl::opt<bool> CO_NAMEDDECL("nameddecl", cl::desc("matches all named declrations"), cl::init(false), cl::cat(CGrepCat), cl::Optional); // done  cl::opt<bool> CO_AWK("awk", cl::desc("outputs location in a gawk freidnly format"), cl::init(false), cl::cat(CGrepCat), cl::Optional); // done @@ -361,7 +361,17 @@ public:                                    const clang::Module *Imported,                                    SrcMgr::CharacteristicKind FileType) {  #endif -    if (CO_HEADER) {} +    if (CO_HEADER) { +      CheckSLValidity(HashLoc); +      SourceLocation SL = Devi::SourceLocationHasMacro(HashLoc, Rewrite, "start"); +      if (Devi::IsTheMatchInSysHeader(CO_SYSHDR, SM, SL)) return void(); +      if (!Devi::IsTheMatchInMainFile(CO_MAINFILE, SM, SL)) return void(); +      std::string name = FileName.str(); +      if (regex_handler(REGEX_PP(CO_REGEX), name)) { +        std::cout << name << "\t"; +        std::cout << SL.printToString(SM) << "\n"; +      } +    }    }  private: | 
