本文整理汇总了C++中json_incref函数的典型用法代码示例。如果您正苦于以下问题:C++ json_incref函数的具体用法?C++ json_incref怎么用?C++ json_incref使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了json_incref函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: incref_and_decref
void incref_and_decref()
{
json_t *obj = json_object();
json_t *jay = json_string("周杰伦");
json_object_set_new(obj, "name", jay);
json_t *albums = json_array();
json_t *alb1 = json_object();
json_object_set_new(alb1, "name", json_string("范特西"));
json_object_set_new(alb1, "year", json_string("2001"));
json_array_append_new(albums, alb1);
json_t *alb2 = json_object();
json_object_set_new(alb2, "name", json_string("八度空间"));
json_object_set_new(alb2, "year", json_string("2002"));
json_array_append_new(albums, alb2);
json_object_set_new(obj, "albums", albums);
json_t *tmp = json_object_get(obj, "name");
json_incref(tmp);
json_t *arr = json_object_get(obj, "albums");
json_t *ele = json_array_get(arr, 1);
json_incref(arr);
json_incref(ele);
json_decref(obj);
json_decref(tmp);
json_decref(ele);
json_decref(arr);
}
示例2: cfg_get_bool
// Compute the effective value of the root_files configuration and
// return a json reference. The caller must decref the ref when done
// (we may synthesize this value). Sets enforcing to indicate whether
// we will only allow watches on the root_files.
// The array returned by this function (if not NULL) is guaranteed to
// list .watchmanconfig as its zeroth element.
json_t *cfg_compute_root_files(bool *enforcing) {
json_t *ref;
// This is completely undocumented and will go away soon. Do not document or
// use!
bool ignore_watchmanconfig = cfg_get_bool(NULL, "_ignore_watchmanconfig",
false);
*enforcing = false;
ref = cfg_get_json(NULL, "enforce_root_files");
if (ref) {
if (!json_is_boolean(ref)) {
w_log(W_LOG_FATAL,
"Expected config value enforce_root_files to be boolean\n");
}
*enforcing = json_is_true(ref);
}
ref = cfg_get_json(NULL, "root_files");
if (ref) {
if (!is_array_of_strings(ref)) {
w_log(W_LOG_FATAL,
"global config root_files must be an array of strings\n");
*enforcing = false;
return NULL;
}
prepend_watchmanconfig_to_array(ref);
json_incref(ref);
return ref;
}
// Try legacy root_restrict_files configuration
ref = cfg_get_json(NULL, "root_restrict_files");
if (ref) {
if (!is_array_of_strings(ref)) {
w_log(W_LOG_FATAL, "deprecated global config root_restrict_files "
"must be an array of strings\n");
*enforcing = false;
return NULL;
}
if (!ignore_watchmanconfig) {
prepend_watchmanconfig_to_array(ref);
}
json_incref(ref);
*enforcing = true;
return ref;
}
// Synthesize our conservative default value.
// .watchmanconfig MUST be first
if (!ignore_watchmanconfig) {
return json_pack("[ssss]", ".watchmanconfig", ".hg", ".git", ".svn");
} else {
return json_pack("[sss]", ".hg", ".git", ".svn");
}
}
示例3: dispatch_command
bool dispatch_command(struct watchman_client *client, json_t *args, int mode)
{
struct watchman_command_handler_def *def;
char *errmsg = NULL;
bool result = false;
char sample_name[128];
// Stash a reference to the current command to make it easier to log
// the command context in some of the error paths
client->current_command = args;
json_incref(client->current_command);
def = lookup(args, &errmsg, mode);
if (!def) {
send_error_response(client, "%s", errmsg);
goto done;
}
if (poisoned_reason && (def->flags & CMD_POISON_IMMUNE) == 0) {
send_error_response(client, "%s", poisoned_reason);
goto done;
}
if (!client->client_is_owner && (def->flags & CMD_ALLOW_ANY_USER) == 0) {
send_error_response(client, "you must be the process owner to execute '%s'",
def->name);
return false;
}
w_log(W_LOG_DBG, "dispatch_command: %s\n", def->name);
snprintf(sample_name, sizeof(sample_name), "dispatch_command:%s", def->name);
w_perf_start(&client->perf_sample, sample_name);
w_perf_set_wall_time_thresh(
&client->perf_sample,
cfg_get_double(NULL, "slow_command_log_threshold_seconds", 1.0));
result = true;
def->func(client, args);
if (w_perf_finish(&client->perf_sample)) {
json_incref(args);
w_perf_add_meta(&client->perf_sample, "args", args);
w_perf_log(&client->perf_sample);
} else {
w_log(W_LOG_DBG, "dispatch_command: %s (completed)\n", def->name);
}
done:
free(errmsg);
json_decref(client->current_command);
client->current_command = NULL;
w_perf_destroy(&client->perf_sample);
return result;
}
示例4: json_incref
void JsonApi::buildJsonState(json_t *jroot, std::function<void(json_t *)> result_lambda)
{
json_incref(jroot);
json_t *jinputs = json_object();
json_t *joutputs = json_object();
json_t *jaudio = json_array();
json_t *jin = json_object_get(jroot, "inputs");
if (jin && json_is_array(jin))
{
uint idx;
json_t *value;
json_array_foreach(jin, idx, value)
{
string svalue;
if (!json_is_string(value)) continue;
svalue = json_string_value(value);
Input *input = ListeRoom::Instance().get_input(svalue);
if (input)
{
if (input->get_type() == TBOOL)
json_object_set_new(jinputs, svalue.c_str(), json_string(input->get_value_bool()?"true":"false"));
else if (input->get_type() == TINT)
json_object_set_new(jinputs, svalue.c_str(), json_string(Utils::to_string(input->get_value_double()).c_str()));
else if (input->get_type() == TSTRING)
json_object_set_new(jinputs, svalue.c_str(), json_string(input->get_value_string().c_str()));
}
}
示例5: data
Json::Json( json_t *rhd ): data(rhd)
{
if ( data == NULL )
data = json_null();
else
json_incref( data );
}
示例6: SCOPED_JSON_LOCK
struct ast_json *ast_json_ref(struct ast_json *json)
{
/* Jansson refcounting is non-atomic; lock it. */
SCOPED_JSON_LOCK(json);
json_incref((json_t *)json);
return json;
}
示例7: send_error_response
void send_error_response(struct watchman_client *client,
const char *fmt, ...)
{
char buf[WATCHMAN_NAME_MAX];
va_list ap;
json_t *resp = make_response();
json_t *errstr;
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
errstr = typed_string_to_json(buf, W_STRING_MIXED);
set_prop(resp, "error", errstr);
json_incref(errstr);
w_perf_add_meta(&client->perf_sample, "error", errstr);
if (client->current_command) {
char *command = NULL;
command = json_dumps(client->current_command, 0);
w_log(W_LOG_ERR, "send_error_response: %s failed: %s\n",
command, buf);
free(command);
} else {
w_log(W_LOG_ERR, "send_error_response: %s\n", buf);
}
send_and_dispose_response(client, resp);
}
示例8: throw
MltRuntime::MltRuntime(json_t* script_serialed, int give) throw(Exception):
json_version(0),
producer_version(0),
json_serialize(NULL),
producer(NULL),
consumer(NULL),
status(StatusCreated)
{
if ( !script_serialed || !json_is_object(script_serialed)
|| !json_object_size(script_serialed)) {
if ( give && script_serialed ) json_decref(script_serialed);
throw_error_v(ErrorImplError,"Init MltRuntime with empty json");
}
if (give)
json_serialize = script_serialed;
else
json_serialize = json_incref(script_serialed);
try {
parse_struct(json_serialize, JsonPath(), uuid_pathmap);
}
catch(Exception& e)
{
if (give && json_serialize) json_decref(json_serialize);
throw;
}
json_version++;
pthread_mutex_init(&run_lock,NULL);
}
示例9: json_decref
inline Json &operator=(const Json &from)
{
if (json)
json_decref(json);
json = json_incref(from.json);
return *this;
}
示例10: Json
Json Json::get(const std::string& key) const {
if (isObject()) {
return Json(json_incref(json_object_get(m_json, key.c_str())));
} else {
throw std::domain_error("This method only applies to object type");
}
}
示例11: json_array
json_t *tr_cfg_files_to_json_array(TR_CFG *cfg)
{
guint ii;
json_t *jarray = json_array();
json_t *retval = NULL;
if (jarray == NULL)
goto cleanup;
for (ii=0; ii<cfg->files->len; ii++) {
ARRAY_APPEND_OR_FAIL(jarray,
tr_cfg_file_to_json(
&g_array_index(cfg->files, TR_CFG_FILE, ii)));
}
/* success */
retval = jarray;
json_incref(retval);
cleanup:
if (jarray)
json_decref(jarray);
return retval;
}
示例12: jsonToAny
static cxJson jsonToAny(json_t *v)
{
CX_RETURN(v == NULL,NULL);
cxJson rv = CX_CREATE(cxJson);
rv->json = json_incref(v);
return rv;
}
示例13: Native_json_object_iter_value
//native Handle:json_object_iter_value(Handle:hIter, String:sValueBuffer[], maxlength);
static cell_t Native_json_object_iter_value(IPluginContext *pContext, const cell_t *params) {
HandleError err;
HandleSecurity sec;
sec.pOwner = NULL;
sec.pIdentity = myself->GetIdentity();
// Param 1
void *iter;
Handle_t hndlIterator = static_cast<Handle_t>(params[1]);
if ((err=g_pHandleSys->ReadHandle(hndlIterator, htJanssonIterator, &sec, (void **)&iter)) != HandleError_None)
{
pContext->ThrowNativeError("Invalid <JSON Iterator> handle %x (error %d)", hndlIterator, err);
return BAD_HANDLE;
}
json_t *result = json_object_iter_value(iter);
// Return
if(result == NULL) {
return BAD_HANDLE;
}
Handle_t hndlResult = g_pHandleSys->CreateHandle(htJanssonObject, result, pContext->GetIdentity(), myself->GetIdentity(), NULL);
if(hndlResult == BAD_HANDLE) {
pContext->ThrowNativeError("Could not create handle for iterator element.");
return BAD_HANDLE;
}
// result is a borrowed reference, we don't know what will happen with it
// so we increase the reference counter, which enforces the developer to
// CloseHandle() it.
json_incref(result);
return hndlResult;
}
示例14: json_incref
flux_kvsdir_t *kvsdir_create_fromobj (flux_t *handle, const char *rootref,
const char *key, json_t *treeobj)
{
flux_kvsdir_t *dir = NULL;
if (!key || !treeobj || treeobj_validate (treeobj) < 0
|| !treeobj_is_dir (treeobj)) {
errno = EINVAL;
goto error;
}
if (!(dir = calloc (1, sizeof (*dir))))
goto error;
dir->handle = handle;
if (rootref) {
if (!(dir->rootref = strdup (rootref)))
goto error;
}
if (!(dir->key = strdup (key)))
goto error;
dir->dirobj = json_incref (treeobj);
dir->usecount = 1;
return dir;
error:
flux_kvsdir_destroy (dir);
return NULL;
}
示例15: _cjose_jwe_build_hdr
static bool _cjose_jwe_build_hdr(
cjose_jwe_t *jwe,
cjose_header_t *header,
cjose_err *err)
{
// save header object as part of the JWE (and incr. refcount)
jwe->hdr = header;
json_incref(jwe->hdr);
// serialize the header
char *hdr_str = json_dumps(header, JSON_ENCODE_ANY | JSON_PRESERVE_ORDER);
if (NULL == hdr_str)
{
CJOSE_ERROR(err, CJOSE_ERR_NO_MEMORY);
return false;
}
// copy the serialized header to JWE (hdr_str is owned by header object)
jwe->part[0].raw = (uint8_t *)strdup(hdr_str);
if (NULL == jwe->part[0].raw)
{
CJOSE_ERROR(err, CJOSE_ERR_NO_MEMORY);
cjose_get_dealloc()(hdr_str);
return false;
}
jwe->part[0].raw_len = strlen(hdr_str);
cjose_get_dealloc()(hdr_str);
return true;
}