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 @@ @@ -1,13 +1,15 @@
CppSharp is a collection of libraries for working with C++ code from
high-level languages.
CppSharp is a tool and set of libraries to turn existing native C/C++ libraries
into libraries that can be consumed by other languages (such as C#).
It has multiple use cases, from parsing C++ code to automatically generating
bindings for wrapping C/C++ native code allowing interoperability with
high-level languages. The supported target languages at present are C#
(hence the name of the project) and C++/CLI.
It is a tool that takes C/C++ header and library files and generates the
necessary glue to surface the native API as a managed API. Such an API can be
used to consume an existing native library in your high-level code or add
scripting support to a native codebase.
This can be used to consume an existing native library in your high-level
code or add scripting support to a native codebase.
The supported target languages at present are C# and C++/CLI.
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)
2. [Documentation](#documentation)
@ -28,24 +30,11 @@ code or add scripting support to a native codebase. @@ -28,24 +30,11 @@ code or add scripting support to a native codebase.
## 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
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++ types
@ -55,13 +44,28 @@ Check out [_Clang's AST introduction docs_](http://clang.llvm.org/docs/Introduct @@ -55,13 +44,28 @@ Check out [_Clang's AST introduction docs_](http://clang.llvm.org/docs/Introduct
### 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 shared libraries symbols
* 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
Please see the following resources for more information:

Loading…
Cancel
Save