encoding_c is an FFI wrapper for encoding_rs.
See the encoding_c_mem crate
for bindings for encoding_rs::mem.
Please see the file named COPYRIGHT.
This crate is meant for use in binaries compiled with panic = 'abort', which
is required for correctness! Unwinding across FFI is Undefined Behavior, and
this crate does nothing to try to prevent unwinding across the FFI if
compiled with unwinding enabled.
include/encoding_rs.h and include/encoding_rs_statics.h are needed for C
usage.
include/encoding_rs_cpp.h is a sample C++ API built on top of the C API using
GSL and the C++ standard library. Since C++ project typically roll their own
string classes, etc., it's probably necessary for C++ projects to manually
adapt the header to their replacements of standard-library types.
There's a write-up about the C++ wrappers.
- Remove year from copyright notices.
- Specify a
linksvalue in the Cargo manifest. - Emit an
include_dirvariable from build script so that other build scripts depending on this crate can rely on it.
- Fix a bug in the C++ header.
- Adjust documentation for encoding_rs 0.8.20.
- Fix bogus C header.
- Fix bogus C++ header.
- Wrap
Decoder::latin1_byte_compatible_up_to.
- Wrap
Encoding::is_single_byte(). - Pass through new feature flags introduced in encoding_rs 0.8.11.
- Update to encoding_rs 0.8.0.
- Update to encoding_rs 0.7.0.
- Drop
encoding_for_name(). - Deal correctly with the
data()method ofgsl::spanreturningnullptr.
- Rename
ENCODING_RS_NON_NULL_CONST_ENCODING_PTRtoENCODING_RS_NOT_NULL_CONST_ENCODING_PTR. (Not a breaking change, because defining that macro broke the build previously, so the macro couldn't have been used.) - Use the macro only for statics and not for return values.
- Annotate the encoding pointers that should be wrapped with a
same-representation not-null type in C++ as
ENCODING_RS_NON_NULL_CONST_ENCODING_PTR.
- Wrap
has_pending_state().
- Use C preprocessor definitions for encoding constant declarations.
- Parametrize the struct type names behind C preprocessor definitions.
- Leave it to the user to provide
char16_t. Avoid including a header for it.
- Fix documentation for pointers that get used in
std::slice::from_raw_parts().
- Map
NonetoSIZE_MAXin the max length calculation functions.
- Check in the
cheddar-generated header and comment out thecheddar-usingbuild.rs.
- Initial release of encoding_c. (I.e. first release with FFI in a distinct crate.)