Next: Arrays as Table Values
Up: Key/Value Tables
Previous: The Basic Idea
Contents
A Simple Example
Here's a simple example (in C)part173 of how to use a table:
#include "util_Table.h"
#include "cctk.h"
/* create a table and set some entries in it */
int handle = Util_TableCreate(UTIL_TABLE_FLAGS_DEFAULT);
Util_TableSetInt(handle, 2, "two");
Util_TableSetReal(handle, 3.14, "pi");
...
/* get the values from the table */
CCTK_INT two_value;
CCTK_REAL pi_value;
Util_TableGetInt(handle, &two_value, "two"); /* sets two_value = 2 */
Util_TableGetReal(handle, &pi_value, "pi"); /* sets pi_value = 3.14 */
Actually, you shouldn't write code like this--in the real world
errors sometimes happen, and it's much better to catch them close to
their point of occurrence, rather than silently produce garbage results
or crash your program. So, the right thing to do is to always
check for errors. To allow this, all the table routines return a status,
which is zero or positive for a successful return, but negative if
and only if some sort of error has occurred.part174 So, the above example should be rewritten like this:
#include "util_Table.h"
/* create a table and set some entries in it */
int handle = Util_TableCreate(UTIL_TABLE_FLAGS_DEFAULT);
if (handle < 0)
CCTK_WARN(CCTK_WARN_ABORT, "couldn't create table!");
/* try to set some table entries */
if (Util_TableSetInt(handle, 2, "two") < 0)
CCTK_WARN(CCTK_WARN_ABORT, "couldn't set integer value in table!");
if (Util_TableSetReal(handle, 3.14, "pi") < 0)
CCTK_WARN(CCTK_WARN_ABORT, "couldn't set real value in table!");
...
/* try to get the values from the table */
CCTK_INT two_value;
CCTK_REAL pi_value;
if (Util_TableGetInt(handle, &two_value, "two") < 0)
CCTK_WARN(CCTK_WARN_ABORT, "couldn't get integer value from table!");
if (Util_TableGetReal(handle, &pi_value, "pi") < 0)
CCTK_WARN(CCTK_WARN_ABORT, "couldn't get integer value from table!");
/* if we get to here, then two_value = 2 and pi_value = 3.14 */
|