home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / evbl0627.zip / everblue_20010627.zip / x11 / Xoc_Wrap.c < prev    next >
C/C++ Source or Header  |  1999-11-02  |  4KB  |  169 lines

  1. /* $XConsortium: OCWrap.c,v 1.1 94/01/20 17:54:55 rws Exp $ */
  2. /*
  3.  * Copyright 1992, 1993 by TOSHIBA Corp.
  4.  *
  5.  * Permission to use, copy, modify, and distribute this software and its
  6.  * documentation for any purpose and without fee is hereby granted, provided
  7.  * that the above copyright notice appear in all copies and that both that
  8.  * copyright notice and this permission notice appear in supporting
  9.  * documentation, and that the name of TOSHIBA not be used in advertising
  10.  * or publicity pertaining to distribution of the software without specific,
  11.  * written prior permission. TOSHIBA make no representations about the
  12.  * suitability of this software for any purpose.  It is provided "as is"
  13.  * without express or implied warranty.
  14.  *
  15.  * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  16.  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  17.  * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  18.  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  19.  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  20.  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  21.  * SOFTWARE.
  22.  *
  23.  * Author: Katsuhisa Yano    TOSHIBA Corp.
  24.  *                   mopi@osa.ilab.toshiba.co.jp
  25.  */
  26.  
  27. #include "Xlib_private.h"
  28. #include "Xlcint.h"
  29.  
  30. #if NeedVarargsPrototypes
  31. XOC
  32. XCreateOC(XOM om, ...)
  33. #else
  34. XOC
  35. XCreateOC(om, va_alist)
  36.     XOM om;
  37.     va_dcl
  38. #endif
  39. {
  40.     DBUG_ENTER("XCreateOC")
  41.     va_list var;
  42.     XlcArgList args;
  43.     XOC oc;
  44.     int num_args;
  45.  
  46.     Va_start(var, om);
  47.     _XlcCountVaList(var, &num_args);
  48.     va_end(var);
  49.  
  50.     Va_start(var, om);
  51.     _XlcVaToArgList(var, num_args, &args);
  52.     va_end(var);
  53.  
  54.     if (args == (XlcArgList) NULL)
  55.     DBUG_RETURN((XOC) NULL);
  56.  
  57.     oc = (*om->methods->create_oc)(om, args, num_args);
  58.  
  59.     Xfree(args);
  60.  
  61.     if (oc) {
  62.     oc->core.next = om->core.oc_list;
  63.     om->core.oc_list = oc;
  64.     }
  65.  
  66.     DBUG_RETURN(oc);
  67. }
  68.  
  69. void
  70. XDestroyOC(oc)
  71.     XOC oc;
  72. {
  73.     DBUG_ENTER("XDestroyOC")
  74.     XOC prev, oc_list;
  75.  
  76.     prev = oc_list = oc->core.om->core.oc_list;
  77.     if (oc_list == oc)
  78.     oc->core.om->core.oc_list = oc_list->core.next;
  79.     else {
  80.     while (oc_list = oc_list->core.next) {
  81.         if (oc_list == oc) {
  82.         prev->core.next = oc_list->core.next;
  83.         break;
  84.         }
  85.         prev = oc_list;
  86.     }
  87.     }
  88.  
  89.     (*oc->methods->destroy)(oc);
  90.     DBUG_VOID_RETURN;
  91. }
  92.  
  93. XOM
  94. XOMOfOC(oc)
  95.     XOC oc;
  96. {
  97.     DBUG_ENTER("XOMOfOC")
  98.     XOM result = oc->core.om;
  99.     DBUG_RETURN(result);
  100. }
  101.  
  102. #if NeedVarargsPrototypes
  103. char *
  104. XSetOCValues(XOC oc, ...)
  105. #else
  106. char *
  107. XSetOCValues(oc, va_alist)
  108.     XOC oc;
  109.     va_dcl
  110. #endif
  111. {
  112.     DBUG_ENTER("XSetOCValues")
  113.     va_list var;
  114.     XlcArgList args;
  115.     char *ret;
  116.     int num_args;
  117.  
  118.     Va_start(var, oc);
  119.     _XlcCountVaList(var, &num_args);
  120.     va_end(var);
  121.  
  122.     Va_start(var, oc);
  123.     _XlcVaToArgList(var, num_args, &args);
  124.     va_end(var);
  125.  
  126.     if (args == (XlcArgList) NULL)
  127.     DBUG_RETURN((char *) NULL);
  128.  
  129.     ret = (*oc->methods->set_values)(oc, args, num_args);
  130.  
  131.     Xfree(args);
  132.  
  133.     DBUG_RETURN(ret);
  134. }
  135.  
  136. #if NeedVarargsPrototypes
  137. char *
  138. XGetOCValues(XOC oc, ...)
  139. #else
  140. char *
  141. XGetOCValues(oc, va_alist)
  142.     XOC oc;
  143.     va_dcl
  144. #endif
  145. {
  146.     DBUG_ENTER("XGetOCValues")
  147.     va_list var;
  148.     XlcArgList args;
  149.     char *ret;
  150.     int num_args;
  151.  
  152.     Va_start(var, oc);
  153.     _XlcCountVaList(var, &num_args);
  154.     va_end(var);
  155.  
  156.     Va_start(var, oc);
  157.     _XlcVaToArgList(var, num_args, &args);
  158.     va_end(var);
  159.  
  160.     if (args == (XlcArgList) NULL)
  161.     DBUG_RETURN((char *) NULL);
  162.  
  163.     ret = (*oc->methods->get_values)(oc, args, num_args);
  164.  
  165.     Xfree(args);
  166.  
  167.     DBUG_RETURN(ret);
  168. }
  169.