/* @(#)pkg_public.h 20.25 93/06/28 SMI */ /* * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents * pending in the U.S. and foreign countries. See LEGAL NOTICE * file for terms of the license. */ #ifndef xview_pkg_public_DEFINED #define xview_pkg_public_DEFINED /* *********************************************************************** * Include Files *********************************************************************** */ #include #include /* *********************************************************************** * Typedefs, Enumerations, and Structures *********************************************************************** * * SunView pkg. definition */ /* * PRIVATE structures for pkg implementors only */ /* * Last field before "embedded" struct in an "embedding object". */ typedef long unsigned Xv_embedding; /* * Base instance for all objects */ typedef struct { long unsigned seal; /* Has "special" value meaning "am object" */ Xv_pkg *pkg; /* Always points to pkg chain for an object */ } Xv_base; /* *********************************************************************** * Globals *********************************************************************** */ /* * PUBLIC General interface functions */ EXTERN_FUNCTION (Xv_object xv_create, (Xv_opaque owner, Xv_pkg *pkg, DOTDOTDOT)); EXTERN_FUNCTION (Xv_object xv_find, (Xv_opaque owner, Xv_pkg *pkg, DOTDOTDOT)); EXTERN_FUNCTION (Xv_opaque xv_set, (Xv_opaque object, DOTDOTDOT)); EXTERN_FUNCTION (Xv_opaque xv_get, (Xv_opaque object, Attr_attribute attr, DOTDOTDOT)); EXTERN_FUNCTION (int xv_destroy_safe, (Xv_object object)); EXTERN_FUNCTION (int xv_destroy_check, (Xv_object object)); EXTERN_FUNCTION (int xv_destroy, (Xv_object object)); EXTERN_FUNCTION (int xv_destroy_immediate,(Xv_object object)); /* * PRIVATE functions for pkg implementors only */ EXTERN_FUNCTION (Xv_opaque xv_object_to_standard, (Xv_object object, const char *caller)); #if !(defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)) #define const #endif extern const char *xv_notptr_str; #define XV_OBJECT_SEAL 0xF0A58142 #define XV_OBJECT_TO_STANDARD(_passed_object, _caller, _object)\ {\ if (!_passed_object) {\ xv_error(NULL, ERROR_INVALID_OBJECT,xv_notptr_str,\ ERROR_STRING, _caller,\ 0);\ _object = ((Xv_opaque)0);\ }\ else\ _object = (((Xv_base *)_passed_object)->seal == XV_OBJECT_SEAL) ? _passed_object : xv_object_to_standard(_passed_object, _caller);\ } #endif /* xview_pkg_public_DEFINED */