|
…
|
||
|---|---|---|
| .. | ||
| include | ||
| src | ||
| .cargo-checksum.json | ||
| build-disabled.rs | ||
| build.rs | ||
| Cargo.toml | ||
| CONTRIBUTING.md | ||
| COPYRIGHT | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
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
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.
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::spanreturningnullptr.
0.7.6
- 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.
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
NonetoSIZE_MAXin 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.)