/* ============ PR_ValueString Returns a string describing *data in a type specific manner ============= */ char *PR_ValueString (etype_t type, eval_t *val) { static char line[256]; ddef_t *def; dfunction_t *f; int type_t = (int)type; type_t &= ~DEF_SAVEGLOBAL; type = (etype_t)type_t; switch (type) { case ev_string: sprintf (line, "%s", pr_strings + val->string); break; case ev_entity: sprintf (line, "entity %i", NUM_FOR_EDICT(PROG_TO_EDICT(val->edict)) ); break; case ev_function: f = pr_functions + val->function; sprintf (line, "%s()", pr_strings + f->s_name); break; case ev_field: def = ED_FieldAtOfs ( val->_int ); sprintf (line, ".%s", pr_strings + def->s_name); break; case ev_void: sprintf (line, "void"); break; case ev_float: sprintf (line, "%5.1f", val->_float); break; case ev_vector: sprintf (line, "'%5.1f %5.1f %5.1f'", val->vector[0], val->vector[1], val->vector[2]); break; case ev_pointer: sprintf (line, "pointer"); break; default: sprintf (line, "bad type %i", type); break; } return line; }
int PR_QueryField (progfuncs_t *progfuncs, unsigned int fieldoffset, etype_t *type, char **name, evalc_t *fieldcache) { fdef_t *var; var = ED_FieldAtOfs(progfuncs, fieldoffset); if (!var) return false; if (type) *type = var->type & ~(DEF_SAVEGLOBAL|DEF_SHARED); if (name) *name = var->name; if (fieldcache) { fieldcache->ofs32 = var; fieldcache->varname = var->name; } return true; }
/* ============ PR_UglyValueString Returns a string describing *data in a type specific manner Easier to parse than PR_ValueString ============= */ char *PR_UglyValueString (etype_t type, eval_t *val) { static char line[256]; ddef_t *def; dfunction_t *f; type = (etype_t) (type & ~DEF_SAVEGLOBAL); switch (type) { case ev_string: snprintf (line, sizeof(line), "%s", PR_GetString(val->string)); break; case ev_entity: snprintf (line, sizeof(line), "%i", NUM_FOR_EDICT(PROG_TO_EDICT(val->edict))); break; case ev_function: f = pr_functions + val->function; snprintf (line, sizeof(line), "%s", PR_GetString(f->s_name)); break; case ev_field: def = ED_FieldAtOfs ( val->_int ); snprintf (line, sizeof(line), "%s", PR_GetString(def->s_name)); break; case ev_void: snprintf (line, sizeof(line), "void"); break; case ev_float: snprintf (line, sizeof(line), "%f", val->_float); break; case ev_vector: snprintf (line, sizeof(line), "%f %f %f", val->vector[0], val->vector[1], val->vector[2]); break; default: snprintf (line, sizeof(line), "bad type %i", type); break; } return line; }