/* // ColdMUD was created and is copyright 1993, 1994 by Greg Hudson // // ColdX is a derivitive work, and is copyright 1995 by the ColdX Project. // Full copyright information can be found in the file doc/CREDITS // // File: dictop.c // Version: 0.1-5 // Last Edited: 18 May 1995 // // --- // // Function operators for dictionary manipulation. */ #define _POSIX_SOURCE #include "x.tab.h" #include "operator.h" #include "execute.h" #include "data.h" #include "ident.h" #include "memory.h" void op_dict_keys(void) { Data *args; List *keys; if (!func_init_1(&args, DICT)) return; keys = dict_keys(args[0].u.dict); pop(1); push_list(keys); list_discard(keys); } void op_dict_add(void) { Data *args; if (!func_init_3(&args, DICT, 0, 0)) return; anticipate_assignment(); args[0].u.dict = dict_add(args[0].u.dict, &args[1], &args[2]); pop(2); } void op_dict_del(void) { Data *args; if (!func_init_2(&args, DICT, 0)) return; if (!dict_contains(args[0].u.dict, &args[1])) { cthrow(keynf_id, "Key (%D) is not in the dictionary.", &args[1]); } else { anticipate_assignment(); args[0].u.dict = dict_del(args[0].u.dict, &args[1]); pop(1); } } void op_dict_contains(void) { Data *args; int val; if (!func_init_2(&args, DICT, 0)) return; val = dict_contains(args[0].u.dict, &args[1]); pop(2); push_int(val); }