rust: export jsonbuilder API in sys crate

using cbindgen + bindgen
pull/12979/head
Philippe Antoine 8 months ago committed by Victor Julien
parent 5c7173c6df
commit 51859050cb

@ -141,6 +141,19 @@ if HAVE_BINDGEN
printf "// This file is automatically generated. Do not edit.\n\n" > sys/src/sys.rs
cat sys/src/sys.rs.tmp >> sys/src/sys.rs
rm -f sys/src/sys.rs.tmp
$(CBINDGEN) --quiet --config cbindgen.toml src/jsonbuilder.rs -o gen/jsonbuilder.h
$(BINDGEN) \
-o sys/src/jsonbuilder.rs.tmp \
--rust-target 1.68 \
--no-layout-tests \
--disable-header-comment \
--allowlist-function 'SC.*' \
gen/jsonbuilder.h \
-- \
-DHAVE_CONFIG_H -I../src -I../rust/gen $(CPPFLAGS)
printf "// This file is automatically generated. Do not edit.\n\n" > sys/src/jsonbuilder.rs
cat sys/src/jsonbuilder.rs.tmp >> sys/src/jsonbuilder.rs
rm -f sys/src/jsonbuilder.rs.tmp
else
@echo "error: bindgen not installed, can't update bindings"
exit 1

@ -43,7 +43,8 @@ include_version = true
# A list of headers to #include (with quotes)
# default: []
includes = []
no_includes = true
includes = ["stdint.h", "stdbool.h"]
# The desired length of a line to use when formatting lines
# default: 100

@ -0,0 +1,125 @@
// This file is automatically generated. Do not edit.
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SCJsonBuilder {
_unused: [u8; 0],
}
#[doc = " A \"mark\" or saved state for a JsonBuilder object.\n\n The name is full, and the types are u64 as this object is used\n directly in C as well."]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SCJsonBuilderMark {
pub position: u64,
pub state_index: u64,
pub state: u64,
}
extern "C" {
pub fn SCJbNewObject() -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbNewArray() -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbClone(js: *mut SCJsonBuilder) -> *mut SCJsonBuilder;
}
extern "C" {
pub fn SCJbFree(js: *mut SCJsonBuilder);
}
extern "C" {
pub fn SCJbCapacity(jb: *mut SCJsonBuilder) -> usize;
}
extern "C" {
pub fn SCJbReset(jb: *mut SCJsonBuilder);
}
extern "C" {
pub fn SCJbOpenObject(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbStartObject(js: *mut SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbOpenArray(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbSetString(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char,
val: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn SCJbSetStringFromBytes(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetBase64(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetHex(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, bytes: *const u8, len: u32,
) -> bool;
}
extern "C" {
pub fn SCJbSetFormatted(
js: *mut SCJsonBuilder, formatted: *const ::std::os::raw::c_char,
) -> bool;
}
extern "C" {
pub fn SCJbAppendObject(jb: *mut SCJsonBuilder, obj: *const SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbSetObject(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: *mut SCJsonBuilder,
) -> bool;
}
extern "C" {
pub fn SCJbAppendString(js: *mut SCJsonBuilder, val: *const ::std::os::raw::c_char) -> bool;
}
extern "C" {
pub fn SCJbAppendStringFromBytes(js: *mut SCJsonBuilder, bytes: *const u8, len: u32) -> bool;
}
extern "C" {
pub fn SCJbAppendBase64(js: *mut SCJsonBuilder, bytes: *const u8, len: u32) -> bool;
}
extern "C" {
pub fn SCJbAppendUint(js: *mut SCJsonBuilder, val: u64) -> bool;
}
extern "C" {
pub fn SCJbAppendFloat(js: *mut SCJsonBuilder, val: f64) -> bool;
}
extern "C" {
pub fn SCJbSetUint(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: u64,
) -> bool;
}
extern "C" {
pub fn SCJbSetInt(js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: i64)
-> bool;
}
extern "C" {
pub fn SCJbSetFloat(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: f64,
) -> bool;
}
extern "C" {
pub fn SCJbSetBool(
js: *mut SCJsonBuilder, key: *const ::std::os::raw::c_char, val: bool,
) -> bool;
}
extern "C" {
pub fn SCJbClose(js: *mut SCJsonBuilder) -> bool;
}
extern "C" {
pub fn SCJbLen(js: *const SCJsonBuilder) -> usize;
}
extern "C" {
pub fn SCJbPtr(js: *mut SCJsonBuilder) -> *const u8;
}
extern "C" {
pub fn SCJbGetMark(js: *mut SCJsonBuilder, mark: *mut SCJsonBuilderMark);
}
extern "C" {
pub fn SCJbRestoreMark(js: *mut SCJsonBuilder, mark: *mut SCJsonBuilderMark) -> bool;
}

@ -19,4 +19,5 @@
#![allow(non_snake_case)]
#![allow(clippy::all)]
pub mod jsonbuilder;
pub mod sys;

Loading…
Cancel
Save