本文整理汇总了C++中dictionary_set函数的典型用法代码示例。如果您正苦于以下问题:C++ dictionary_set函数的具体用法?C++ dictionary_set怎么用?C++ dictionary_set使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dictionary_set函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ui_elem_new_type_id
ui_elem* ui_elem_new_type_id(char* name, int type_id) {
if ( dictionary_contains(ui_elems, name) ) {
error("UI Manager already contains element called %s!", name);
}
debug("Creating UI Element %s (%s)", name, type_id_name(type_id));
ui_elem* ui_e = NULL;
for(int i = 0; i < num_ui_elem_handlers; i++) {
ui_elem_handler ui_hand = ui_elem_handlers[i];
if (ui_hand.type_id == type_id) {
ui_e = ui_hand.new_func();
}
}
if (ui_e == NULL) {
error("Don't know how to create ui element %s. No handler for type %s!", name, type_id_name(type_id));
}
dictionary_set(ui_elems, name, ui_e);
int* type_ptr = malloc(sizeof(int));
*type_ptr = type_id;
dictionary_set(ui_elem_types, name, type_ptr);
char* name_copy = malloc(strlen(name) + 1);
strcpy(name_copy, name);
list_push_back(ui_elem_names, name_copy);
return ui_e;
}
示例2: generate_dictionary
/* Tool function to create and populate a generic non-empty dictionary */
static dictionary * generate_dictionary(unsigned sections, unsigned entries_per_section)
{
unsigned i, j ;
dictionary * dic;
char sec_name[32];
char key_name[64];
char key_value[32];
dic = dictionary_new(sections + sections * entries_per_section);
if (dic == NULL)
return NULL;
/* Insert the sections */
for (i = 0; i < sections; ++i) {
sprintf(sec_name, "sec%d", i);
dictionary_set(dic, sec_name, "");
for (j = 0; j < entries_per_section; ++j) {
/* Populate the section with the entries */
sprintf(key_name, "%s:key%d", sec_name, j);
sprintf(key_value, "value-%d/%d", i, j);
dictionary_set(dic, key_name, key_value);
}
}
return dic;
}
示例3: Test_dictionary_growing
void Test_dictionary_growing(CuTest *tc)
{
int i, j;
char sec_name[32];
char key_name[64];
dictionary *dic;
dic = dictionary_new(DICTMINSZ);
CuAssertPtrNotNull(tc, dic);
CuAssertIntEquals(tc, 0, dic->n);
/* Makes the dictionary grow */
for (i = 1 ; i < 101; ++i) {
sprintf(sec_name, "sec%d", i);
CuAssertIntEquals(tc, 0, dictionary_set(dic, sec_name, ""));
for (j = 1 ; j < 11; ++j) {
sprintf(key_name, "%s:key%d", sec_name, j);
CuAssertIntEquals(tc, 0, dictionary_set(dic, key_name, "dummy_value"));
CuAssertIntEquals(tc, i + (i - 1) * 10 + j, dic->n);
}
}
/* Shrink the dictionary */
for (i = 100 ; i > 0; --i) {
sprintf(sec_name, "sec%d", i);
for (j = 10 ; j > 0; --j) {
sprintf(key_name, "%s:key%d", sec_name, j);
dictionary_unset(dic, key_name);
}
dictionary_unset(dic, sec_name);
CuAssertIntEquals(tc, (i - 1) * (11), dic->n);
}
dictionary_del(dic);
}
示例4: Test_dictionary_unset
void Test_dictionary_unset(CuTest *tc)
{
int i, j;
char sec_name[32];
char key_name[64];
dictionary *dic1;
dictionary *dic2;
char *dic1_dump;
char *dic2_dump;
/* try dummy unsets */
dictionary_unset(NULL, NULL);
dictionary_unset(NULL, key_name);
/* Generate two similar dictionaries */
dic1 = dictionary_new(DICTMINSZ);
CuAssertPtrNotNull(tc, dic1);
for (i = 1 ; i < 10; ++i) {
sprintf(sec_name, "sec%d", i);
dictionary_set(dic1, sec_name, "");
for (j = 1 ; j < 10; ++j) {
sprintf(key_name, "%s:key%d", sec_name, j);
dictionary_set(dic1, key_name, "dummy_value");
}
}
dic2 = dictionary_new(DICTMINSZ);
CuAssertPtrNotNull(tc, dic2);
for (i = 1 ; i < 10; ++i) {
sprintf(sec_name, "sec%d", i);
dictionary_set(dic2, sec_name, "");
for (j = 1 ; j < 10; ++j) {
sprintf(key_name, "%s:key%d", sec_name, j);
dictionary_set(dic2, key_name, "dummy_value");
}
}
/* Make sure the dictionaries are the same */
dic1_dump = get_dump(dic1);
dic2_dump = get_dump(dic2);
CuAssertStrEquals(tc, dic1_dump, dic2_dump);
free(dic1_dump);
free(dic2_dump);
/* Those tests should not change the dictionary */
dictionary_unset(dic2, NULL);
dictionary_unset(dic2, "bad_key");
/* dic1 and dic2 must still be the same */
dic1_dump = get_dump(dic1);
dic2_dump = get_dump(dic2);
CuAssertStrEquals(tc, dic1_dump, dic2_dump);
free(dic1_dump);
free(dic2_dump);
}
示例5: iniparser_setstr
int iniparser_setstr(dictionary * ini, char * entry, char * val)
{
// Check whether the dictionary is case-sensitive
if (ini->caseSensitive) {
dictionary_set(ini, entry, val);
} else {
dictionary_set(ini, inistrlwc(entry), val);
}
return 0 ;
}
示例6: Test_dictionary_dump
void Test_dictionary_dump(CuTest *tc)
{
int i, j;
char sec_name[32];
char key_name[64];
dictionary *dic;
char *dump_buff;
const char dump_real[] = "\
sec1\t[]\n\
sec1:key1\t[dummy_value]\n\
sec1:key2\t[dummy_value]\n\
sec1:key3\t[dummy_value]\n\
sec1:key4\t[dummy_value]\n\
sec2\t[]\n\
sec2:key1\t[dummy_value]\n\
sec2:key2\t[dummy_value]\n\
sec2:key3\t[dummy_value]\n\
sec2:key4\t[dummy_value]\n\
";
dic = dictionary_new(DICTMINSZ);
CuAssertPtrNotNull(tc, dic);
/* Try dummy values */
dictionary_dump(NULL, NULL);
dictionary_dump(dic, NULL);
/* Try with empty dictionary first */
dump_buff = get_dump(dic);
CuAssertStrEquals(tc, "empty dictionary\n", dump_buff);
free(dump_buff);
/* Populate the dictionary */
for (i = 1 ; i < 3; ++i) {
sprintf(sec_name, "sec%d", i);
dictionary_set(dic, sec_name, "");
for (j = 1 ; j < 5; ++j) {
sprintf(key_name, "%s:key%d", sec_name, j);
dictionary_set(dic, key_name, "dummy_value");
}
}
/* Check the dump file */
dump_buff = get_dump(dic);
CuAssertStrEquals(tc, dump_real, dump_buff);
free(dump_buff);
dictionary_del(dic);
}
示例7: applyTemplateFromDictionary
/* Apply template search from dictionary src to dictionary dst */
static int
applyTemplateFromDictionary(dictionary *dict, dictionary *src, char *search, int overwrite) {
char *key, *value, *pos;
int i = 0;
int found;
/* -1 on not found, 0+ on actual applies */
found = -1;
for(i=0; i<src->n; i++) {
key = src->key[i];
value = src->val[i];
pos = strstr(key, ":");
if(value != NULL && pos != NULL) {
*pos = '\0';
pos++;
if(!strcmp(search, key) && (strstr(pos,":") != NULL)) {
if(found < 0) found = 0;
if( overwrite || !CONFIG_ISSET(pos)) {
DBG("template %s setting %s to %s\n", search, pos, value);
dictionary_set(dict, pos, value);
found++;
}
}
/* reverse the damage - no need for strdup() */
pos--;
*pos = ':';
}
}
return found;
}
示例8: debug
REGISTRY_PERSON *registry_person_allocate(const char *person_guid, time_t when) {
debug(D_REGISTRY, "Registry: registry_person_allocate('%s'): allocating new person, sizeof(PERSON)=%zu", (person_guid)?person_guid:"", sizeof(REGISTRY_PERSON));
REGISTRY_PERSON *p = mallocz(sizeof(REGISTRY_PERSON));
if(!person_guid) {
for(;;) {
uuid_t uuid;
uuid_generate(uuid);
uuid_unparse_lower(uuid, p->guid);
debug(D_REGISTRY, "Registry: Checking if the generated person guid '%s' is unique", p->guid);
if (!dictionary_get(registry.persons, p->guid)) {
debug(D_REGISTRY, "Registry: generated person guid '%s' is unique", p->guid);
break;
}
else
info("Registry: generated person guid '%s' found in the registry. Retrying...", p->guid);
}
}
else
strncpyz(p->guid, person_guid, GUID_LEN);
debug(D_REGISTRY, "Registry: registry_person_allocate('%s'): creating dictionary of urls", p->guid);
avl_init(&p->person_urls, person_url_compare);
p->first_t = p->last_t = (uint32_t)when;
p->usages = 0;
registry.persons_memory += sizeof(REGISTRY_PERSON);
registry.persons_count++;
dictionary_set(registry.persons, p->guid, p, sizeof(REGISTRY_PERSON));
return p;
}
示例9: dictionary_set
// Check if the key is in the form section:key and if yes create the section in the dictionnary
// if it doesn't exist.
void InitParser::make_section_from_key(const string& key)
{
int pos = key.find(':');
if (!pos) return; // No ':' were found
string sec = key.substr(0,pos);
if (find_entry(sec)) return; // The section is already present into the dictionnary
dictionary_set(dico, sec.c_str(), NULL); // Add the section key
}
示例10: main3
int main3(int argc, char * argv[])
{
dictionary * ini ;
char* k1 = "hello:a";
char* v1 = "nihao";
char* k2 = "hello:b";
char* v2 = "heihei";
ini = dictionary_new(0);
dictionary_set(ini, k1, v1);
dictionary_set(ini, "hello", NULL);
dictionary_set(ini, k2, v2);
iniparser_dump_json(ini, stdout);
iniparser_freedict(ini);
return 0 ;
}
示例11: ui_elem_add_type_id
void ui_elem_add_type_id(char* name, int type_id, ui_elem* ui_elem) {
if ( dictionary_contains(ui_elems, name) ) {
error("UI Manager already contains element called %s!", name);
}
dictionary_set(ui_elems, name, ui_elem);
int* type_ptr = malloc(sizeof(int));
*type_ptr = type_id;
dictionary_set(ui_elem_types, name, type_ptr);
char* name_copy = malloc(strlen(name) + 1);
strcpy(name_copy, name);
list_push_back(ui_elem_names, name_copy);
}
示例12: iniparser_setstr
int iniparser_setstr(
dictionary * ini,
char * entry,
char * val
)
{
dictionary_set(ini, entry, val);
return 0 ;
}
示例13: iniparser_set
/*--------------------------------------------------------------------------*/
int iniparser_set(dictionary * ini, const char * entry, const char * val)
{
int result = 0;
char *lc_entry = xstrdup(entry);
strlwc(lc_entry);
result = dictionary_set(ini, lc_entry, val) ;
free(lc_entry);
return result;
}
示例14: make_section_from_key
// Set the given entry with the provided value. If the entry cannot be found
// -1 is returned and the entry is created. Else 0 is returned.
int InitParser::set_str(const string& key, const string& val)
{
make_section_from_key(key);
int return_val;
if (find_entry(key)) return_val = 0;
else return_val = -1;
dictionary_set(dico, key.c_str(), val.c_str());
return return_val;
}
示例15: update_config
void update_config(char *token, char *username)
{
bstring file = locate_config_file();
bstring tmp = bstrcpy(file);
bcatcstr(tmp, ".tmp_XXXXXX");
int fd = mkstemp((char *) tmp->data);
if (fd < 0)
{
perror("mkstemp");
exit(1);
}
FILE *fp = fdopen(fd, "w");
if (fp == 0)
{
perror("fdopen");
exit(1);
}
dictionary *config;
struct stat statbuf;
int rc = stat((char *) file->data, &statbuf);
if (rc < 0 || statbuf.st_size == 0)
{
/* create a new empty dictionary */
config = dictionary_new(0);
dictionary_set(config, "authentication", 0);
}
else
{
config = iniparser_load(bdata(file));
}
iniparser_set(config, "authentication:token", token);
if (username)
iniparser_set(config, "authentication:user_id", username);
iniparser_dump_ini(config, fp);
iniparser_freedict(config);
fclose(fp);
if (rename(bdata(tmp), bdata(file)) < 0)
{
fprintf(stderr, "Error rename %s to %s: %s\n",
bdata(tmp), bdata(file), strerror(errno));
exit(1);
}
bdestroy(tmp);
bdestroy(file);
}