1 /*************************************<+>*************************************
2  *****************************************************************************
3  **
4  **   File:        ResConvert.c
5  **
6  **   Project:     X Widgets
7  **
8  **   Description: Contains a function to register all of the resource
9  **                type converters used within Xw and the converter
10  **                routines.
11  **
12  *****************************************************************************
13  **
14  **   Copyright (c) 1988 by Hewlett-Packard Company
15  **   Copyright (c) 1988 by the Massachusetts Institute of Technology
16  **
17  **   Permission to use, copy, modify, and distribute this software
18  **   and its documentation for any purpose and without fee is hereby
19  **   granted, provided that the above copyright notice appear in all
20  **   copies and that both that copyright notice and this permission
21  **   notice appear in supporting documentation, and that the names of
22  **   Hewlett-Packard or  M.I.T.  not be used in advertising or publicity
23  **   pertaining to distribution of the software without specific, written
24  **   prior permission.
25  **
26  *****************************************************************************
27  *************************************<+>*************************************/
28 
29 
30 #include <stdio.h>
31 #include <string.h>
32 #include <ctype.h>
33 #include <X11/Xlib.h>
34 #include <X11/IntrinsicP.h>
35 #include <X11/Intrinsic.h>
36 #include <Xw/Xw.h>
37 #include <Xw/XwP.h>
38 #include <Xw/TextEdit.h>
39 #include <X11/StringDefs.h>
40 
41 
42 static void _XwCvtStringToTraversalType ();
43 static void _XwCvtStringToHighlightStyle ();
44 static void _XwCvtStringToTileType();
45 static void _XwCvtStringToLayoutPolicy();
46 static void _XwCvtStringToLabelLocation();
47 static Boolean StringsAreEqual();
48 static void _XwCvtStringToAlignment();
49 static void _XwCvtStringToWidgetType();
50 static void _XwCvtStringToSelectionMethod();
51 static void _XwCvtStringToSelectionStyle();
52 static void _XwCvtStringToSelectionBias();
53 static void _XwCvtStringToElementHighlight();
54 static void _XwCvtStringToDestroyMode();
55 static void _XwCvtStringToGravity ();
56 static void _XwCvtStringToTitlePositionType();
57 static void _XwCvtStringToLabelType();
58 static void _XwCvtStringToTitleType();
59 static void _XwCvtLongToLong();
60 static void  CvtStringToEditMode();
61 static void  CvtStringToSourceType();
62 static void  CvtStringToWrap();
63 static void  CvtStringToWrapBreak();
64 static void  CvtStringToWrapForm();
65 static void  CvtStringToScroll();
66 static void  CvtStringToGrow();
67 
68 typedef struct {
69   unsigned char *string;
70   int value;
71 } XwSetValuePair;
72 
73 #define NUMVALUESETS            7
74 #define XwEditTypeValueSetNum   0
75 #define XwSourceTypeValueSetNum 1
76 #define XwWrapValueSetNum       2
77 #define XwWrapFormValueSetNum   3
78 #define XwWrapBreakValueSetNum  4
79 #define XwScrollValueSetNum     5
80 #define XwGrowValueSetNum       6
81 
82 static XwSetValuePair XwEditTypeValueSet[] =
83     { {(unsigned char *)"edit",   (int) XwtextEdit},
84       {(unsigned char *)"append", (int) XwtextAppend},
85       {(unsigned char *)"read",   (int) XwtextRead},
86 	NULL };
87 static XwSetValuePair XwSourceTypeValueSet[] =
88     {{(unsigned char *)"stringsrc",   (int) XwstringSrc},
89      {(unsigned char *)"disksrc",     (int) XwdiskSrc},
90      {(unsigned char *)"userdefined", (int) XwprogDefinedSrc},
91      NULL };
92 static XwSetValuePair XwWrapValueSet[] =
93     {{(unsigned char *)"wrapoff",     (int) XwWrapOff},
94      {(unsigned char *)"softwrap",    (int) XwSoftWrap},
95      {(unsigned char *)"hardwrap",    (int) XwHardWrap},
96      NULL };
97 static XwSetValuePair XwWrapFormValueSet[] =
98     {{(unsigned char *)"sourceform",  (int) XwSourceForm},
99      {(unsigned char *)"displayform", (int) XwDisplayForm},
100      NULL };
101 static XwSetValuePair XwWrapBreakValueSet[] =
102     {{(unsigned char *)"wrapany",        (int) XwWrapAny},
103      {(unsigned char *)"wrapwhitespace", (int) XwWrapWhiteSpace},
104      NULL };
105 static XwSetValuePair XwScrollValueSet[] =
106     {{(unsigned char *)"autoscrolloff",        (int) XwAutoScrollOff},
107      {(unsigned char *)"autoscrollvertical",   (int) XwAutoScrollVertical},
108      {(unsigned char *)"autoscrollhorizontal", (int) XwAutoScrollHorizontal},
109      {(unsigned char *)"autoscrollboth",       (int) XwAutoScrollBoth},
110      NULL };
111 static XwSetValuePair XwGrowValueSet[] =
112     {{(unsigned char *)"growoff",        (int) XwGrowOff},
113      {(unsigned char *)"growhorizontal", (int) XwGrowHorizontal},
114      {(unsigned char *)"growvertical",   (int) XwGrowVertical},
115      {(unsigned char *)"growboth",       (int) XwGrowBoth},
116      NULL };
117 
118 static XwSetValuePair *valuepairsets[NUMVALUESETS];
119 
120 /************************************************************************
121  *
122  *  XwRegisterConverters
123  *	Register all of the Xw resource type converters.  Retain a
124  *	flag indicating whether the converters have already been
125  *	registered.
126  *
127  ************************************************************************/
128 
XwRegisterConverters()129 XwRegisterConverters ()
130 {
131    static Boolean registered = False;
132 
133    if (!registered)
134    {
135       XtAddConverter (XtRString, XtRTraversalType,
136                       _XwCvtStringToTraversalType, NULL, 0);
137       XtAddConverter (XtRString, XtRLayout,
138 		      _XwCvtStringToLayoutPolicy, NULL, 0);
139       XtAddConverter (XtRString, XtRHighlightStyle,
140 		      _XwCvtStringToHighlightStyle, NULL, 0);
141       XtAddConverter (XtRString, XtRTileType,
142                       _XwCvtStringToTileType, NULL, 0);
143       XtAddConverter (XtRString, XtRLabelLocation,
144                       _XwCvtStringToLabelLocation, NULL, 0);
145       XtAddConverter (XtRString, XtRAlignment,
146                       _XwCvtStringToAlignment, NULL, 0);
147       XtAddConverter (XtRString, XtRWidgetType,
148                       _XwCvtStringToWidgetType, NULL, 0);
149       XtAddConverter (XtRString, XtRGravity,
150 		      _XwCvtStringToGravity, NULL,0);
151       XtAddConverter (XtRString, XtRTitlePositionType,
152 		      _XwCvtStringToTitlePositionType, NULL, 0);
153       XtAddConverter (XtRString, XtRTitleType, _XwCvtStringToTitleType,
154                       NULL, 0);
155       XtAddConverter (XtRString, XtRLabelType, _XwCvtStringToLabelType,
156                       NULL, 0);
157       XtAddConverter (XtRLong, XtRLong, _XwCvtLongToLong, NULL, 0);
158 
159   valuepairsets[XwEditTypeValueSetNum] = XwEditTypeValueSet;
160   valuepairsets[XwSourceTypeValueSetNum] = XwSourceTypeValueSet;
161   valuepairsets[XwWrapValueSetNum] = XwWrapValueSet;
162   valuepairsets[XwWrapFormValueSetNum] = XwWrapFormValueSet;
163   valuepairsets[XwWrapBreakValueSetNum] = XwWrapBreakValueSet;
164   valuepairsets[XwScrollValueSetNum] = XwScrollValueSet;
165   valuepairsets[XwGrowValueSetNum] = XwGrowValueSet;
166 
167   XtAddConverter(XtRString, XtREditMode, CvtStringToEditMode, NULL, 0);
168   XtAddConverter(XtRString, XtRSourceType, CvtStringToSourceType, NULL, 0);
169   XtAddConverter(XtRString, XtRWrap, CvtStringToWrap, NULL, 0);
170   XtAddConverter(XtRString, XtRWrapBreak, CvtStringToWrapBreak, NULL, 0);
171   XtAddConverter(XtRString, XtRWrapForm, CvtStringToWrapForm, NULL, 0);
172   XtAddConverter(XtRString, XtRScroll, CvtStringToScroll, NULL, 0);
173   XtAddConverter(XtRString, XtRGrow, CvtStringToGrow, NULL, 0);
174 
175   }
176    registered = True;
177 }
178 
179 
180 
181 
182 /************************************************************************
183  *
184  *  Resource Conversion Functions
185  *     The following set of functions are used by the resource
186  *     manager to convert the resource types defined for this class.
187  *
188  ************************************************************************/
189 
190 
191 /*  Convert a string to a traversal type.  */
192 
_XwCvtStringToTraversalType(args,numArgs,fromVal,toVal)193 static void _XwCvtStringToTraversalType (args, numArgs, fromVal, toVal)
194 XrmValue * args;
195 Cardinal   numArgs;
196 XrmValue * fromVal;
197 XrmValue * toVal;
198 
199 {
200    char * in_str = (char *) (fromVal->addr);
201    static int i;
202 
203    i = XwHIGHLIGHT_OFF;
204 
205    if (((*in_str) == 'H') || ((*in_str) == 'h'))
206    {
207       if (StringsAreEqual (in_str, "highlight_traversal"))
208          i = XwHIGHLIGHT_TRAVERSAL;
209       else if (StringsAreEqual (in_str, "highlight_enter"))
210          i = XwHIGHLIGHT_ENTER;
211    }
212 
213    (*toVal).size = sizeof (int);
214    (*toVal).addr = (caddr_t) &i;
215 }
216 
217 /******************************************************/
218 /*  Convert a string to a ButtonClass Label Location. */
219 /******************************************************/
_XwCvtStringToLabelLocation(args,numArgs,fromVal,toVal)220 static void _XwCvtStringToLabelLocation (args, numArgs, fromVal, toVal)
221 XrmValue * args;
222 Cardinal   numArgs;
223 XrmValue * fromVal;
224 XrmValue * toVal;
225 
226 {
227    char * in_str = (char *) (fromVal->addr);
228    static int i;
229 
230     if (((*in_str)== 'L') || ((*in_str)=='l'))
231         {
232            if (StringsAreEqual(in_str,"left")) i = XwLEFT;
233 	}
234    else
235       i = XwRIGHT;
236 
237    (*toVal).size = sizeof (int);
238    (*toVal).addr = (caddr_t) &i;
239 }
240 
241 /********************************************************/
242 /*  Convert a string to ManagerClass layout mode type.  */
243 /********************************************************/
_XwCvtStringToLayoutPolicy(args,numArgs,fromVal,toVal)244 static void _XwCvtStringToLayoutPolicy (args, numArgs, fromVal, toVal)
245 XrmValue * args;
246 Cardinal   numArgs;
247 XrmValue * fromVal;
248 XrmValue * toVal;
249 
250 {
251    char * in_str = (char *) (fromVal->addr);
252    static int i;
253 
254    i = XwMINIMIZE;
255 
256    switch(*in_str)
257    {
258       case 'I':
259       case 'i':
260            if (StringsAreEqual(in_str,"ignore")) i = XwIGNORE;
261 	   break;
262 
263       case 'M':
264       case 'm':
265            if (StringsAreEqual(in_str,"maximize")) i = XwMAXIMIZE;
266 
267    }
268 
269    (*toVal).size = sizeof (int);
270    (*toVal).addr = (caddr_t) &i;
271 }
272 
273 
274 
StringsAreEqual(in_str,test_str)275 static Boolean StringsAreEqual(in_str, test_str)
276 char *in_str, *test_str;
277 {
278    int i, j;
279 
280    for (;;)
281    {
282       i = *in_str;
283       j = *test_str;
284 
285       if (isupper(i)) i = tolower(i);
286       if (isupper(j)) j = tolower(j);
287       if (i != j) return (False);
288       if (i == 0) return (True);
289 
290       in_str++;
291       test_str++;
292    }
293 }
294 
295 
296 /*  Convert a string to a highlight type.  */
297 
_XwCvtStringToHighlightStyle(args,numArgs,fromVal,toVal)298 static void _XwCvtStringToHighlightStyle (args, numArgs, fromVal, toVal)
299 XrmValue * args;
300 Cardinal   numArgs;
301 XrmValue * fromVal;
302 XrmValue * toVal;
303 
304 {
305    char * in_str = (char *) (fromVal->addr);
306    static int i;
307 
308    i = XwWIDGET_DEFINED;
309 
310    if (((*in_str) == 'P') || ((*in_str) == 'p'))
311       if (StringsAreEqual (in_str, "pattern_border"))
312          i = XwPATTERN_BORDER;
313 
314    (*toVal).size = sizeof (int);
315    (*toVal).addr = (caddr_t) &i;
316 }
317 
318 /*  Convert a string to an tile type.  */
319 
_XwCvtStringToTileType(args,numArgs,fromVal,toVal)320 static void _XwCvtStringToTileType (args, numArgs, fromVal, toVal)
321 XrmValue * args;
322 Cardinal   numArgs;
323 XrmValue * fromVal;
324 XrmValue * toVal;
325 
326 {
327    char * in_str = (char *) (fromVal->addr);
328    static int i;
329 
330    i = XwFOREGROUND;
331 
332    switch (*in_str)
333    {
334       case 'F':
335       case 'f':
336          if (StringsAreEqual (in_str, "foreground")) i = XwFOREGROUND;
337       break;
338 
339       case 'B':
340       case 'b':
341          if (StringsAreEqual (in_str, "background")) i = XwBACKGROUND;
342       break;
343    }
344 
345 
346    (*toVal).size = sizeof (int);
347    (*toVal).addr = (caddr_t) &i;
348 }
349 
350 
351 /*************************************<->*************************************
352  *
353  *   static  void _XwCvtStringToAlignment()
354  *		Display	*display;
355  *		XrmValue	*p_fromVal;
356  *		XrmValue	*toVal;
357  *
358  *	Description:
359  *	-----------
360  *		This is a type conversion procedure for the resource manager.
361  *		converts strings to type XwAlignment.  The conversion is case
362  *		insensitive.
363  *
364  *	Inputs:
365  *	------
366  *		See "Xlib - C Language X Interface Protocol Version 11"
367  *
368  *	Outputs:
369  *	-------
370  *		See "Xlib - C Language X Interface Protocol Version 11"
371  *
372  *	Procedures Called
373  *	-----------------
374  *		StringsAreEqual
375  *
376  *************************************<->***********************************/
_XwCvtStringToAlignment(args,num,p_fromVal,toVal)377 static void _XwCvtStringToAlignment(args,num,p_fromVal,toVal)
378 	XrmValue	*args;
379 	Cardinal	num;
380 	XrmValue	*p_fromVal;
381 	XrmValue	*toVal;
382 {
383 	static XwAlignment	Align = XwALIGN_LEFT;
384 	char	*from_str;
385 	Boolean	match = FALSE;
386 
387 	from_str = (char *) (p_fromVal->addr);
388 	toVal->addr = (caddr_t) &Align;
389 	toVal->size = sizeof(XwAlignment);
390 
391 	switch(*from_str)
392 	{
393 		case 'L':
394 		case 'l':
395 			if (match = StringsAreEqual(from_str,"left"))
396 				Align = XwALIGN_LEFT;
397 		break;
398 		case 'C':
399 		case 'c':
400 			if (match = StringsAreEqual(from_str,"center"))
401 				Align = XwALIGN_CENTER;
402 		break;
403 		case 'R':
404 		case 'r':
405 			if (match = StringsAreEqual(from_str,"right"))
406 				Align = XwALIGN_RIGHT;
407 		break;
408 		case 'N':
409 		case 'n':
410 			if (match = StringsAreEqual(from_str,"none"))
411 				Align = XwALIGN_NONE;
412 		break;
413 		default:
414 			match = FALSE;
415 		break;
416 	}
417 
418 	if(!match)
419 	{
420 		toVal->addr = NULL;
421 		toVal->size = 0;
422 	}
423 }
424 
425 
426 /*************************************<->*************************************
427  *
428  *   static  void _XwCvtStringToWidgetType()
429  *		Display	*display;
430  *		XrmValue	*p_fromVal;
431  *		XrmValue	*toVal;
432  *
433  *	Description:
434  *	-----------
435  *		This is a type conversion procedure for the resource manager.
436  *		converts strings to type XwWidgetType.  The conversion is case
437  *		insensitive.
438  *
439  *	Inputs:
440  *	------
441  *		See "Xlib - C Language X Interface Protocol Version 11"
442  *
443  *	Outputs:
444  *	-------
445  *		See "Xlib - C Language X Interface Protocol Version 11"
446  *
447  *	Procedures Called
448  *	-----------------
449  *		StringsAreEqual
450  *
451  *************************************<->***********************************/
_XwCvtStringToWidgetType(args,num,p_fromVal,toVal)452 static void _XwCvtStringToWidgetType(args,num,p_fromVal,toVal)
453 	XrmValue	*args;
454 	Cardinal	num;
455 	XrmValue	*p_fromVal;
456 	XrmValue	*toVal;
457 {
458 	static XwWidgetType	WType = XwUNKNOWN;
459 	char	*from_str;
460 	Boolean	match = FALSE;
461 
462 	from_str = (char *) (p_fromVal->addr);
463 	toVal->addr = (caddr_t) &WType;
464 	toVal->size = sizeof(XwWidgetType);
465 
466 	switch(*from_str)
467 	{
468 		case 'T':
469 		case 't':
470 			if (match = StringsAreEqual(from_str,"title"))
471 				WType = XwTITLE;
472 		break;
473 		case 'P':
474 		case 'p':
475 			if (match = StringsAreEqual(from_str,"pulldown"))
476 				WType = XwPULLDOWN;
477 		break;
478 		case 'W':
479 		case 'w':
480 			if (match = StringsAreEqual(from_str,"work space"))
481 				WType = XwWORK_SPACE;
482 		break;
483 		case 'U':
484 		case 'u':
485 			if (match = StringsAreEqual(from_str,"unknown"))
486 				WType = XwUNKNOWN;
487 		break;
488 		default:
489 			match = FALSE;
490 		break;
491 	}
492 
493 	if(!match)
494 	{
495 		toVal->addr = NULL;
496 		toVal->size = 0;
497 	}
498 }
499 
500 
501 
502 
503 /************************************************************************
504  *
505  *  _XwCvtStringToGravity
506  *      Convert a resource string to a gravity value.
507  *
508  ************************************************************************/
509 
_XwCvtStringToGravity(args,numArgs,fromVal,toVal)510 static void _XwCvtStringToGravity (args, numArgs, fromVal, toVal)
511 XrmValue * args;
512 Cardinal   numArgs;
513 XrmValue * fromVal;
514 XrmValue * toVal;
515 
516 {
517 	static int gravity = CenterGravity;
518 	char	*from_str;
519 	Boolean	match = FALSE;
520 
521 	from_str = (char *) (fromVal->addr);
522 	toVal->addr = (caddr_t) &gravity;
523 	toVal->size = sizeof(int);
524 
525 	switch (*from_str)
526 	{
527 		case 'N':
528 		case 'n':
529 			if (match = StringsAreEqual(from_str,"NorthGravity"))
530 				gravity = NorthGravity;
531 			else if (match = StringsAreEqual(from_str,"NorthWestGravity"))
532 				gravity = NorthWestGravity;
533 			else if (match = StringsAreEqual(from_str,"NorthEastGravity"))
534 				gravity = NorthEastGravity;
535 		break;
536 		case 'S':
537 		case 's':
538 			if (match = StringsAreEqual(from_str,"SouthGravity"))
539 				gravity = SouthGravity;
540 			else if (match = StringsAreEqual(from_str,"SouthWestGravity"))
541 				gravity = SouthWestGravity;
542 			else if (match = StringsAreEqual(from_str,"SouthEastGravity"))
543 				gravity = SouthEastGravity;
544 		break;
545 		case 'W':
546 		case 'w':
547 			if (match = StringsAreEqual(from_str,"WestGravity"))
548 				gravity = WestGravity;
549 		break;
550 		case 'E':
551 		case 'e':
552 			if (match = StringsAreEqual(from_str,"EastGravity"))
553 				gravity = EastGravity;
554 		break;
555 		case 'C':
556 		case 'c':
557 			if (match = StringsAreEqual(from_str,"CenterGravity"))
558 				gravity = CenterGravity;
559 		break;
560 		default:
561 			match = FALSE;
562 		break;
563 	}
564 
565 	if(!match)
566 	{
567 		toVal->addr = NULL;
568 		toVal->size = 0;
569 	}
570 }
571 
_XwCvtStringToTitleType(args,num_args,fromVal,toVal)572 static void _XwCvtStringToTitleType (args, num_args, fromVal, toVal)
573 
574    XrmValuePtr args;
575    Cardinal  * num_args;
576    XrmValuePtr fromVal;
577    XrmValuePtr toVal;
578 
579 {
580    static int i;
581    String source = (String) fromVal->addr;
582 
583    if (source)
584    {
585       if (strcmp ("string", source) == 0)
586          i = XwSTRING;
587       else if (strcmp ("image", source) == 0)
588          i = XwIMAGE;
589       else if (strcmp ("rect", source) == 0)
590 	 i = XwRECT;
591       else
592       {
593          i = XwSTRING;
594          XtWarning (
595             "MenuPane: Unknown title type specified; using string title");
596       }
597    }
598    else
599    {
600       i = XwSTRING;
601       XtWarning ("MenuPane: Unknown title type specified; using string title");
602    }
603 
604    (*toVal).size = sizeof(int);
605    (*toVal).addr = (caddr_t) &i;
606 }
607 
608 
_XwCvtStringToLabelType(args,num_args,fromVal,toVal)609 static void _XwCvtStringToLabelType (args, num_args, fromVal, toVal)
610 
611    XrmValuePtr args;
612    Cardinal  * num_args;
613    XrmValuePtr fromVal;
614    XrmValuePtr toVal;
615 
616 {
617    static int i;
618 
619    if (strcmp ("string", (char *) fromVal->addr) == 0)
620       i = XwSTRING;
621    else if (strcmp ("image", (char *) fromVal->addr) == 0)
622       i = XwIMAGE;
623    else
624    {
625       i = XwSTRING;
626       XtWarning
627 	 ("MenuButton: Unknown label type specified; using string label");
628    }
629 
630    (*toVal).size = sizeof(int);
631    (*toVal).addr = (caddr_t) &i;
632 }
633 
_XwCvtStringToTitlePositionType(args,num_args,fromVal,toVal)634 static void _XwCvtStringToTitlePositionType (args, num_args, fromVal, toVal)
635 
636    XrmValuePtr args;
637    Cardinal * num_args;
638    XrmValuePtr fromVal;
639    XrmValuePtr toVal;
640 
641 {
642    static int i;
643    String source = (char *) fromVal->addr;
644 
645    if (source)
646    {
647       /* Force the comparison to be case insensitive */
648       for (i = 0; i < XwStrlen(source); i++)
649       {
650          if (isupper (source[i]))
651             source[i] = tolower(source[i]);
652       }
653 
654       if (strcmp ("bottom", source) == 0)
655          i = XwBOTTOM;
656       else if (strcmp ("top", source) == 0)
657          i = XwTOP;
658       else if (strcmp ("both", source) == 0)
659          i = XwTOP | XwBOTTOM;
660       else
661       {
662          i = XwTOP;
663          XtWarning ("Cascade: Invalid title position; position set to top");
664       }
665    }
666    else
667    {
668       i = XwTOP;
669       XtWarning ("Cascade: Invalid title position; position set to top");
670    }
671 
672    (*toVal).size = sizeof(int);
673    (*toVal).addr = (caddr_t) &i;
674 }
675 
676 /*---------------------------------------------------------------------------*/
677 /* Type long to type long conversion (mostly to satisfy picky 64-bit OSF)    */
678 /*---------------------------------------------------------------------------*/
679 
_XwCvtLongToLong(args,num_args,fromVal,toVal)680 static void _XwCvtLongToLong (args, num_args, fromVal, toVal)
681 
682    XrmValuePtr args;
683    Cardinal * num_args;
684    XrmValuePtr fromVal;
685    XrmValuePtr toVal;
686 
687 {
688    long result = (long) fromVal->addr;
689 
690    if (!result) {
691       XtWarning ("SourceStr: Invalid max_size; max_size set to -1");
692       result = -1;
693    }
694    (*toVal).size = sizeof(long);
695    (*toVal).addr = (caddr_t) &result;
696 }
697 
698 /*--------------------------------------------------------------------------+*/
SetConverter(fromVal,toVal,setNum)699 static void SetConverter(fromVal, toVal, setNum)
700 /*--------------------------------------------------------------------------+*/
701      XrmValuePtr fromVal, toVal;
702      int setNum;
703 {
704   int j;
705   XwSetValuePair *ptr;
706   static int value;
707   unsigned char *fromstr;
708 
709   fromstr = (unsigned char *)fromVal->addr;
710   ptr = valuepairsets[setNum];
711   for(j=0; *ptr[j].string; j++)
712     if (!strcmp(ptr[j].string, fromstr)) {
713       value = ptr[j].value;
714       toVal->size = sizeof(int);
715       toVal->addr = (caddr_t)&value;
716       return;
717     };
718   toVal->size = 0;
719   toVal->addr = NULL;
720 }
721 
722 /*--------------------------------------------------------------------------+*/
CvtStringToEditMode(args,num_args,fromVal,toVal)723 static void CvtStringToEditMode(args, num_args, fromVal, toVal)
724 /*--------------------------------------------------------------------------+*/
725     XrmValuePtr *args;  /* unused */
726     Cardinal    *num_args; /* unused */
727     XrmValuePtr	fromVal;
728     XrmValuePtr	toVal;
729 {
730   SetConverter(fromVal, toVal, XwEditTypeValueSetNum);
731 }
732 
733 /*--------------------------------------------------------------------------+*/
CvtStringToSourceType(args,num_args,fromVal,toVal)734 static void CvtStringToSourceType(args, num_args, fromVal, toVal)
735 /*--------------------------------------------------------------------------+*/
736     XrmValuePtr *args;  /* unused */
737     Cardinal    *num_args; /* unused */
738     XrmValuePtr	fromVal;
739     XrmValuePtr	toVal;
740 {
741   SetConverter(fromVal, toVal, XwSourceTypeValueSetNum);
742 }
743 
744 /*--------------------------------------------------------------------------+*/
CvtStringToWrap(args,num_args,fromVal,toVal)745 static void CvtStringToWrap(args, num_args, fromVal, toVal)
746 /*--------------------------------------------------------------------------+*/
747     XrmValuePtr *args;  /* unused */
748     Cardinal    *num_args; /* unused */
749     XrmValuePtr	fromVal;
750     XrmValuePtr	toVal;
751 {
752   SetConverter(fromVal, toVal, XwWrapValueSetNum);
753 }
754 
755 /*--------------------------------------------------------------------------+*/
CvtStringToWrapForm(args,num_args,fromVal,toVal)756 static void CvtStringToWrapForm(args, num_args, fromVal, toVal)
757 /*--------------------------------------------------------------------------+*/
758     XrmValuePtr *args;  /* unused */
759     Cardinal    *num_args; /* unused */
760     XrmValuePtr	fromVal;
761     XrmValuePtr	toVal;
762 {
763   SetConverter(fromVal, toVal, XwWrapFormValueSetNum);
764 }
765 
766 /*--------------------------------------------------------------------------+*/
CvtStringToWrapBreak(args,num_args,fromVal,toVal)767 static void CvtStringToWrapBreak(args, num_args, fromVal, toVal)
768 /*--------------------------------------------------------------------------+*/
769     XrmValuePtr *args;  /* unused */
770     Cardinal    *num_args; /* unused */
771     XrmValuePtr	fromVal;
772     XrmValuePtr	toVal;
773 {
774   SetConverter(fromVal, toVal, XwWrapBreakValueSetNum);
775 }
776 
777 /*--------------------------------------------------------------------------+*/
CvtStringToScroll(args,num_args,fromVal,toVal)778 static void CvtStringToScroll(args, num_args, fromVal, toVal)
779 /*--------------------------------------------------------------------------+*/
780     XrmValuePtr *args;  /* unused */
781     Cardinal    *num_args; /* unused */
782     XrmValuePtr	fromVal;
783     XrmValuePtr	toVal;
784 {
785   SetConverter(fromVal, toVal, XwScrollValueSetNum);
786 }
787 
788 /*--------------------------------------------------------------------------+*/
CvtStringToGrow(args,num_args,fromVal,toVal)789 static void CvtStringToGrow(args, num_args, fromVal, toVal)
790 /*--------------------------------------------------------------------------+*/
791     XrmValuePtr *args;  /* unused */
792     Cardinal    *num_args; /* unused */
793     XrmValuePtr	fromVal;
794     XrmValuePtr	toVal;
795 {
796   SetConverter(fromVal, toVal, XwGrowValueSetNum);
797 }
798