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

  1. /* $XConsortium: lcPubWrap.c,v 1.3 94/01/20 18:07:08 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. /* $XFree86: xc/lib/X11/lcPubWrap.c,v 1.1.1.1.12.1 1998/01/25 06:11:08 dawes Exp $ */
  27.  
  28. #include "Xlib_private.h"
  29. #include "XlcPubI.h"
  30.  
  31. #if NeedVarargsPrototypes
  32. char *
  33. _XGetLCValues(XLCd lcd, ...)
  34. #else
  35. char *
  36. _XGetLCValues(lcd, va_alist)
  37.     XLCd lcd;
  38.     va_dcl
  39. #endif
  40. {
  41.     DBUG_ENTER("_XGetLCValues")
  42.     va_list var;
  43.     XlcArgList args;
  44.     char *ret;
  45.     int num_args;
  46.     XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
  47.  
  48.     Va_start(var, lcd);
  49.     _XlcCountVaList(var, &num_args);
  50.     va_end(var);
  51.  
  52.     Va_start(var, lcd);
  53.     _XlcVaToArgList(var, num_args, &args);
  54.     va_end(var);
  55.  
  56.     if (args == (XlcArgList) NULL)
  57.     DBUG_RETURN((char *) NULL);
  58.     
  59.     ret = (*methods->get_values)(lcd, args, num_args);
  60.  
  61.     Xfree(args);
  62.  
  63.     DBUG_RETURN(ret);
  64. }
  65.  
  66. void
  67. _XlcDestroyLC(lcd)
  68.     XLCd lcd;
  69. {
  70.     DBUG_ENTER("_XlcDestroyLC")
  71.     XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
  72.  
  73.     (*methods->pub.destroy)(lcd);
  74.     DBUG_VOID_RETURN;
  75. }
  76.  
  77. XLCd
  78. _XlcCreateLC(name, methods)
  79.     _Xconst char *name;
  80.     XLCdMethods methods;
  81. {
  82.     DBUG_ENTER("_XlcCreateLC")
  83.     XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
  84.     XLCd lcd;
  85.  
  86.     lcd = (*pub_methods->pub.create)(name, methods);
  87.     if (lcd == NULL) {
  88. #if defined(DEBUG) && defined(VERBOSE)
  89.     fprintf(stderr, "_XlcCreateLC: pub.create method failed!\n");
  90. #endif
  91.     DBUG_RETURN((XLCd) NULL);
  92.     }
  93.  
  94.     if (lcd->core->name == NULL) {
  95.     lcd->core->name = (char*) Xmalloc(strlen(name) + 1);
  96.     if (lcd->core->name == NULL) {
  97. #if defined(DEBUG) && defined(VERBOSE)
  98.         fprintf(stderr, "_XlcCreateLC: malloc failed!\n");
  99. #endif
  100.         goto err;
  101. }
  102.     strcpy(lcd->core->name, name);
  103.     }
  104.     
  105.     if (lcd->methods == NULL)
  106.     lcd->methods = methods;
  107.  
  108.     if ((*pub_methods->pub.initialize)(lcd) == False) {
  109. #if defined(DEBUG) && defined(VERBOSE)
  110.     fprintf(stderr, "_XlcCreateLC: pub.initialize method failed!\n");
  111. #endif
  112.     goto err;
  113. }
  114.     
  115.     DBUG_RETURN(lcd);
  116.  
  117. err:
  118.     _XlcDestroyLC(lcd);
  119.  
  120.     DBUG_RETURN((XLCd) NULL);
  121. }
  122.