Browse Source

Improve the readme.

pull/732/head
Joao Matos 9 years ago
parent
commit
d8b1334b84
  1. 54
      README.md

54
README.md

@ -1,13 +1,15 @@
CppSharp is a collection of libraries for working with C++ code from CppSharp is a tool and set of libraries to turn existing native C/C++ libraries
high-level languages. into libraries that can be consumed by other languages (such as C#).
It has multiple use cases, from parsing C++ code to automatically generating It is a tool that takes C/C++ header and library files and generates the
bindings for wrapping C/C++ native code allowing interoperability with necessary glue to surface the native API as a managed API. Such an API can be
high-level languages. The supported target languages at present are C# used to consume an existing native library in your high-level code or add
(hence the name of the project) and C++/CLI. scripting support to a native codebase.
This can be used to consume an existing native library in your high-level The supported target languages at present are C# and C++/CLI.
code or add scripting support to a native codebase.
It can also be used as a library to parse native code into a syntax tree with a
rich declaration and type information model.
1. [Libraries](#libraries) 1. [Libraries](#libraries)
2. [Documentation](#documentation) 2. [Documentation](#documentation)
@ -28,24 +30,11 @@ code or add scripting support to a native codebase.
## Libraries ## Libraries
### Generator
* Multiple backends: C++/CLI and C# P/Invoke
* Multiple ABIs: Itanium, MS, ARM, iOS and iOS64
* Multiple platforms: Windows, OS X and Linux
* Virtual table overriding support
* Multiple inheritance support
* Easily extensible semantics via user passes
* Support for C++ standard library types (work-in-progress)
* Strongly-typed customization APIs and type maps
* Default values of parameters (for target languages which support them)
* Option to automatically add a module initializer with the C# generator
### AST ### AST
Mirrors the Clang's C++ AST and type system classes in C# APIs. Mirrors the Clang's C/C++ AST and type system classes in C# APIs.
Check out [_Clang's AST introduction docs_](http://clang.llvm.org/docs/IntroductionToTheClangAST.html) for more details about its architecture. Check out [_Clang's AST introduction docs_](http://clang.llvm.org/docs/IntroductionToTheClangAST.html) for more details about its architecture.
* C++ declarations * C++ declarations
* C++ types * C++ types
@ -55,13 +44,28 @@ Check out [_Clang's AST introduction docs_](http://clang.llvm.org/docs/Introduct
### Parser ### Parser
Provides APIs for parsing C++ source code. Provides APIs for parsing of C/C++ source code into a syntax tree.
* Parsing of C++ source code * Parsing of C/C++ source code
* Parsing of libraries archives symbols * Parsing of libraries archives symbols
* Parsing of shared libraries symbols * Parsing of shared libraries symbols
* Based on the very accurate Clang C++ parser. * Based on the very accurate Clang C++ parser.
### Generator
Generates the glue binding code from a syntax tree of the native code.
* Multiple backends: C++/CLI and C# (P/Invoke)
* Multiple ABIs: Itanium, MS, ARM, iOS
* Multiple platforms: Windows, OS X and Linux
* Multiple runtimes: .NET and Mono
* C++ virtual methods overriding from managed code
* C++ multiple inheritance by translating to C# interfaces
* C++ standard library types (work-in-progress)
* C++ default parameter values
* C/C++ semantic comments (Doxygen) to C# comments
* Extensible bindings semantics via user passes and type mapping
## Documentation ## Documentation
Please see the following resources for more information: Please see the following resources for more information:

Loading…
Cancel
Save