// 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 SCJbSetPrintAsciiString(
        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;
}
