nakedmud-mod/
nakedmud-mod/html/tutorials/
nakedmud-mod/html/tutorials/building_extras/
nakedmud-mod/html/tutorials/c/
nakedmud-mod/html/tutorials/reference/
nakedmud-mod/html/tutorials/scripting/
nakedmud-mod/html/tutorials/scripting_extras/
nakedmud-mod/lib/
nakedmud-mod/lib/help/A/
nakedmud-mod/lib/help/B/
nakedmud-mod/lib/help/C/
nakedmud-mod/lib/help/D/
nakedmud-mod/lib/help/G/
nakedmud-mod/lib/help/H/
nakedmud-mod/lib/help/J/
nakedmud-mod/lib/help/L/
nakedmud-mod/lib/help/M/
nakedmud-mod/lib/help/O/
nakedmud-mod/lib/help/P/
nakedmud-mod/lib/help/R/
nakedmud-mod/lib/help/S/
nakedmud-mod/lib/help/W/
nakedmud-mod/lib/logs/
nakedmud-mod/lib/misc/
nakedmud-mod/lib/players/
nakedmud-mod/lib/pymodules/polc/
nakedmud-mod/lib/txt/
nakedmud-mod/lib/world/
nakedmud-mod/lib/world/zones/examples/
nakedmud-mod/lib/world/zones/examples/mproto/
nakedmud-mod/lib/world/zones/examples/oproto/
nakedmud-mod/lib/world/zones/examples/reset/
nakedmud-mod/lib/world/zones/examples/rproto/
nakedmud-mod/lib/world/zones/examples/trigger/
nakedmud-mod/lib/world/zones/limbo/
nakedmud-mod/lib/world/zones/limbo/room/
nakedmud-mod/lib/world/zones/limbo/rproto/
nakedmud-mod/src/alias/
nakedmud-mod/src/dyn_vars/
nakedmud-mod/src/editor/
nakedmud-mod/src/example_module/
nakedmud-mod/src/help2/
nakedmud-mod/src/set_val/
nakedmud-mod/src/socials/
nakedmud-mod/src/time/
#ifndef __DYN_VARS_H
#define __DYN_VARS_H
//*****************************************************************************
//
// dyn_vars.c
//
// This module allows key/value pairs to be dynamically created on characters,
// objects, and rooms. Values can be strings, integers, or doubles. If a value
// is called for in the wrong type (e.g. you're trying to get a string as an 
// integer) the module will automagically handle the conversion. Variable types
// default to ints.
//
//*****************************************************************************

//
// This must be put at the top of mud.h so the rest of the MUD knows that
// we've got the alias module installed
// #define MODULE_DYN_VARS
//


// the different types of data we can store
#define DYN_VAR_STRING        0
#define DYN_VAR_INT           1
#define DYN_VAR_LONG          2
#define DYN_VAR_DOUBLE        3



//
// prepare dyn_vars for use
//
void         init_dyn_vars   (void);

int          charGetVarType   (CHAR_DATA *ch, const char *key);
int          charGetInt       (CHAR_DATA *ch, const char *key);
long         charGetLong      (CHAR_DATA *ch, const char *key);
double       charGetDouble    (CHAR_DATA *ch, const char *key);
const char  *charGetString    (CHAR_DATA *ch, const char *key);
void         charSetInt       (CHAR_DATA *ch, const char *key, int val);
void         charSetLong      (CHAR_DATA *ch, const char *key, long val);
void         charSetDouble    (CHAR_DATA *ch, const char *key, double val);
void         charSetString    (CHAR_DATA *ch, const char *key, const char *val);
bool         charHasVar       (CHAR_DATA *ch, const char *key);
void         charDeleteVar    (CHAR_DATA *ch, const char *key);

int          objGetVarType   (OBJ_DATA *ch, const char *key);
int          objGetInt       (OBJ_DATA *ch, const char *key);
long         objGetLong      (OBJ_DATA *ch, const char *key);
double       objGetDouble    (OBJ_DATA *ch, const char *key);
const char  *objGetString    (OBJ_DATA *ch, const char *key);
void         objSetInt       (OBJ_DATA *ch, const char *key, int val);
void         objSetLong      (OBJ_DATA *ch, const char *key, long val);
void         objSetDouble    (OBJ_DATA *ch, const char *key, double val);
void         objSetString    (OBJ_DATA *ch, const char *key, const char *val);
bool         objHasVar       (OBJ_DATA *ch, const char *key);
void         objDeleteVar    (OBJ_DATA *ch, const char *key);

int          roomGetVarType   (ROOM_DATA *ch, const char *key);
int          roomGetInt       (ROOM_DATA *ch, const char *key);
long         roomGetLong      (ROOM_DATA *ch, const char *key);
double       roomGetDouble    (ROOM_DATA *ch, const char *key);
const char  *roomGetString    (ROOM_DATA *ch, const char *key);
void         roomSetInt       (ROOM_DATA *ch, const char *key, int val);
void         roomSetLong      (ROOM_DATA *ch, const char *key, long val);
void         roomSetDouble    (ROOM_DATA *ch, const char *key, double val);
void         roomSetString    (ROOM_DATA *ch, const char *key, const char *val);
bool         roomHasVar       (ROOM_DATA *ch, const char *key);
void         roomDeleteVar    (ROOM_DATA *ch, const char *key);

#endif // __DYN_VARS_H