/* How to implement an integer datatype for cvar */ /* (example taken from cvarx) */ /* In some init function... */ g_inttype = cvar_type_new("int"); cvar_type_set_eval(g_inttype, eval_int); cvar_type_set_datasize(g_inttype, sizeof(int)); cvar_type_set_view(g_inttype, view_int); cvar_set_cmd("int", cmd_int); /* Note that there are many more parameters to set, however * they are set to sensible default values by cvar_type_new * which are fine for int */ /* The functions defined above */ cvar_result_e eval_int(cvar_type_t* type, void* vdata, int argc, char** argv) { int* data = (int*) vdata; if(argc == 2) { *data = atoi(argv[1]); } else { cvar_print("%s: int: %d", argv[0], *data); } return cvar_kNoError; } cvar_result_e cmd_int(int argc, char** argv) { if(argc == 3) { void* vdata; int* data; vdata = cvar_create(argv[1], g_inttype); data = (int*) vdata; *data = atoi(argv[2]); } else { cvar_print("usage: %s ", argv[0]); } return cvar_kNoError; } void view_int(char* buffer, size_t len, cvar_type_t* type, void* data) { sprintf(buffer, "int: %d", *((int*) data)); }