[comp.windows.x] Xt resource types

net@TUB.BITNET (Oliver Laumann) (12/06/88)

I'm currently writing a Scheme interface for Xt which allows Scheme
programmers to make use of existing widget sets.  This involves
the conversion from Scheme types to resource types and vice versa.
In doing this several questions came up (I'm new to Xt, so maybe
the answers to these questions are obvious to some of you):

   1)  I need to switch over a resource type.  Since resource types
       are represented as strings, the code looks like this:

          if (strcmp (t, XtRCursor) == 0) $
              ...
           else if (strcmp (t, XtRDisplay) == 0) $
              ...
           else if ...   [etc.]

       Is there a more efficient and/or elegant way to program
       this using quarks?  If so, how do I obtain the quark for
       a given resource type?


   2)  According to the `X Toolkit Intrinsics' manual the C-type
       for the resource type XtRColor is XColor.  This cannot be
       right since XColor is a structure; it wouldn't fit into an
       XtArgVal.  Should this read `XColor *'?


   3)  XtSetValues() does not signal an error if the ArgList
       contains an element with an undefined name field.
       Shouldn't XtSetValues() compare the argument names with
       the resource names in the widget class's resource list?

       3a)  Is the following statement true?

            It is considered an error to set an argument with a
            name that is different from all resource_name fields
            in the resource list obtained by a call to
            XtGetResourceList() with the widget's class as the
            first argument?


   4)  Resource converters are called automatically when a resource
       is fetched from the database or when a resource's default
       value must be converted.

       However, when application programmers are setting resources by
       means of XtSetValues() they are required to provide values of the
       `correct' type, e.g. when a resource of the type `XtRFont' is to
       be set, the corresponding XtArgVal must contain a `Font', not a
       string (the name of a font).

       Is it right that in this case application programmers can
       call the resource converter explicitly?  Is there a way to
       find out if there exists a converter for a given source/destination
       type other than calling XtConvert() and inspecting the result?

       4a)  Is the following statement true?

            A resource type T1 can be converted to the type T2
            by a call to XtConvert(w,...) iff there exists an
            entry in the resource list of XtClass(w) with a
            resource_type of T2 and a default_type of T1.

--
Regards,
    Oliver Laumann, Technical University of Berlin, Germany.
    ...!pyramid!tub!net   or   net@TUB.BITNET