/* * Copyright (c) 2024 The GoPlus Authors (goplus.org). All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package cjson import ( "unsafe" "github.com/goplus/llgo/c" ) const ( LLGoPackage = "link: $(pkg-config --libs libcjson); -lcjson" ) // llgo:type C type JSON struct { Unused [0]byte } //go:linkname Parse C.cJSON_Parse func Parse(value *c.Char) *JSON //go:linkname ParseWithLength C.cJSON_ParseWithLength func ParseWithLength(value *byte, valueLength uintptr) *JSON func ParseBytes(value []byte) *JSON { return ParseWithLength(unsafe.SliceData(value), uintptr(len(value))) } func ParseString(value string) *JSON { return ParseWithLength(unsafe.StringData(value), uintptr(len(value))) } //go:linkname Null C.cJSON_CreateNull func Null() *JSON //go:linkname True C.cJSON_CreateTrue func True() *JSON //go:linkname False C.cJSON_CreateFalse func False() *JSON //go:linkname Bool C.cJSON_CreateBool func Bool(boolean c.Int) *JSON //go:linkname Number C.cJSON_CreateNumber func Number(num float64) *JSON //go:linkname String C.cJSON_CreateString func String(str *c.Char) *JSON //go:linkname Array C.cJSON_CreateArray func Array() *JSON //go:linkname Object C.cJSON_CreateObject func Object() *JSON // raw json // //go:linkname Raw C.cJSON_CreateRaw func Raw(raw *c.Char) *JSON // Create a string where valuestring references a string so // it will not be freed by Delete // //go:linkname StringRef C.cJSON_CreateStringReference func StringRef(str *c.Char) *JSON // Create an object that only references it's elements so // they will not be freed by Delete // //go:linkname ObjectRef C.cJSON_CreateObjectReference func ObjectRef(child *JSON) *JSON // Create an array that only references it's elements so // they will not be freed by Delete // //go:linkname ArrayRef C.cJSON_CreateArrayReference func ArrayRef(child *JSON) *JSON // Delete a JSON entity and all subentities. // // llgo:link (*JSON).Delete C.cJSON_Delete func (o *JSON) Delete() {} // Append item to the specified array. // // llgo:link (*JSON).AddItem C.cJSON_AddItemToArray func (o *JSON) AddItem(item *JSON) c.Int { return 0 } // Append item to the specified object. // // llgo:link (*JSON).SetItem C.cJSON_AddItemToObject func (o *JSON) SetItem(key *c.Char, item *JSON) c.Int { return 0 } // llgo:link (*JSON).CStr C.cJSON_PrintUnformatted func (o *JSON) CStr() *c.Char { return nil } // Same as CStr. Provided for Go+. // // llgo:link (*JSON).Cstr C.cJSON_PrintUnformatted func (o *JSON) Cstr() *c.Char { return nil } // Render a JSON entity to text for transfer/storage. // // llgo:link (*JSON).Print C.cJSON_Print func (o *JSON) Print() *c.Char { return nil } // Render a JSON entity to text for transfer/storage without any formatting. // // llgo:link (*JSON).PrintUnformatted C.cJSON_PrintUnformatted func (o *JSON) PrintUnformatted() *c.Char { return nil } // Render a JSON entity to text using a buffered strategy. // // prebuffer is a guess at the final size. guessing well reduces reallocation. // // fmt=0 gives unformatted, =1 gives formatted. // // llgo:link (*JSON).PrintBuffered C.cJSON_PrintBuffered func (o *JSON) PrintBuffered(prebuffer c.Int, fmt c.Int) *c.Char { return nil } // llgo:link (*JSON).GetObjectItemCaseSensitive C.cJSON_GetObjectItemCaseSensitive func (o *JSON) GetObjectItemCaseSensitive(key *c.Char) *JSON { return nil } // llgo:link (*JSON).GetArraySize C.cJSON_GetArraySize func (o *JSON) GetArraySize() c.Int { return 0 } // llgo:link (*JSON).GetArrayItem C.cJSON_GetArrayItem func (o *JSON) GetArrayItem(index c.Int) *JSON { return nil } // llgo:link (*JSON).GetStringValue C.cJSON_GetStringValue func (o *JSON) GetStringValue() *c.Char { return nil } //go:linkname Free C.cJSON_free func Free(ptr unsafe.Pointer) //go:linkname FreeCStr C.cJSON_free func FreeCStr(*c.Char)