Up: Current Support [Contents][Index]
Let us assume that you have an application named myapp
and it
accepts the options -foo
level and -bar
plus a
filename. The proper way to initialize the Forms Library is as follows
FL_CMD_OPT cmdopt[] = { {"-foo", "*.foo", XrmoptionSepArg, 0 }, {"-bar", ".bar", XrmoptionNoArg, "True"} }; int foolevel, ifbar; int deftrue; /* can only be set thru resources */ FL_resource res[] = { {"foo", "FooCLASS", FL_INT, &foolevel, "0"}, {"bar", "BarCLASS", FL_BOOL, &ifbar, "0"}, {"deftrue", "Whatever", FL_BOOL, &deftrue, "1"} }; int main(int argc, char *argv[]) { fl_initialize(&argc, argv ,"MyappClass", cmdopt, 2); fl_get_app_resources(res, 3); if (argc == 1) /* missing filename */ fprintf(stderr, "Usage %s: [-foo level][-bar] " "filename\n","myapp"); /* rest of the program */ }
After this both variables foolevel
and ifbar
are set
either through resource files or command line options, with the
command line options overriding those set in the resource files. In
case neither the command line nor the resource files specified the
options, the default value string is converted.
There is another routine, a resource routine of the lowest level in XForms, which might be useful if a quick-and-dirty option needs to be read:
const char *fl_get_resource(const char *res_name, const char *res_class, FL_RTYPE type, char *defval, void *val, int nbytes);
res_name
and res_class
must be complete resource
specifications (minus the application name) and should not contain
wildcards of any kind. The resource will be converted according to the
type and result stored in type
, which is an integer of type
FL_RTYPE
. nbytes
is used only if the resource type
is FL_STRING
. The function returns the string
representation of the resource value. If a value of
FL_NONE
is passed for type
the resource is not
converted and the pointer val
is not dereferenced.
There is also a routine that allows the application program to set resources programmatically:
void fl_set_resource(const char *string, const char *value);
where string
and value
are a resource-value pair. The
string can be a fully qualified resource name (minus the application
name) or a resource class.
Routines fl_set_resource()
and
fl_get_resource()
can be used to store and retrieve
arbitrary strings and values and may be useful to pass data around.
Up: Current Support [Contents][Index]