Query: xtcallconverter
OS: hpux
Section: 1
Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar
XtCallConverter() XtCallConverter() Name XtCallConverter - explicitly invoke a "new-style" resource converter and cache result. Synopsis Boolean XtCallConverter(display, converter, args, num_args, from, to_in_out, cache_ref_return) Display* display; XtTypeConverter converter; XrmValuePtr args; Cardinal num_args; XrmValuePtr from; XrmValuePtr to_in_out; XtCacheRef *cache_ref_return; Inputs display Specifies the display with which the conversion is to be associated. converter Specifies the new-style conversion procedure to be called. args Specifies the additional conversion arguments needed to perform the conversion, or NULL. num_args Specifies the number of additional arguments. from Specifies the source value to be converted. to_in_out Specifies the address at which the converted value is to be stored, and the number of bytes allocated at that address. Outputs to_in_out Returns (in the size field) the actual size of the converted value. cache_ref_return Returns a conversion cache ID if the converter was registered with reference counting. NULL may be passed for this argument if the caller is not interested in reference counting of cached conversion values. Returns True if the conversion was performed successfully, False otherwise. Availability Release 4 and later. Description XtCallConverter() converts the value from as appropriate for the conversion procedure converter by looking a converted value up in the cache, or by invoking the converter with the display, args, num_args, from, and to_in_out arguments. to_in_out->addr should contain the address at which the converted value is to be stored, and to_in_out->size should contain the number of bytes allocated at that address. See the "Background" section below for more details. Usage XtConvertAndStore() is a higher level interface to resource conversion, and is easier to use in most cases. You do not often need, in applications or widgets, to convert between resource types directly. Generally you can rely on the Intrinsics resource management code to perform all necessary conversions for you. When writing a resource converter, however, you may find that you need to invoke another converter. If XtCallConverter() returns an XtCacheRef value you must store it and decrement the reference count (with XtAppReleaseCacheRefs()) when you no longer need the converted value. The easiest way to do this is to register the predefined callback XtCallbackReleaseCacheRef() on the destroy callback of the widget or object that is using the converted value. Background XtCallConverter() looks up the specified type converter in the application context associated with the display. If the converter was not registered or was registered with cache type XtCacheAll or XtCacheByDisplay, XtCallConverter() looks in the conversion cache to see whether this conversion procedure has been called with the specified arguments. If so, XtCallConverter() checks the success status of the prior call. If the conversion failed, XtCallConverter() returns False immediately; otherwise it checks the size specified in the to_in_out argu- ment. If this size is greater than or equal to the size stored in the cache, XtCallConverter(): o Copies the information stored in the cache to the location specified by the to_in_out argument. o Stores the cache size in to_in_out->size. o Returns True. If the size specified in the to_in_out argument is smaller than the size stored in the cache, XtCallConverter() copies the cache size into to->size and returns False. If the converter was registered with cache type XtCacheNone or if no value was found in the conversion cache, XtCallConverter() calls the converter and, if it was not registered with cache type XtCacheNone, enters the result in the cache. XtCall- Converter() then returns what the converter returned. cache_ref_return specifies storage allocated by the caller in which an opaque value will be stored. If the type converter has been regis- tered with the XtCacheRefCount modifier and if the value returned in cache_ref_return is non-NULL, then the caller should store the cache_ref_return value in order to decrement the reference count when the converted value is no longer required. cache_ref_return should be specified as NULL if the caller is unwilling or unable to store the value. Structures typedef struct { unsigned int size; XPointer addr; } XrmValue, *XrmValuePtr; See Also XtCallbackReleaseCacheRef(1), XtConvertAndStore(1), XtSetTypeConverter(1), XtTypeConverter(2). Xt - Resource Management XtCallConverter()