encoding_c 0.9.1

C API for encoding_rs
Documentation

encoding_c

crates.io docs.rs Apache 2 / MIT dual-licensed

encoding_c is an FFI wrapper for encoding_rs.

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 compliled 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.

Release Notes

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 of gsl::span returning nullptr.

0.7.6

  • Rename ENCODING_RS_NON_NULL_CONST_ENCODING_PTR to ENCODING_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 to SIZE_MAX in the max length calculation functions.

0.6.0

  • Check in the cheddar-generated header and comment out the cheddar-using build.rs.

0.5.0

  • Initial release of encoding_c. (I.e. first release with FFI in a distinct crate.)