|
|
|
|
# libclangmm
|
|
|
|
|
|
|
|
|
|
###### an easy-to-use C++ wrapper for libclang
|
|
|
|
|
|
|
|
|
|
## About ##
|
|
|
|
|
Provides C++ bindings and class structure to the [libclang](http://www.llvm.org) C library.
|
|
|
|
|
|
|
|
|
|
Developed for [juCi++](https://gitlab.com/cppit/jucipp), a lightweight, platform-independent C++ IDE.
|
|
|
|
|
|
|
|
|
|
## Dependencies ##
|
|
|
|
|
* libclang
|
|
|
|
|
|
|
|
|
|
## Installation ##
|
|
|
|
|
See [installation guide](https://gitlab.com/cppit/libclangmm/blob/master/docs/install.md)
|
|
|
|
|
|
|
|
|
|
## Tests ##
|
|
|
|
|
To run the unit tests:
|
|
|
|
|
```sh
|
|
|
|
|
mkdir build && cd build
|
|
|
|
|
cmake -DBUILD_TESTING=1 ..
|
|
|
|
|
make
|
|
|
|
|
make test
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Coding style
|
|
|
|
|
Due to poor lambda support in clang-format, a custom clang-format is used with the following patch applied:
|
|
|
|
|
```diff
|
|
|
|
|
diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp
|
|
|
|
|
index bb8efd61a3..e80a487055 100644
|
|
|
|
|
--- a/lib/Format/ContinuationIndenter.cpp
|
|
|
|
|
+++ b/lib/Format/ContinuationIndenter.cpp
|
|
|
|
|
@@ -276,6 +276,8 @@ LineState ContinuationIndenter::getInitialState(unsigned FirstIndent,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ContinuationIndenter::canBreak(const LineState &State) {
|
|
|
|
|
+ if(Style.ColumnLimit==0)
|
|
|
|
|
+ return true;
|
|
|
|
|
const FormatToken &Current = *State.NextToken;
|
|
|
|
|
const FormatToken &Previous = *Current.Previous;
|
|
|
|
|
assert(&Previous == Current.Previous);
|
|
|
|
|
@@ -325,6 +327,8 @@ bool ContinuationIndenter::canBreak(const LineState &State) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|
|
|
|
+ if(Style.ColumnLimit==0)
|
|
|
|
|
+ return false;
|
|
|
|
|
const FormatToken &Current = *State.NextToken;
|
|
|
|
|
const FormatToken &Previous = *Current.Previous;
|
|
|
|
|
if (Current.MustBreakBefore || Current.is(TT_InlineASMColon))
|
|
|
|
|
```
|
|
|
|
|
|