-
Restore backwards compatibility with .NET Framework
-
Remove looking MSVC headers up with COM
-
Look for the Clang headers along the main entry (#1573)
-
The NuGet package now supports Linux and macOS as well
-
Upgrade to .NET Core 3.1 and improve build system
-
Make auto-compiling of C# work with .NET Core
-
Adding extract interface pass
-
Add a log for changes per release
-
Fixed alias of signed char cannot be marshaled
-
Add missing quotes to support paths with spaces in build scripts
-
Ignore the still unsupported dependent type names
-
Rewrite GenerateEnumFromMacros helper to also look into enum items.
-
Fix generation of overloads in NAPI by re-ordering final calculated states.
-
Update expression evaluator code from latest upstream.
-
Improve visiting options implementation in CodeGenerator.
-
Clean multiline function signatures in the AST converter.
-
Fix generation of text blocks using NewLineKind.IfNotEmpty.
-
Git ignore IDEA project folders.
-
Change XML comments to be tested at run-time
-
Generate valid C++ for pointers in template args
-
Better detect invalid specialized functions
-
Simplify the marking of invalid functions
-
Generate valid C++ for protected constructors
-
Generate valid C++ for protected destructors
-
Only implement abstract classes in C++ for ctors/dtors
-
Fix test generation for QuickJS generator.
-
Remove unused code in QuickJS module generator.
-
Add enum support to QuickJS generator.
-
Marshaling correctness fix for enum and primitive types in NAPI.
-
Abstract marshaler into overridable method in NAPI sources.
-
Extract NAPI VarPrefix and ArgumentPrefix to base class.
-
Add missing clang headers
-
Create a single nuget package that supports windows / linux / macos
-
Refactor QuickJS generator structure to follow NAPI patterns.
-
Add initial QuickJS primitive type support and test suite.
-
Ensure a tested specialization is really generated
-
Place all output of tests in their own directories
-
Use C++17 in all native projects
-
Disable getter/setter to property pass by default in non-managed backends.
-
Fix forward include collector to consider value class semantics in function returns.
-
Factor VarPrefix and ArgumentPrefix helpers into base marshaler.
-
Implement basic visiting behavior in some CodeGenerator overloads.
-
Normalize visiting overloads to be virtual.
-
Flush
Module.ExternalClassTemplateSpecializations
to avoid emitting the same specialization in multiple files -
Add initial Node and N-API testing infrastructure and tests.
-
Big update to NAPI generator with initial support for basic examples.
-
Add DFA/NFA state machine utility code.
-
Replace outdated Clang compiler flags such as
std=c++1z
and replace it withstd=c++17
-
Change
GenerateSequentialLayout
default value totrue
-
Simplify TU.FileRelativeDirectory by using Path.GetDirectoryName.
-
Update driver to only generate system modules for C# generators.
-
Add ILibrary.GenerateCode as a custom code generation callback.
-
Upgrade .NET projects to C# 8.0.
-
Improve generation of type printing declaration names for C language.
-
Rework constructor generation in C++ code generator.
-
Setup include dirs on the module instead of parser options in the CLI.
-
Improve error handling in CLI and avoid defaulting to a generator on unknown option..
-
Add N-API generator support to the CLI.
-
Extract and re-use GetIncludePath across multiple generators.
-
Fix TU.FileRelativeDirectory to be more robust against some paths.
-
Fully resolve include dirs paths in driver option validation.
-
Fix ShouldGenerateClassNativeField to use NeedsBase instead of HasBase.
-
Update Class.HasNonIgnoredBase to use the actual base class.
-
Fix rename pass not handling some declarations due to early return.
-
Manage package versions centrally
-
Add
LanguageVersion.CPP20
support -
Only upload artifacts from master branch
-
Make unit tests independent of the generator
-
Simplify code that regenerates test bindings
-
Only use premake for native projects and improve c# projects.
-
Move GeneratorTestFixture type to its own file.
-
Fix typo and move alignment offsets to cpp file
-
Export or implement accessible functions in tests
-
Export symbols for indirectly accessible constructors
-
Publish artifacts for CI builds (#1533)
-
Fix importing/exporting redeclaration in symbols
-
CI: Add
Restore
step to make it easier to analyze build times -
Don't warn repeatedly about an existing LLVM dir
-
Don't download LLVM if its destination exists
-
Fix the expression-generator after changed paths
-
Fix a regressive crash when generating parser bindings
-
Remove redundant overrides from the generated C++/CLI
-
Disable the msvc warning about unexported template specializations
-
Fix naive version comparison
-
Fix GCC version detection
-
Move all LLVM files to /build/llvm
-
Ignore premake5 binaries
-
Remove secondary Zstandard compression from LLVM packages
-
Show a message explaining how to build LLVM when a pre-built package is unavailable.
-
Fix wrong LLVM package name when GCC version is >= 10
-
Add LLVM commands to build.sh
-
Test using a specialization from a dependent module
-
Add install_tools target to build.sh and fix LLVM CI.
-
Deprecate GCC 7 and add GCC 10 build for LLVM CI.
-
Move generated .vcxproj files back to their original place
-
Add missing
-configuration
option to build.sh script -
Replace Generate*.bat files with a single generate.sh which uses VS2019 by default
-
Remove DownloadDeps.bat file
-
Add build.sh and test.sh with execute permissions
-
Only search for MSVC toolchain in Windows
-
Generate correct LLVM package name regardless of the current operating system
-
Avoid using "action:vs* filter because there are better ones that are more specific (#1523)
-
Convert the visiting options to an enum
-
Update CanCheckCodeGenInfo to check function types as well.
-
Check for a dependent expression before walking variable initializer.
-
Some Premake robustness fixes for Clang toolchain.
-
Use explicit native type printer kind in CLI headers code.
-
Ignore testing the incorrect marshalling of parameters typed const& to primitives
-
Don't check the unsupported operator= for symbols
-
Add initial NAPI and JS generator.
-
Add initial QuickJS generator.
-
Add C++ generator support to the CLI.
-
Remove artificial limitations for cross-generation in CLI.
-
Simplify target-specific message output code in CLI.
-
Add a new option to set a prefix for generated files in CLI.
-
Improve module naming heuristics and add an option for setting it explicitly.
-
Implement C support as generator kind in CLI.
-
Refactor string.Format calls in CLI.
-
Implement Method.HasSameSignature for signature comparison.
-
Implement Method.ToString() to help with debugging.
-
A temporary hack to deal with a bug in MSVC v142 - VS 2019 build tools
-
Don't wrap trivial constructors and destructors
-
Ensure bindings are regenerated as needed without using DisableFastUpToDateCheck (#1511)
-
Continue implementation of C++ generator.
-
Add pass to fix up pure C++ methods to C++ generator.
-
More robust C++ type printing of incomplete class declarations.
-
Save existing parameter when doing C++ parameter type printing.
-
Add initial C base generator.
-
Check if module exists before using it in C code generator.
-
More robust enum generation for C family languages in C code generator.
-
Fix C generator GenerateMethodSpecifier to support pure and const specifiers.
-
Add set of generated declarations to CLITypeReferences.
-
Add initial block visitor to GeneratorOutputPass.
-
Only add files to module if module is not null.
-
Add per-declaration support for decl maps.
-
Add BlockGenerator.NeedsNewLine helper property.
-
Fix class nested enums to be handled by the rename pass.
-
Document recently added GenerationOutputMode option.
-
Add TypeQualifiersMode to Type and implement in C++ type printer.
-
Add new VisitQualifiedType overload to visitors.
-
Set include path as weell as file path when creating a new TU.
-
Fix IsGeneratedOverride to take virtual methods into account.
-
Add some helper class hierarchy methods.
-
Fix CppMarshal WriteClassInstance to deal with incomplete classes.
-
Rework Generator interface and add GenerationOutputMode option.
-
Improve IsTypeComplete to be more robust.
-
Improve ignored check for decls with explicit generation kinds.
-
Generate acessor methods for C targets in field to property pass..
-
Set the correct enum integer type in GenerateEnumFromMacros.
-
Fix ignored base checking in CheckIgnoredDecls.
-
Be more strict when constructing a regex for parsing macros.
-
Handle enum items in rename pass.
-
Fix code to use BaseClass property instead of first base.
-
Add initial implementation of declaration maps.
-
Remove unsupported Visual Studio versions from generate options
-
Rename GenerateProjects.bat to Generate.bat
-
Add GenerateVS2019.bat shortcut similar to GenerateMake.bat
-
Prevent projects from picking up obj files that are generated sometimes (#1508)
-
Fix all of our warnings in the parser
-
Fix error in Tests.lua by requiring gmake2 module.
-
Add a GCC 9 build to the LLVM CI build matrix.
-
Fix minor issue when invoking Premake without an action.
-
Compress LLVM archives using zstd.
-
Call MSBuild in x86 build with Win32 platform.
-
Pass the target architecture when building LLVM.
-
Publish artifacts after building LLVM.
-
Fix VS environment paths by setting global env variables.
-
Do not use LLD when building LLVM under macOS.
-
Generate C++ for constructors of abstract types
-
Use NUnit3TestAdapter package (#1504)
-
Add a build for LLVM to the CI
-
Use correct C# parser bindings for windows x64 (#1501)
-
Avoid installing NUnit if its already installed. (#1500)
-
Generate code from tests where libraries appear
-
Fix generation of SequentialLayout structures (#1499)
-
Update parser bindings. (#1497)
-
Fix CS0162 warning about unreachable code (#1492)
-
Fix CS0109 warnings about new keyword not being required. (#1493)
-
Enable Multi-processor Compilation (MSVC)
-
Fix C4273 warnings about inconsistent dll linkage (#1491)
-
Fix warnings about unnecessary using directives. (#1489)
-
Fix C4251 warnings (#1487)
-
Avoid generating an interface with a Dispose method if we already inherit from IDisposable. (#1486)
-
Fix finding of symbols for members of templates
-
Always ignore warnings about missing PDB files
-
Reduce number of "download progress" messages. (#1482)
-
Mark variables with constant expressions as found
-
Make the CPP ABI visible only to the STD symbols
-
Generate valid C++ for destructors of nested types
-
Always use the mangled names as reported by Clang
-
Switch CI to GitHub Actions
-
Call the destructor instead of deleting the object in the generated symbols
-
Regenerate the parser bindings with sequential layouts (#1479)
-
Remove dummy variable and use discards instead available since C# 7.0 (#1478)
-
Fallback to LayoutKind.Explicit when a custom alignment is specified. (#1476)
-
Remove
Layout.GetSize()
method as it's no longer relevant (#1474) -
Fix
String.CSharpSignatureType
returning incorrect type when the given type is a pointer or a reference. (#1473) -
Expose if a variable is a constant expression
-
Fix the generation of sequential layouts
-
Create projects which always build generated code
-
Simplify the marshalling of returned pointers (#1470)
-
VTable: improve codegen & make it thread safe (#1469)
-
Create VTables class to cache delegates pointing to native virtual methods (#1468)
-
Improve UTF32Marshaller performance (#1467)
-
Improve generation of C# (#1466)
-
Reduce calls to ConcurrentDictionary to improve performance (#1464)
-
Ensure expression is a valid float constant before trying to append
f
suffix (#1465) -
Fix passing of CMake options to LLVM on Windows
-
Update the kind of completed specializations (#1460)
-
Fix ambiguous conversion functions (#1458)
-
Prevent string destructor from being called twice when its passed by value (#1455)
-
Remove unsupported calling convention usage (#1454)
-
Fix PInvokeStackImbalance when calling C++ methods (#1453)
-
Load symbols at startup to avoid very expensive ResolveSymbol calls everywhere (#1447)
-
Fix IntPtr array marshalling bug and move hard to read code to CppSharp.Runtime (#1446)
-
Fix string marshalling bug and move hard to read code to CppSharp.Runtime (#1445)
-
Add support for const char32_t* and fix const wchar_t* in linux / osx (#1444)
-
Copy arrays of primitive values using System.Buffers.MemoryCopy (#1440)
-
Fix marshalling for bool arrays (#1439)
-
Fix wrong [MarshalAs(UnmanagedType)] for strings (#1438)
-
Remove call argument to fix broken build (#1436)
-
Basic support for static constexpr variables (#1435)
-
Add support for C++ character literals (u, U, L) (#1434)
-
Upgrade premake in preparation for .NET Core (#1298)
-
Use C# 'default literal' to avoid using a type's name that may be renamed (#1432)
-
Add missing
Variable.Type
null check. (#1430) -
Fix generated constructor cant use
placement new
when class overloadsoperator new
(#1431) -
Fix generation of VS projects under non-Windows platforms.
-
Fix wrong marshalling for static member arrays (#1428)
-
Fix wrong generated destructor
-
Ignore non-const data() method for std types like basic_string [c++17] (#1427)
-
Fix crash when trying to read a CXXRecordDecl that doesn't have a definition (#1426)
-
RemovePass is now generic.
-
Added the ability to remove a built-in pass.
-
Fix anonymous member name colliding with enclosing type name (#1425)
-
Allow the users to overwrite CppSharp type maps.
-
Find libraries even when given with no extensions
-
Add an option for building with Visual Studio 2019
-
Fix GCC path detection for Ubuntu 20.
-
Move libraries to a new class for linking options
-
Fix memory leaks when using the driver
-
Simplify ClangParser by making it static
-
Pack the lld headers as well
-
Import native DLL-s (tests and parser) with MSVC
-
Implement and export all methods in tests
-
Don't add ABI-specific parameters when wrapping C
-
Prioritize public non-field properties when resolving naming conflicts
-
Fix patching of virtual tables for MSVC with RTTI
-
Free the memory of the patched v-tables
-
Fix parsing of member pointers with MSVC
-
Generate valid C# for constructors taking const&
-
Generate valid C# for returned function pointers
-
Expose returned values of non-void setters
-
Ensure enumerations lack conflicts when renamed
-
Fix generation for fields of type const reference
-
Simplify the required headers for macOS bindings
-
Option to allow caller to specify it does not want unchanged output files to be modified. This supports incremental build in VS. (#1373) - Ali Alamiri ali.alamiri@sage.com
-
CreateInstance factory overload to pass flag informing wrapper if it should own the native pointer passed to it. - Ali Alamiri ali.alamiri@sage.com
-
force bash use to avoid
./premake5-linux: 3: ./premake5-linux: Bad substitution
error if other default shell in the system - Lorenzo Delana lorenzo.delana@gmail.com -
Made the original virtual tables static too
-
Pass native pointers to bases in the generated C#
-
Check type maps when printing C++ for pointers
-
Do not add type alias templates twice to the AST
-
Fix all leaks of memory in the old expressions
-
Add template functions to their context
-
Fix leaking memory by removing a useless assignment
-
Fix leaking the memory of an entire Clang AST
-
Ignore type maps when printing C++ for symbols
-
Implement more accurate managed type printing in C++ type printer.
-
Use a native type printer context when looking for type maps in CSharpSourcesExtensions.DisableTypeMap.
-
Use explicit type printer when printing types in C# GenerateMethodSpecifier.
-
Refactor CodeGenerator.GenerateMethodSpecifier to allow explicit specifier kind.
-
Do not check declaration access for explicitly generated declarations.
-
Fix TranslationUnit.FileRelativeDirectory to be more robust against null include paths.
-
Fix formatting to of Declaration.GenerationKind to ease debugging.
-
Ignore implicitly deleted copy constructor methods.
-
Correctly marshal constant arrays in C++/CLI (#1346)
-
Marshal pointer to primitive typedefs in C++/CLI (#1355) - Ali Alamiri ali.alamiri@sage.com
-
Fix a regression when renaming classes
-
Fix naming conflicts with nested types and members
-
publish the clang lib folder - Ali Alamiri ali.alamiri@sage.com
-
Implement basic support for parsing function-like macros.
-
Implement TranslationUnit.ToString() to help with debugging.
-
Add debug option and flags to the Premake build and compile scripts.
-
Generate valid C# for parameters typedef-ed to mapped types
-
Update the version of Mono used for builds (CI)
-
Fix the regressed C# marshalling of char*
-
Handle pointer to pointer param (#1343) - Ali Alamiri ali.alamiri@sage.com
-
Handle returned pointers to std::vector in C++/CLI - Ali Alamiri ali.alamiri@sage.com
-
Implement abstract templates to call virtuals
-
Correctly align printed information for debugging
-
Set the render kind of inline command comments
-
Fix all memory leaks in tests
-
Generate by ref parameters of type a pointer to enum
-
Use UnsupportedType description for type name instead of empty string (#1339) - Ali Alamiri ali.alamiri@sage.com
-
Ensure complete template specializations in AST
-
Add an option and checking for generation of deprecated declarations
-
Implement parsing and AST processing of C++ deprecated attributes
-
Make sure we use a native type printer for symbols code generation
-
Git ignore new include folders for cross generation
-
Fix marshaling for wchar_t in C++ generator mode
-
Fix includes setup for parser bindings generation in macOS host platform
-
Fix generation of field property setters in C++ generator
-
Fix FieldToProperty pass to ignore non-public properties in C++ generator
-
Fix declaration access for generated fields flattened from anonymous types
-
Change standard type maps to be more specific about its supported generators
-
Generate forward ref header for enum defined inside a class in C++/CLI (#1322) - Ali Alamiri
-
Move the GenerateInclude logic to GetTypeReference (#1319) - Ali Alamiri
-
By reference enum param fixes (#1321) - Ali Alamiri
-
Add declaration context as object to function class block - Ali Alamiri
-
Add blocks for ctor, dtor, and finalizer bodies. Add constructor that takes a bool from the caller to indicate if the callee should own the pointer passed to it or not - Ali Alamiri
-
Add generic type map handling methods for later refactoring of generators
-
Fix type printing of typedef qualifiers in C++ type printer
-
Fix C++ parser ambiguity in generation of C++ method identifiers by wrapping them in parens
-
Fix generation of C++ constructor for abstract classes
-
Fix generation of native instance constructors in C++ generator
-
Fix marshaling of C++ references in C++ marshaler
-
Minor refactoring to allow better IDE inspection and debugging
-
Rewrite GenerateEnumFromMacros to search through multiple translation units
-
Fix CppTypePrinter to check for typemaps for tag types and keep track of them
-
Implement a few overloads in CppTypePrinter that trigger the type maps checking code
-
Fix ignore type checking to take type maps into account
-
Fix ignored declaration checking to properties desugar field types
-
Fix GetterSetterToProperty pass heuristic to also detect “on” as a verb
-
CppTypePrinter now takes a BindingContext for further usage in type maps handling
-
Only generate “override” in header files for C++ generator
-
Guard MoveFunctionToClassPass pass registration against CLI and C# generators
-
Ignore generated field method acessors when processing properties in GetterSetterToProperty
-
Add cli namespace to header to ensure the array type does not conflict with other types called array - Ali Alamiri
-
Marshal non primitive fixed arrays (#1311) - Ali Alamiri
-
Ensure typedefs of std::vector are mapped - Ali Alamiri
-
Simplify the structure of the LLVM package
-
Always keep default constructors in the AST
-
Keep copy/move constructors and assignment in AST
-
Move the body of a template function to its header
-
Implement proper array printing with C array name suffix notation
-
Fix CLITypeReferences so it generates regular C++ code in C++ generator mode
-
Add CXXOperatorArityZero enum item for further usage in subsequent code
-
Initial C++ generator backend
-
Associate getter/setter methods with their associated property in GetterSetterToProperty pass
-
Added optional getter/setter pair creation for fields in FieldToProperty pass
-
Refactor CLI handling of enums to be based on generic C generator
-
Default to .h file extension in C code generator
-
Add helper methods to ignore and generate specific translation units
-
Guard a few more language-specific passes in the driver
-
Fix generation of multiple interfaces in C# for some edge cases
-
Fix templates to be abstract if any specialization is abstract
-
Fix TranslationUnit.FileRelativePath for invalid units
-
Re-use common C++ declaration type printing code in CLITypePrinter
-
Allow changing the default TypePrinterContextKind when creating a type printer
-
Remove needless pointer offsets from generated C#
-
Fix a crash for secondary bases with secondary bases
-
Fix bug related to processing of potential property methods
-
Ensure generated symbols can use placement new
-
Fix Mono not being found on the PATH on recent macOS versions
-
Instantiate exception specifications before reading
-
Update LLVM to the latest version
-
Fix a syntax error in CMake listing Clang modules
-
Enable building lld as part of LLVM
-
Restore modules needed for compiling with Clang
-
Support Visual Studio 2019 for building Clang
-
Update Travis to Ubuntu Xenial 18.04
-
Simplify and optimize the printing of pointers in C++
-
Fix printing of function pointers in C++
-
Don't export symbols for explicit specializations
-
Avoid invalid template specializations in tests
-
Update the printing of comments to the new Clang
-
Work around MSVC 32 crashing reading of exported symbols in Mach-O
-
Improve Xcode toolchain lookup to be more robust
-
Implement logic for -fgnuc-version= argument required by LLVM
-
Update LLVM to the latest version
-
Refactor Clang builtins directory logic and move it to the managed side
-
Escape C# strings correctly
-
Improve CS_INTERNAL so it now applies to all declarations
-
Print the parser target triple in verbose mode
-
Always re-create the Clang resource directory when building
-
Cleanup Clang resource directory lookup logic
-
Remove old workaround for testing issue that does not seem necessary anymore
-
Git ignore .vscode directory
-
Workaround Premake issue when copying the resource include directories at build time
-
Fix warning about #pragma once in source file
-
Update bootstrap tool to run against latest LLVM
-
Update bootstrap tool to find LLVM build directory
-
Add options to disable tests and examples from the build
-
Improve the ignoring of dependent name types
-
Implement UnresolvedUsingType and UnresolvedUsingTypename
-
Fix the tests for exception types
-
Switch to Xcode 11 in Travis CI
-
Extend printing and reading of exception types
-
Fix the check to ignore dependent name types
-
Ignore unused destructors when generating symbols
-
Fix the printing of "noexcept" in C++
-
Make destructors virtual in abstract classes for tests
-
Avoid generating abstract implementations for template classes
-
Fix template type checking in CovariantTypeComparer
-
Git ignore nested temporary obj folders
-
Workaround System.TypeLoad exception when running test-suite on macOS
-
Fix enum with zeros for hex literals
-
Fix the moving of free functions to classes to match by module too
-
Generate valid C# when an external module has an unsupported operator
-
Fix a possible overflown stack when ignoring
-
Force compilation of all functions of specializations
-
Fill in missed values when cloning functions
-
Optimize the moving of functions to classes
-
Delete a custom pass added as standard
-
Fix the C++ printing of function pointers in parameters
-
Eliminate generated symbols for ignored functions
-
Fix printing of type defs in C++
-
Remove the internal C# functions for virtual destructors
-
Give unique names to exported inlined functions
-
Generate symbols for methods of specializations
-
Optimize all passes which visited useless items
-
Make the pass for properties more extendable
-
Simplify overrides of overrides of secondary bases
-
Optimize calls to base getters in properties
-
Fix comparison of char and const char* in overloading
-
Optimize the pass for properties
-
Clarify limitations around exceptions and RTTI
-
Destroy returned by value std::strings
-
Upgrade ANSI marshalling to UTF-8 marshalling
-
Generate valid C# when a renamed override causes conflicts
-
Ensure protected nested types are accessible with multiple inheritance
-
Fix the regressed indentation of printed comments
-
Generate projects for .NET 4.7 to use new features
-
Simplify the generated C# for marshalling strings
-
Fix the getting of references to pointers in C#
-
Fix the passing of references to pointers in C#
-
Prefer non-mapped types when resolving ambiguous overloads
-
Make indexers use non-trivial copy ctors if any
-
Fix a memory leak when passing an indirect std::string
-
Build the generator before test bindings for easy testing
-
Fix memory leaks in the map for std::string
-
Fix the passing of std::string by value
-
Guard against null for objects passed by value
-
Generate valid C# for implicit conversion to const char*
-
Generate valid C# when passing a const ref to char
-
Generate valid C# when a secondary base has a public anonymous field
-
Generate valid C# when a method from a secondary base has no native symbol
-
Generate valid C# for typedef-ed type parameters
-
Ensure found type maps always contain the type sought after
-
Flatten anonymous types to avoid empty names
-
Generate valid C# for template parameters with a default value
-
Fix returned objects by value attributed with inalloca
-
Fix default arguments to only map to null if pointers
-
Generate valid C# for returned const void pointers
-
Fix regressions with void pointers and references
-
Generate valid C# for r-values to void pointers
-
Make the default build for Windows 64-bit
-
Sped the LLVM build on Windows up by parallelizing
-
Generate valid C# when a field with an anon type starts with '$'
-
Generate valid C# when a function is named "get"
-
Enable Clang-based look-up for system includes by default
-
Fix the Windows build by not storing Unicode in std::string
-
Fixed type map support for typedef types
-
Name anonymous types after the fields which use them
-
Generate valid C# when std::string is only used for variables
-
Generate valid C# when std::string is only used for non-private fields
-
Support indirect parameters
-
Add a test for passing by value of structs with copy ctors
-
Add parsing and AST support for RecordArgABI information in class records.
-
Fix the generated C++ for Xcode 10.2
-
Optimize renaming of declarations named after keywords
-
Optimize the cleaning of invalid names
-
Fix a crash when a function pointer takes a function pointer
-
Generate valid C# for returned const char*&
-
Generate valid C# for overloads with types nested in templates
-
Fix the naming of anonymous types when 2+ types are nested 2+ levels
-
Remove ParserOptions.Abi since its misleading as it serves no purpose
-
Improved robustness when parsing C++ ABI kind
-
Generate valid C# for template indexers taking const char*
-
Restore removed specializations
-
Add a generic pointer to resolve ambiguity
-
Fix a crash when a function pointer is a template arg
-
Expose public anonymous types
-
Fix the generated C# for fields of type function pointer
-
Fix the generated C# for const char*&
-
Fix the pass for duplicate names not to compare return parameters
-
Fix the generated C# when type arguments are mapped the same
-
Fix typo in options: chsarp -> csharp
-
Fix #1191 CppSharp.CLI.exe --rtti sets -fno-rtti to clang
-
Fix the generated C# for a case with 2 template args
-
Fix the generation of properties for locations in expressions
-
Added statement visiting to IAstVisitor
-
Fix the generated C# when a dependent param has a default value
-
Fix ambiguous code when a nested type and a property-like method with overloads have the same name
-
Extended the AST with C++ statements and expressions.
-
Made public the finding of enabled type maps by strings.
-
Fixed the renaming of properties with the same name as their owners.
-
Simplified the pass for properties.
-
Skip ignored bases in
ClassExtensions.GetBaseProperty
. -
Fixed missing options copy in ParserOptions copy constructor.
-
Use MSBuild when building LLVM on Windows due to PDB issues with Ninja.
-
Improve robustness when parsing types and decls.
-
Fixed indentation regressions.
-
Deleted useless output.
-
Fixed naming edge case in
GenerateProperties.GetReadWritePropertyName
. -
Added
PrintModuleOutputNamespace
option toCSharpTypePrinter
. -
Fixed extraneous new lines when generating multi-line comments.
-
Obsoleted all hand-written types for expressions.
-
Use
takeError()
when handling errors in parsing libraries. -
Fixed a crash with
TranslationUnit.FileName
property. -
Added
ForceClangToolchainLookup
option to force to use Clang's toolchain lookup code. -
Extract
ParserOptions
cloning code into a copy constructor. -
Improve
ParserOptions.Verbose
to print compiler arguments. -
Fixed
Options.DryRun
to not generate any binding code. -
Added some helper methods in
Enumeration
to work with scoped enumerations. -
Added a parsing option to skip gathering of native layout info.
-
Fixed the generated C# when an instance method has a parameter named "instance".
-
Fixed the generated C# for const/non-const overloads with > 1 param.
-
Fixed the generated C# when a ref parameter is named after a keyword.
-
Fixed the generation for parameters of type void**.
-
Fixed the generated C# for indexers in templates specialized with void*.
-
Fixed the generated C# for template specializations of pointers.
-
Fixed the generated C# for const void*& in parameters.
-
Fixed the generated C# when returning a non-const char*.
-
Fixed the generated C# for parameters initialized with {}.
-
Fixed the generated C# when a template is specialized with T and const T.
-
Fixed the generated C# when an unsigned enum is assigned a negative value.
-
Keep Clang libTooling libs when packaging LLVM.
-
Improve error handling in build scripts
UseClang()
. -
Added .NET Core build folder to Git Ignore .
-
Initial integration of Clang AST viewer GUI tool.
-
Made an exception serializable and removed another.
-
Fixed the warnings in the test C++ for C# only.
-
Fixed a crash when parsing libraries on macOS.
-
Fixed error handling when parsing non-existent libraries.
-
Added support for building with Clang and LLD.
-
Switched to use csc.exe Roslyn compiler under Mono
-
Disable most of the support for explicit pre-C++11 ABI since we do not need it anymore
-
Fixed warnings in native test code.
-
Fixed the generation of dependent virtual methods.
-
Fixed overloading of operators with parameters mapped to the same type.
-
Extended the type maps for primitive strings to C++/CLI.
-
Handled int and long in maps to help resolve ambiguity.
-
Simplified type maps by unlinking them from declarations.
-
Properly hashed types to optimize their storage in maps.
-
Fixed right-value references creating ambiguous overloads.
-
Fixed the generated code in a case of ambiguous overloads.
-
Added type maps for primitive strings (pointers to char).
-
Added an option for skipping private declarations.
-
Tested indirect calls from native code of overrides in the target language.
-
Initial support for building under .NET Core.
-
Updated the CI on Linux to use GCC 7.
-
Exported all additional symbols on macOS.
-
Fixed error handling and message when parsing non-existent files.
-
Added a test for passing an std::string by value.
-
Fixed the marshalling of std::string with GCC 6+ on Linux.
-
Added a type map for char.
-
Make Windows10SDK detection more robust
-
Cached found type maps for faster look-ups.
-
Deleted unused and slow code.
-
Fixed the parsing of functions with integral template args.
-
Decreased the build time on the Linux CI.
-
Fixed a crash when parsing type aliases.
-
Fixed the build of the parser when its path has spaces.
-
Changed type maps to only return types - no strings.
-
Simplified type maps by using static objects to disable as needed.
-
Optimized the walking of the managed AST.
-
Optimized the generation of C# by not splitting any strings.
-
Optimized the walking of the AST by simplifying its search.
-
Fixed the late parsing of templates.
-
Fixed LLVM/Clang tar.gz archive extraction using 7-Zip on Windows.
-
Fixed Windows SDK version detection in build scripts.
-
Resolved ambiguity between char-like types in the generated C#.
-
Fixed the generated C# for templates with > 1 ctor taking a pointer to a class.
-
Fixed the generated C# for pure virtual functions with default arguments.
-
Fixed the generated C# for default arguments of type pointer to a function.
-
Fixed the generated C# for a certain case of two default parameters.
-
Fixed the generated C# for arguments with default values of "nullptr".
-
Fixed the generated C# for setters with default parameters.
-
Fixed the generated C# for public fields with types mapped to primitive.
-
Fixed the generated C# for constant references to primitives.
-
Upgraded the CI script to use Ubuntu 16.04.
-
Fixed ambiguity when the type of a parameter is mapped to a type in an overload.
-
Fixed renaming when items of an enum only differ by case.
-
Fixed the generated C# for destructors of abstract classes.
-
Stopped using methods deprecated in recent Clang.
-
Excluded many unused modules when building LLVM and Clang.
-
Worked around a missing symbol from a template specialization on macOS.
-
Updated to LLVM/Clang revisions 339502/339494 respectively.
-
Fixed the generation when a secondary base is used in more than one unit.
-
Fixed debugger display variable reference in Block class.
-
Only generated the system module in C# generators.
-
Fixed missing save of generated module template to outputs.
-
Fixed code generator to generate the system module even in single file per unit mode.
-
Silenced verbose duplicate constructor and operator warnings.
-
Improved the defaults of necessary generation options to improve accessibility.
-
Called the parser setup code in CLI.
-
Only included header files when scanning directories in CLI.
-
Fixed generation support for pointers to enums in C#.
-
Fixed a case of functions converted to methods.
-
Improve error handling in case of exceptions in CLI tool driver.
-
Added an option to the CLI tool for enabling RTTI.
-
Improved the messages for errors in the CLI tool.
-
Added parameter index to managed marshal variables.
-
Changed the generated C# for const references to primitives as just primitives.
-
Error messages are now written to stderr.
- Added getting of the path to Xcode based on xcode-select.
-
Do not generate wrappers for template specializations if original method in template class is ignored.
-
Add one more include path which Linux usually expects.
-
Evaluate expressions for enums generated using GenerateEnumFromMacros
-
Evaluate expressions when generating enum from macros - ExpressionEvaluator taken from https://github.com/codingseb/ExpressionEvaluator
-
Set the name-space for enums generated from macros.
-
Preliminary script for building 32-bit Nuget package
-
Field property getter returns non-value types by reference instead of by copy.
-
Update VS check when downloading pre-compiled LLVM packages.
-
Add
IgnoreConversionToProperty(pattern)
andForceConversionToProperty(pattern)
. -
Add
UsePropertyDetectionHeuristics
option toDriverOptions
. -
Add "run" to verbs.txt
-
Added support for 16-bit wide characters (char16_t).
-
Fixed the generated C++ for symbols when protected classes need them.
-
Removed the possibility for conflicts between overloads when generating C++ for symbols.
-
Collected extra symbols in the order of their compilation.
-
Fixed the generated C# when a specialisation of a template used as a secondary base has an invalid function.
-
Fixed the generated C# when a template interface specialised with another specialisation returns a template parameter.
-
Fixed the generated C# when a default arg is assigned a specialisation also used as a secondary base.
-
Fixed a crash when a constructor takes a template or specialisation.
-
Fixed the generated C# for public fields with type a dependent pointer.
-
Enabled classes having specializations for secondary bases to call their extensions.
-
Fixed the generated C# for subclasses of specialisations used as secondary bases.
-
Fixed the generated C# when a template specialization with extensions is used for a secondary base.
-
Extended the multiple inheritance to work for templates.
-
Fixed a regression causing public fields of type specialization to be ignored.
-
Fixed the generated C# for templates with optional arguments.
-
Represented "void" with "object" for template arguments in the generated C#.
-
Fixed the generated C# for public fields with type a dependent function pointer.
-
Fixed the generated C# when a constructor has a default parameter with type an external specialisation.
-
Set an index when marshalling the value in setters of properties.
-
Fixed the generated C# when a function uses an external specialisation.
-
Fixed the generated C# when a base class is an external specialisation.
-
Fixed the generated C# for indexers with dependent keys.
-
Fixed the generated C# for templated indexers specialised with enums.
-
Add compiler/abi information to LLVM package names on linux.
-
Exported entire specialisations when they only have valid functions.
-
Considered dependent fields when generating internals for types nested in templates.
-
Removed extensions for non-generated template specialisations.
-
Fixed the generated C# when a template returns a specialisation with itself as a type arg.
-
Fixed the generated C# for members of types nested in templates.
-
Fixed the generated C# when a template is nested in another.
-
Add ability for managed module wrapper to reference extra assemblies.
-
Re-added linux include path that was removed by mistake.
-
Enable debug information generation for all tests.
-
Fix debug output not being generated when AST element had no comment.
-
Explicitly link to libstdc++ on linux.
-
All arguments passed to
build/Compile.sh
are passed to premake. Allows more fine-grained build customization when using this shell script for compiling. -
Tweak linux include dirs, previous change broke GCC7 include dirs on archlinux.
-
Consistent class/struct keywords fixed for cases where wrapper class would contain members from several different translation units.
-
Fix debug output breaking generated binding code.
-
Completely remove
GenerateUnformatted()
method. -
CI: x64 builds on msvc and sudo requirement for travis
-
Always generate formatted code.
-
Fix
Delegates
name-space being not generated. In some casesDelegates
name-space could be attached to a name-space which is not wrapped and as a result of thatDelegates
name-space was also not generated in wrapper code resulting in a wrapper build errors. Change adds extra logic which tries to find the correct library name-space if more than one name-space is present. -
Consistently declare classes/structs. Fixes issue where compilation error is produced due to file name containing constants matching class marked as value type.
-
Fix linking to LLVM libs on linux, when system has llvm/clang installed.
-
Enable cxx11 abi for GCC 4.9+ on linux.
-
Worked around a bug in the Mono C# compiler when casting generics.
-
Fixed a crash when the body of a templated function contains references to non-functions.
-
Use correct LLVM build dir for includes from unpackaged LLVM builds
-
get_llvm_build_dir() returns "build" subdir if it exists, if not - subdir with package name.
-
Fix linked libs for linux
-
Use correct LLVM build dir for includes from unpackaged LLVM builds.
-
Removed a duplicate explicit instantiation from the tests.
-
Cloning llvm from git replaced with downloading archives of exact commits from github. This is much faster.
-
Worked around duplication of types nested in templates and forwarded.
-
Fixed a crash when passing null as an std::string on Unix.
-
Force-set platform type to managed targets.
-
Fix linux include paths in ParserGen and CLI generator.
-
Fix build errors in CppSharp.Parser.Bootstrap target.
-
Fixed a crash when there are parsing errors.
-
Fixed the collection of additional symbols to ignore warnings.
-
Fixed the generated C# when a constructor takes a specialisation.
-
Fixed a possible crash when instantiating template functions in the parser.
-
Fixed the generated C# for templates with fields other templates not used anywhere else.
-
Fixed the generated C# when using std::map.
-
Fixed the generated C# for specialisations with an ignored specialisation as an arg.
-
Fixed the generated C# for specialisations only used as type arguments.
-
Removed extensions for internal template specialisations.
-
Fixed the parsing of an undeclared template specialisation with an extension method.
-
Validated bodies of instantiated template functions.
-
Added a new field accessor synth kind.
-
Improved IsSynthetized check to handle property setters.
-
Improve get base method and property methods to work with generalized declarations.
-
Added AssociatedDeclaration to Declaration copy constructor.
-
Included template specialisations only used as returned types.
-
Included the destructor of std::allocator to the C++ symbols.
-
Prevented C++ generation for invalid specialised functions.
-
Fixed the generated C# for fixed arrays of Booleans
-
Updated to LLVM/Clang revisions 318543/318538 respectively.
-
Fixed the script for LLVM to handle paths with spaces.
-
Generalized method fields to declaration associations.
-
Improved debugging display for declarations.
-
Added optional visiting of property accessors.
-
CodeGenerator is now an IAstVisitor.
-
Cleaned up the additional parser options after parsing headers.
-
Fixed the generated C++ for symbols to be compatible with Clang.
-
Fixed the generated C# when a type nested in a template is forwarded.
- Fixed a crash when parsing unnamed declarations in name-spaces.
-
Handled any level of nesting when generating internals for specialisations in C#.
-
Fixed the generation of internals for template specialisations.
-
Ensured symbols for nested template specialisations.
-
Fixed the generated C++ for external template specialisations.
-
Completed just class template specialisations used in functions.
-
Fixed a regression of generating templates in C# with the option off.
-
Optimised the parser by skipping the system translation units.
-
Reused parameters between functions and their types (as Clang does).
-
Added an option for specifying STD types to bind.
-
Reduced time and memory during generation by skipping methods of most STD classes.
-
Improved the check for a layout on a record.
-
Fixed a crash when trying to get a source location for an implicit declaration.
-
Fixed the generated C# for a fixed array of pointers.
-
Removed unused STD enumerations from generation.
-
Fixed a crash when a comment contains regular text wrapped in <>.
-
Made only really used classes internal.
-
Fixed a typing error in the name of a function.
-
Ignored return parameters when fixing default arguments of overrides.
-
Ensured no overflown stack in the AST converter.
-
Fixed code generation for using template types.
-
Improved debugging display for Type type.
-
Fixed incorrectly generated bindings for class with non-type template arguments.
-
Fixed the generated C# for templates derived from regular dynamic classes.
-
Ensured all non-system template specialisations are complete.
-
Fixed a problem when walking the managed AST because friend templated classes were seen as declared multiple times and resulted into a crash.
-
Improved type notation in the manual.
-
Documented string marshaling behavior.
-
Fixed implicit class record walking in the parser.
-
Added a new verbose flag to the CLI tool and improved verbose handling.
-
Fixed duplicate generation of forward declared class.
-
Small cleanup and minor optimizations in ResolveIncompleteDeclsPass.
-
Improved the fix for handling non-type params in template specialisation types.
-
Fixed template parsing issue with processing of type locs.
-
Fixed a parser bug when dealing with DependentTemplateSpecializationTypeLoc.
-
Fixed an erroneous usage of LLVM cast with a regular C++ type. Only found with debug-mode LLVM build.
-
Fixed VS2017 system includes search error #957 (#958)
-
Added experimental support for templates.
-
Fixed the generated C# when a virtual function takes a fixed array.
-
Fixed the generated C# for fixed arrays in types of parameters.
-
Fixed the generated C# for virtuals taking arrays of objects.
-
Lookup Mono SDK path on Windows registry.
-
Fixed the generated C# when a virtual function takes an array.
-
Fixed the generated C# with 4+ modules and repetitive delegates.
-
Added C# marshalling of parameters of type array of const char* const.
-
Added C# marshalling of parameters of type array of const char*.
-
Fixed null arrays in C# to be passed as such to C/C++.
-
Added C# marshalling of parameters of type array of objects.
-
Added C# marshalling of parameters of type array of primitives.
-
Added marshalling of parameters of type array of pointers.
-
Fixed the generated C# for two anonymous types nested in another anonymous type.
-
Removed unused internals from the generated C#.
-
Added an example for the parser API-s.
-
Add C++17 to the parser options
-
Compile.sh script now has improved error handling.
-
Linux toolchain can be supplied in the same spirit in path probing on Mac.
-
Enabled empty arrays of non-primitives only when not using MSVC.
-
Ignore zero-sized constant C array types.
-
The compilation platform is now nullable by default and validated by the host platforms.
-
Added LLVM target initialization and supporting libraries for parsing inline assembly.
-
Fixed a crash when trying to use a VS version missing from the system.
-
Fixed the binding of multiple identical function pointers with a calling convention.
-
Got rid of anonymous names for delegates.
-
Fixed the calling conventions of delegates.
-
Ensures that if a delegate is used for a virtual as well as something else, it finally ends up as public.
-
Fixed the code generation when the return type of a method is a function pointer that has been used somewhere else as well.
-
Added Access and Calling convention to the delegate definition.
-
Generated properties from setters returning Booleans.
-
Added some aliases to options in the CLI tool.
-
[generator] Improved processing for C++ inline namespaces.
-
Fixed initial output messages in the CLI.
-
Generated properties from get()/void get() pairs.
-
Restored the option for generating one C# file per unit.
-
Fixed the sorting of modules to also work with manually added dependencies.
-
Do not generated unformatted code if debug mode is enabled.
-
Added an option to the CLI for enabling debug mode for generated output.
-
Improved the directory setup in the CLI in case the path is not a file path.
-
Adds a new option to the CLI for automatic compilation of generated code.
-
Adds a new dedicated "-exceptions" flag to enable C++ exceptions in the CLI.
-
Added a new -A option to the CLI to pass compiler arguments to Clang parser.
-
Fixed the name of an option in the CLI.
-
Removed the showing of help for the CLI if we have output an error previously.
-
Improved error messages in the CLI.
-
Improve platform detection in the CLI so the current platform is set by default.
-
Fixed a directory check in the CLI that was throwing exceptions in Mono.
-
Fixed the generated C# indexers for specialisations of pointers.
-
Fixed the generated C# for increment and decrement operators.
-
Removed leftovers in the comments from unsupported custom xml tags.
-
Fixed the generation of symbols to check all base classes up the chain.
-
Printed the text from unsupported comment tags.
-
Fixed the generated C# for a case of a typedef of a function pointer.
Typedefs of function pointers can be written in two ways:
typedef void (*typedefedFuncPtr)(); int f(typedefedFuncPtr fptr); typedef void (typedefedFuncPtr)(); int f(typedefedFuncPtr* fptr); Up until now we only supported the former.
-
Fixed the C# generation for functions with typedefed function pointers as params
-
Set the name-space of a parameter to its function.
-
Included the comments plain text to the remarks block.
-
Fix the typo in LLVM.lua
-
Prevented projects from being generated using GenerateProjects.bat
-
Fixed the generated C# for setters with a reference to a primitive type.
-
Ensured a single element for remarks in the generated XML documentation comments.
-
Fixed the renaming of methods in forwarded types from secondary bases in dependencies.
-
Added to a method a list of its overridden methods.
-
Generated internals of external specialisations only if the template has template fields.
-
Equalised the access of overrides and their base methods.
-
Fixed the code generation for indexers returning a void pointer.
-
Fixed the generated C# when a protected constructor has a parameter with a protected type.
-
Fixed the generated C# when an external specialisation with a dependent field is used as a field.
-
Made Function a DeclarationContext to match the Clang AST.
-
Made the C/C++ language switches adjustable in managed code.
-
Added an option to enable or disable RTTI.
-
Fixed the generation of inlines to handle types in classes in name-spaces.