
25.4 XView Packages
Earlier, we introduced the concept of XView methods and how they are used to define the in-
teraction between a particular class and the XView intrinsics. These methods, along with a
set of attributes, macros, types, and functions, collectively make up an XView package. The
XView library is made up of statically subclassed (pre-built) packages representing user in-
terface objects.
25.4.1 The Xv_pkg Type
Packages (and thus, classes) are declared by creating a global variable of type Xv_pkg. This
package is defined in <xview/pkg_public.h> as:
typedef struct _xview_pkg {
char *name;
Attr_attribute attr_id;
unsigned size_of_object;
struct _xview_pkg *parent_pkg;
int (*init)();
Xv_opaque (*set)();
Xv_opaque (*get)();
int (*destroy)();
Xv_object (*find)();
} Xv_pkg;
The fields of the Xv_pkg type are declared and used as follows:
name The name of the package is a unique, descriptive string. This is useful
for debugging the ERROR package, and it may also be used in the fu-
ture to implement resource handling from the resource database.
Therefore, it should not contain whitespace or dots (periods). Under-
scores and hyphens are allowed, but should be avoided for aesthetic
reasons. A combination of uppercase and lowercase letters should be
used to imply multi-word names (e.g., “DigitalClock”).
attr_id This is the ID of the package. It is set to a unique number and is used
in attributes’ values to ...