Awesome
encoding_c
encoding_c is an FFI wrapper for encoding_rs.
Bindings for encoding_rs::mem
See the encoding_c_mem
crate
for bindings for encoding_rs::mem
.
Licensing
Please see the file named COPYRIGHT.
No Unwinding Support!
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.
C/C++ Headers
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.
Release Notes
0.9.8
- Remove year from copyright notices.
0.9.7
- Specify a
links
value in the Cargo manifest. - Emit an
include_dir
variable from build script so that other build scripts depending on this crate can rely on it.
0.9.6
- Fix a bug in the C++ header.
0.9.5
- Adjust documentation for encoding_rs 0.8.20.
0.9.4
- Fix bogus C header.
0.9.3
- Fix bogus C++ header.
0.9.2
- Wrap
Decoder::latin1_byte_compatible_up_to
.
0.9.1
- Wrap
Encoding::is_single_byte()
. - Pass through new feature flags introduced in encoding_rs 0.8.11.
0.9.0
- Update to encoding_rs 0.8.0.
0.8.0
- Update to encoding_rs 0.7.0.
- Drop
encoding_for_name()
. - Deal correctly with the
data()
method ofgsl::span
returningnullptr
.
0.7.6
- Rename
ENCODING_RS_NON_NULL_CONST_ENCODING_PTR
toENCODING_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.
0.7.5
- 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
.
0.7.4
- Wrap
has_pending_state()
.
0.7.3
- Use C preprocessor definitions for encoding constant declarations.
0.7.2
- Parametrize the struct type names behind C preprocessor definitions.
- Leave it to the user to provide
char16_t
. Avoid including a header for it.
0.7.1
- Fix documentation for pointers that get used in
std::slice::from_raw_parts()
.
0.7.0
- Map
None
toSIZE_MAX
in the max length calculation functions.
0.6.0
- Check in the
cheddar
-generated header and comment out thecheddar
-usingbuild.rs
.
0.5.0
- Initial release of encoding_c. (I.e. first release with FFI in a distinct crate.)