2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these libraries and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
25 * $XConsortium: util_convert.c /main/4 1995/11/06 18:53:08 rswiston $
27 * @(#)util_convert.c 1.25 23 Oct 1994 cde_app_builder/src/
29 * RESTRICTED CONFIDENTIAL INFORMATION:
31 * The information in this document is subject to special
32 * restrictions in a confidential disclosure agreement between
33 * HP, IBM, Sun, USL, SCO and Univel. Do not distribute this
34 * document outside HP, IBM, Sun, USL, SCO, or Univel without
35 * Sun's specific written approval. This document and all copies
36 * and derivative works thereof must be returned or destroyed at
39 * Copyright 1993 Sun Microsystems, Inc. All rights reserved.
45 * util_convert.c - general utilities for converting to/from AB types
51 #include <sys/param.h>
52 #include <ab_private/util.h>
53 #include <ab/util_types.h>
54 #include <ab_private/istr.h>
56 #define ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0]))
58 /*************************************************************************
60 ** Type/String Conversion **
62 **************************************************************************/
65 convert_int_to_string(int value,
66 ISTRING *table, int num_values, ISTRING default_value)
68 if ((value < 0) || (value >= num_values))
70 return istr_string(default_value);
72 return istr_string(table[value]);
76 convert_string_to_int(STRING s_value,
77 ISTRING *table, int num_values, int default_value)
80 int int_value= default_value;
81 ISTRING is_value= istr_create(s_value);
84 istr_destroy(is_value);
87 for (i= 0; i < num_values; ++i)
89 if (istr_equal(table[i], is_value))
95 istr_destroy(is_value);
100 convert_fill_table(ISTRING *table, int num_values, ISTRING value)
103 for (i= 0; i < num_values; ++i)
111 /*************************************************************************
113 ** AB_BUILTIN_ACTION **
115 **************************************************************************/
117 static BOOL builtin_action_table_inited= FALSE;
118 static ISTRING builtin_action_table[AB_BUILTIN_ACTION_NUM_VALUES]= {NULL};
120 #define check_builtin_action_table_init() \
121 (builtin_action_table_inited? 0:builtin_action_table_init())
124 builtin_action_table_init()
126 #define bat builtin_action_table
127 builtin_action_table_inited= TRUE;
128 convert_fill_table(builtin_action_table,
129 AB_BUILTIN_ACTION_NUM_VALUES,
130 istr_const("?when?"));
132 bat[AB_STDACT_UNDEF]= istr_const("Undef");
133 bat[AB_STDACT_DISABLE]= istr_const("Disable");
134 bat[AB_STDACT_ENABLE]= istr_const("Enable");
135 bat[AB_STDACT_HIDE]= istr_const("Hide");
136 bat[AB_STDACT_SET_LABEL]= istr_const("SetLabel");
137 bat[AB_STDACT_SET_TEXT]= istr_const("SetText");
138 bat[AB_STDACT_SET_VALUE]= istr_const("SetValue");
139 bat[AB_STDACT_SHOW]= istr_const("Show");
147 util_string_to_builtin_action(STRING action)
149 return (AB_BUILTIN_ACTION)convert_string_to_int(action,
150 builtin_action_table, AB_BUILTIN_ACTION_NUM_VALUES,
156 util_builtin_action_to_string(AB_BUILTIN_ACTION action)
158 check_builtin_action_table_init();
159 return convert_int_to_string(action,
160 builtin_action_table, AB_BUILTIN_ACTION_NUM_VALUES,
161 istr_const("?action?"));
164 /*************************************************************************
168 **************************************************************************/
170 * REMIND: move type conversion stuff to guide
172 static BOOL obj_type_table_inited= FALSE;
173 static ISTRING obj_type_table[AB_OBJECT_TYPE_NUM_VALUES+1]= {NULL};
175 #define check_obj_type_table_init() \
176 (obj_type_table_inited? 0:obj_type_table_init())
179 obj_type_table_init()
181 #define ott obj_type_table
182 obj_type_table_inited= TRUE;
183 convert_fill_table(obj_type_table,
184 AB_OBJECT_TYPE_NUM_VALUES, istr_const("?type?"));
186 ott[AB_TYPE_ACTION]= istr_const(":action");
187 ott[AB_TYPE_ACTION_LIST]= istr_const(":action-list");
188 ott[AB_TYPE_BASE_WINDOW]= istr_const(":base-window");
189 ott[AB_TYPE_BUTTON]= istr_const(":button");
190 ott[AB_TYPE_CHOICE]= istr_const(":choice");
191 ott[AB_TYPE_COMBO_BOX]= istr_const(":combobox");
192 ott[AB_TYPE_FILE_CHOOSER]= istr_const(":file-chooser");
193 ott[AB_TYPE_MESSAGE]= istr_const(":message");
194 ott[AB_TYPE_CONTAINER]= istr_const(":container");
195 ott[AB_TYPE_DIALOG]= istr_const(":dialog");
196 ott[AB_TYPE_DRAWING_AREA]= istr_const(":drawing-area");
197 ott[AB_TYPE_FILE]= istr_const(":file");
198 ott[AB_TYPE_MODULE]= istr_const(":module");
199 ott[AB_TYPE_ITEM]= istr_const(":item");
200 ott[AB_TYPE_LABEL]= istr_const(":label");
201 ott[AB_TYPE_LAYERS]= istr_const(":layers");
202 ott[AB_TYPE_LIST]= istr_const(":list");
203 ott[AB_TYPE_MENU]= istr_const(":menu");
204 ott[AB_TYPE_PROJECT]= istr_const(":project");
205 ott[AB_TYPE_SEPARATOR]= istr_const(":separator");
206 ott[AB_TYPE_SPIN_BOX]= istr_const(":spinbox");
207 ott[AB_TYPE_SCALE]= istr_const(":scale");
208 ott[AB_TYPE_TERM_PANE]= istr_const(":term-pane");
209 ott[AB_TYPE_TEXT_FIELD]= istr_const(":text-field");
210 ott[AB_TYPE_TEXT_PANE]= istr_const(":text-pane");
211 ott[AB_TYPE_UNKNOWN]= istr_const(":unknown-type");
218 util_string_to_object_type(STRING string_type)
220 check_obj_type_table_init();
221 return (AB_OBJECT_TYPE)convert_string_to_int(
223 obj_type_table, AB_OBJECT_TYPE_NUM_VALUES, AB_TYPE_UNKNOWN);
228 util_object_type_to_string(AB_OBJECT_TYPE type)
230 check_obj_type_table_init();
231 return convert_int_to_string(type,
232 obj_type_table, AB_OBJECT_TYPE_NUM_VALUES,
233 istr_const("?type?"));
236 /*****************************************************************
238 ** AB_OBJECT_TYPE - for browser **
240 ******************************************************************/
242 * REMIND: move type conversion stuff to guide
244 static BOOL browser_obj_type_table_inited= FALSE;
245 static ISTRING browser_obj_type_table[AB_OBJECT_TYPE_NUM_VALUES+1]= {NULL};
247 #define check_browser_obj_type_table_init() \
248 (browser_obj_type_table_inited? 0:browser_obj_type_table_init())
251 browser_obj_type_table_init()
253 #define bott browser_obj_type_table
254 browser_obj_type_table_inited= TRUE;
255 convert_fill_table(browser_obj_type_table,
256 AB_OBJECT_TYPE_NUM_VALUES, istr_const("?type?"));
258 bott[AB_TYPE_ACTION]= istr_const("ACTION");
259 bott[AB_TYPE_ACTION_LIST]= istr_const("ACTION-LIST");
260 bott[AB_TYPE_BASE_WINDOW]= istr_const("BASE-WINDOW");
261 bott[AB_TYPE_BUTTON]= istr_const("BUTTON");
262 bott[AB_TYPE_CHOICE]= istr_const("CHOICE");
263 bott[AB_TYPE_COMBO_BOX]= istr_const("COMBO-BOX");
264 bott[AB_TYPE_FILE_CHOOSER]= istr_const("file-chooser");
265 bott[AB_TYPE_MESSAGE]= istr_const("message");
266 bott[AB_TYPE_CONTAINER]= istr_const("CONTAINER");
267 bott[AB_TYPE_DIALOG]= istr_const("DIALOG");
268 bott[AB_TYPE_DRAWING_AREA]= istr_const("DRAWING-AREA");
269 bott[AB_TYPE_MODULE]= istr_const("MODULE");
270 bott[AB_TYPE_ITEM]= istr_const("ITEM");
271 bott[AB_TYPE_LABEL]= istr_const("LABEL");
272 bott[AB_TYPE_LAYERS]= istr_const("LAYERS");
273 bott[AB_TYPE_LIST]= istr_const("LIST");
274 bott[AB_TYPE_MENU]= istr_const("MENU");
275 bott[AB_TYPE_PROJECT]= istr_const("PROJECT");
276 bott[AB_TYPE_SEPARATOR]= istr_const("SEPARATOR");
277 bott[AB_TYPE_SPIN_BOX]= istr_const("SPIN-BOX");
278 bott[AB_TYPE_SCALE]= istr_const("SCALE");
279 bott[AB_TYPE_TERM_PANE]= istr_const("TERM-PANE");
280 bott[AB_TYPE_TEXT_FIELD]= istr_const("TEXT-FIELD");
281 bott[AB_TYPE_TEXT_PANE]= istr_const("TEXT-PANE");
282 bott[AB_TYPE_UNKNOWN]= istr_const("UNKNOWN-TYPE");
289 util_browser_string_to_object_type(STRING string_type)
291 check_browser_obj_type_table_init();
292 return (AB_OBJECT_TYPE)convert_string_to_int(
294 browser_obj_type_table, AB_OBJECT_TYPE_NUM_VALUES, AB_TYPE_UNKNOWN);
299 util_object_type_to_browser_string(AB_OBJECT_TYPE type)
301 check_browser_obj_type_table_init();
302 return convert_int_to_string(type,
303 browser_obj_type_table, AB_OBJECT_TYPE_NUM_VALUES,
304 istr_const("?type?"));
307 /*************************************************************************
311 **************************************************************************/
313 * REMIND: move when stuff to libguide
315 static ISTRING when_table[AB_WHEN_NUM_VALUES];
316 static BOOL when_table_inited= FALSE;
321 #define wt when_table
324 when_table_inited= TRUE;
325 convert_fill_table(when_table, AB_WHEN_NUM_VALUES,
326 istr_const("?when?"));
328 wt[AB_WHEN_ACTION1]= istr_const("Action1Activated");
329 wt[AB_WHEN_ACTION2]= istr_const("Action2Activated");
330 wt[AB_WHEN_ACTION3]= istr_const("Action3Activated");
331 wt[AB_WHEN_ACTIVATED]= istr_const("Activate");
332 wt[AB_WHEN_AFTER_CREATED]= istr_const("AfterCreate");
333 wt[AB_WHEN_AFTER_RESIZED]= istr_const("AfterResize");
334 wt[AB_WHEN_BEFORE_POST_MENU]= istr_const("BeforePostMenu");
335 wt[AB_WHEN_BEFORE_TEXT_CHANGED]=istr_const("BeforeTextChanged");
336 wt[AB_WHEN_CANCEL]= istr_const("CancelActivated");
337 wt[AB_WHEN_DESTROYED]= istr_const("Destroy");
338 wt[AB_WHEN_DRAGGED]= istr_const("Dragged");
339 wt[AB_WHEN_DRAGGED_FROM]= istr_const("DraggedFrom");
340 wt[AB_WHEN_DOUBLE_CLICKED_ON]= istr_const("DoubleClick");
341 wt[AB_WHEN_DROPPED_ON]= istr_const("DroppedOn");
342 wt[AB_WHEN_HIDDEN]= istr_const("Hidden");
343 wt[AB_WHEN_ITEM_SELECTED]= istr_const("ItemSelected");
344 wt[AB_WHEN_OK]= istr_const("OkActivated");
345 wt[AB_WHEN_REPAINT_NEEDED]= istr_const("NeedRepaint");
346 wt[AB_WHEN_POPPED_DOWN]= istr_const("Popdown");
347 wt[AB_WHEN_POPPED_UP]= istr_const("Popup");
348 wt[AB_WHEN_SESSION_RESTORE]= istr_const("SessionRestore");
349 wt[AB_WHEN_SESSION_SAVE]= istr_const("SessionSave");
350 wt[AB_WHEN_SHOWN]= istr_const("Shown");
351 wt[AB_WHEN_TEXT_CHANGED]= istr_const("TextChanged");
352 wt[AB_WHEN_TOOLTALK_DO_COMMAND]=istr_const("ToolTalkDoCommand");
353 wt[AB_WHEN_TOOLTALK_GET_STATUS]=istr_const("ToolTalkGetStatus");
354 wt[AB_WHEN_TOOLTALK_PAUSE_RESUME]=istr_const("ToolTalkPauseResume");
355 wt[AB_WHEN_TOOLTALK_QUIT]=istr_const("ToolTalkQuit");
356 wt[AB_WHEN_VALUE_CHANGED]=istr_const("ValueChanged");
357 wt[AB_WHEN_UNDEF]= istr_const("Undef");
363 #define check_when_table_init() \
364 if (!when_table_inited) {when_table_init();}
368 util_string_to_when(STRING when_string)
370 check_when_table_init();
371 return (AB_WHEN)convert_string_to_int(
373 when_table, AB_WHEN_NUM_VALUES, AB_WHEN_UNDEF);
378 util_when_to_string(AB_WHEN when)
380 check_when_table_init();
381 return convert_int_to_string(when,
382 when_table, AB_WHEN_NUM_VALUES, istr_const("?when?"));
385 /******************* AB_ALIGNMENT **************************************/
387 static ISTRING align_tab[AB_ALIGNMENT_NUM_VALUES];
388 static BOOL align_tab_inited= FALSE;
389 #define align_tab_check_init() (align_tab_inited? 0:align_tab_init())
395 align_tab_inited= TRUE;
396 convert_fill_table(at, ARRAY_SIZE(at), istr_const(NULL));
398 at[AB_ALIGN_TOP]= istr_const(":top");
399 at[AB_ALIGN_LEFT]= istr_const(":left");
400 at[AB_ALIGN_RIGHT]= istr_const(":right");
401 at[AB_ALIGN_BOTTOM]= istr_const(":bottom");
402 at[AB_ALIGN_CENTER]= istr_const(":centers");
403 at[AB_ALIGN_LABELS]= istr_const(":labels");
410 util_string_to_alignment(STRING align_string)
412 align_tab_check_init();
413 return (AB_ALIGNMENT)convert_string_to_int(align_string,
414 align_tab, ARRAY_SIZE(align_tab), -1);
418 util_alignment_to_string(AB_ALIGNMENT align)
420 align_tab_check_init();
421 return convert_int_to_string(align,
422 align_tab, ARRAY_SIZE(align_tab), istr_const(NULL));
425 /******************* AB_LABEL_TYPE **************************************/
426 static ISTRING label_type_tab[AB_LABEL_TYPE_NUM_VALUES];
427 static BOOL label_type_tab_inited= FALSE;
428 #define label_type_tab_check_init() \
429 (label_type_tab_inited? 0:label_type_tab_init())
432 label_type_tab_init()
434 #define ltt label_type_tab
435 label_type_tab_inited= TRUE;
437 ltt[AB_LABEL_ARROW_DOWN]= istr_const(":arrow-down");
438 ltt[AB_LABEL_ARROW_LEFT]= istr_const(":arrow-left");
439 ltt[AB_LABEL_ARROW_RIGHT]= istr_const(":arrow-right");
440 ltt[AB_LABEL_ARROW_UP]= istr_const(":arrow_up");
441 ltt[AB_LABEL_DRAWN]= istr_const(":drawn");
442 ltt[AB_LABEL_GLYPH]= istr_const(":glyph");
443 ltt[AB_LABEL_STRING]= istr_const(":string");
450 util_string_to_label_type(STRING type_string)
452 label_type_tab_check_init();
453 return (AB_LABEL_TYPE)convert_string_to_int(type_string,
454 label_type_tab, ARRAY_SIZE(label_type_tab), -1);
458 util_label_type_to_string(AB_LABEL_TYPE label_type)
460 label_type_tab_check_init();
461 return convert_int_to_string(label_type,
462 label_type_tab, ARRAY_SIZE(label_type_tab), NULL);
465 /******************* AB_BUTTON_TYPE **************************************/
466 static ISTRING button_type_tab[AB_BUTTON_TYPE_NUM_VALUES];
467 static BOOL button_type_tab_inited= FALSE;
468 #define button_type_tab_check_init() \
469 (button_type_tab_inited? 0:button_type_tab_init())
472 button_type_tab_init()
474 #define btt button_type_tab
475 button_type_tab_inited= TRUE;
477 btt[AB_BUT_PUSH]= istr_const(":normal");
484 util_string_to_button_type(STRING type_string)
486 button_type_tab_check_init();
487 return (AB_BUTTON_TYPE)convert_string_to_int(type_string,
488 button_type_tab, ARRAY_SIZE(button_type_tab), -1);
492 util_button_type_to_string(AB_BUTTON_TYPE type)
494 button_type_tab_check_init();
495 return convert_int_to_string(type,
496 button_type_tab, ARRAY_SIZE(button_type_tab), NULL);
500 /******************* AB_ARG_CLASS **************************************/
501 static ISTRING arg_class_tab[AB_ARG_CLASS_NUM_VALUES];
502 static BOOL arg_class_tab_inited= FALSE;
503 #define arg_class_tab_check_init() \
504 (arg_class_tab_inited? 0:arg_class_tab_init())
509 #define att arg_class_tab
510 arg_class_tab_inited= TRUE;
512 att[AB_ARG_CLASS_UNDEF]= istr_const(":undef");
513 att[AB_ARG_CLASS_ACCELERATOR]= istr_const(":attachment");
514 att[AB_ARG_CLASS_COLOR]= istr_const(":color");
515 att[AB_ARG_CLASS_GEOMETRY]= istr_const(":geometry");
516 att[AB_ARG_CLASS_GLYPH]= istr_const(":value");
517 att[AB_ARG_CLASS_NON_GLYPH_LABEL]= istr_const(":label-alignment");
518 att[AB_ARG_CLASS_OTHER_STRING]= istr_const(":label-glyph");
519 att[AB_ARG_CLASS_OTHER]= istr_const(":other");
520 att[AB_ARG_CLASS_OTHER]= istr_const(":other");
527 util_string_to_arg_class(STRING arg_class_string)
529 arg_class_tab_check_init();
530 return (AB_ARG_CLASS)convert_string_to_int(arg_class_string,
531 arg_class_tab, ARRAY_SIZE(arg_class_tab), -1);
535 util_arg_class_to_string(AB_ARG_CLASS arg_class)
537 arg_class_tab_check_init();
538 return convert_int_to_string(arg_class,
539 arg_class_tab, ARRAY_SIZE(arg_class_tab), NULL);
544 util_arg_class_to_flag(AB_ARG_CLASS arg_class)
546 AB_ARG_CLASS_FLAGS class_flag = AB_ARG_CLASS_FLAGS_NONE;
548 if ((arg_class < 1) || (arg_class > AB_ARG_CLASS_NUM_VALUES))
550 return (AB_ARG_CLASS_FLAGS)0;
552 class_flag = (AB_ARG_CLASS_FLAGS)(0x01<<(((unsigned)arg_class)-1));
554 assert(arg_class == util_flag_to_arg_class(class_flag));
560 util_flag_to_arg_class(AB_ARG_CLASS_FLAGS arg_class_flag)
563 AB_ARG_CLASS arg_class = AB_ARG_CLASS_UNDEF;
565 for (i = 1; i < AB_ARG_CLASS_NUM_VALUES; ++i)
567 if ((arg_class_flag & 0x01) != 0)
571 arg_class_flag >>= 1;
573 if (i < AB_ARG_CLASS_NUM_VALUES)
575 arg_class = (AB_ARG_CLASS)i;
582 /******************* AB_ARG_TYPE **************************************/
583 static ISTRING arg_type_tab[AB_ARG_TYPE_NUM_VALUES];
584 static BOOL arg_type_tab_inited= FALSE;
585 #define arg_type_tab_check_init() (arg_type_tab_inited? 0:arg_type_tab_init())
590 #define att arg_type_tab
591 arg_type_tab_inited= TRUE;
593 att[AB_ARG_BOOLEAN]= istr_const(":boolean");
594 att[AB_ARG_CALLBACK]= istr_const(":callback");
595 att[AB_ARG_FLOAT]= istr_const(":float");
596 att[AB_ARG_INT]= istr_const(":integer");
597 att[AB_ARG_LITERAL]= istr_const(":literal");
598 att[AB_ARG_STRING]= istr_const(":string");
599 att[AB_ARG_VOID_PTR]= istr_const(":void");
606 util_string_to_arg_type(STRING arg_type_string)
608 arg_type_tab_check_init();
609 return (AB_ARG_TYPE)convert_string_to_int(arg_type_string,
610 arg_type_tab, ARRAY_SIZE(arg_type_tab), -1);
614 util_arg_type_to_string(AB_ARG_TYPE arg_type)
616 arg_type_tab_check_init();
617 return convert_int_to_string(arg_type,
618 arg_type_tab, ARRAY_SIZE(arg_type_tab), NULL);
621 /******************* AB_TEXT_TYPE **************************************/
623 util_string_to_text_type(STRING s_text_type)
625 return AB_TEXT_ALPHANUMERIC;
629 util_text_type_to_string(AB_TEXT_TYPE tt)
631 return "text-type-not-implemented";
634 /******************* AB_CHOICE_TYPE **************************************/
636 util_string_to_choice_type(STRING s_choice_type)
638 return AB_CHOICE_EXCLUSIVE;
642 util_choice_type_to_string(AB_CHOICE_TYPE choice_type)
644 return ":choice-type-not-implemented";
647 /******************* AB_ORIENTATION **************************************/
649 util_string_to_orientation(STRING s_orient)
651 return AB_ORIENT_HORIZONTAL;
655 util_orientation_to_string(AB_ORIENTATION orient)
657 return "orientation-not-implemented";
660 /******************* AB_MENU_TYPE **************************************/
662 util_string_to_menu_type(STRING s_menu_type)
664 return AB_MENU_PULLDOWN;
668 util_menu_type_to_string(AB_MENU_TYPE type)
670 return "menu-type-not-implemented";
673 /******************* AB_GROUP_TYPE **************************************/
675 util_string_to_group_type(STRING s_group)
677 return AB_GROUP_IGNORE;
681 util_group_type_to_string(AB_GROUP_TYPE group)
683 return "group-type-not-implemented";
686 /******************* AB_OBJECT_STATE **************************************/
688 util_string_to_object_state(STRING s_state)
690 return AB_STATE_ACTIVE;
694 util_object_state_to_string(AB_OBJECT_STATE state)
696 return "object-state-not-implemented";
699 /******************* AB_CONTAINER_TYPE **************************************/
701 static ISTRING container_tab[AB_CONTAINER_TYPE_NUM_VALUES];
702 static BOOL container_tab_inited= FALSE;
703 #define container_tab_check_init() (container_tab_inited? 0:container_tab_init())
708 #define cont container_tab
709 container_tab_inited= TRUE;
710 convert_fill_table(cont, ARRAY_SIZE(cont), istr_const(NULL));
712 cont[AB_CONT_ABSOLUTE]= istr_const(":absolute");
713 cont[AB_CONT_GROUP]= istr_const(":group");
714 cont[AB_CONT_MAIN_WINDOW]= istr_const(":main_window");
715 cont[AB_CONT_MENU_BAR]= istr_const(":menu_bar");
716 cont[AB_CONT_PANED]= istr_const(":paned");
717 cont[AB_CONT_RELATIVE]= istr_const(":relative");
718 cont[AB_CONT_SCROLLED_WINDOW]= istr_const(":scrolled_window");
719 cont[AB_CONT_ROW_COLUMN]= istr_const(":row_column");
725 util_string_to_container_type(STRING container_string)
727 container_tab_check_init();
729 (AB_CONTAINER_TYPE)convert_string_to_int(container_string,
730 container_tab, ARRAY_SIZE(container_tab),
735 util_container_type_to_string(AB_CONTAINER_TYPE type)
737 container_tab_check_init();
738 return convert_int_to_string(type,
739 container_tab, ARRAY_SIZE(container_tab), istr_const(NULL));
743 /******************* AB_ITEM_TYPE **************************************/
745 static ISTRING item_tab[AB_ITEM_TYPE_NUM_VALUES];
746 static BOOL item_tab_inited= FALSE;
747 #define item_tab_check_init() (item_tab_inited? 0:item_tab_init())
753 item_tab_inited= TRUE;
754 convert_fill_table(it, ARRAY_SIZE(it), istr_const(NULL));
756 it[AB_ITEM_FOR_CHOICE]= istr_const(":choice_item");
757 it[AB_ITEM_FOR_LIST]= istr_const(":list_item");
758 it[AB_ITEM_FOR_MENU]= istr_const(":menu_item");
764 util_string_to_item_type(STRING item_string)
766 item_tab_check_init();
768 (AB_ITEM_TYPE)convert_string_to_int(item_string,
769 item_tab, ARRAY_SIZE(item_tab), -1);
773 util_item_type_to_string(AB_ITEM_TYPE type)
775 item_tab_check_init();
776 return convert_int_to_string(type,
777 item_tab, ARRAY_SIZE(item_tab), istr_const(NULL));
780 /******************* AB_LABEL_ALIGN_TYPE **************************************/
783 static ISTRING lalign_tab[AB_LABEL_ALIGN_TYPE_NUM_VALUES];
784 static BOOL lalign_tab_inited= FALSE;
785 #define lalign_tab_check_init() (lalign_tab_inited? 0:lalign_tab_init())
790 #define lat lalign_tab
791 lalign_tab_inited= TRUE;
792 convert_fill_table(lat, ARRAY_SIZE(lat), istr_const(NULL));
794 lat[AB_LABEL_ALIGN_RIGHT]= istr_const(":right");
795 lat[AB_LABEL_ALIGN_CENTER]= istr_const(":center");
796 lat[AB_LABEL_ALIGN_LEFT]= istr_const(":left");
802 ab_string_to_label_align_type(STRING lalign_string)
804 lalign_tab_check_init();
806 (AB_LABEL_ALIGN_TYPE)convert_string_to_int(lalign_string,
807 lalign_tab, ARRAY_SIZE(lalign_tab), -1);
811 ab_label_align_type_to_string(AB_LABEL_ALIGN_TYPE type)
813 lalign_tab_check_init();
814 return convert_int_to_string(type,
815 lalign_tab, ARRAY_SIZE(lalign_tab), istr_const(NULL));
821 util_cvt_bool_to_string(BOOL bool_value, STRING buf, int buf_size)
830 strncpy(buf, "True", buf_size);
834 strncpy(buf, "False", buf_size);
844 * returns identifier-legal string that can be used for file names,
848 util_os_type_to_ident(AB_OS_TYPE osType)
850 STRING typeString = NULL;
854 case AB_OS_AIX: typeString = "aix"; break;
855 case AB_OS_HPUX: typeString = "hpux"; break;
856 case AB_OS_SUNOS: typeString = "sunos"; break;
857 case AB_OS_OSF1: typeString = "osf1"; break;
858 case AB_OS_LNX: typeString = "linux"; break;
859 case AB_OS_FBSD: typeString = "freebsd"; break;
860 case AB_OS_NBSD: typeString = "netbsd"; break;
861 case AB_OS_OBSD: typeString = "openbsd"; break;
869 * Returns a nicely formatted OS name (even on not-so-nice OSes!)
872 util_os_type_to_string(AB_OS_TYPE osType)
874 STRING nameString = NULL;
878 case AB_OS_AIX: nameString = "AIX"; break;
879 case AB_OS_HPUX: nameString = "HP-UX"; break;
880 case AB_OS_SUNOS: nameString = "SunOS"; break;
881 case AB_OS_OSF1: nameString = "OSF/1"; break;
882 case AB_OS_LNX: nameString = "Linux"; break;
883 case AB_OS_FBSD: nameString = "FreeBSD"; break;
884 case AB_OS_NBSD: nameString = "NetBSD"; break;
885 case AB_OS_OBSD: nameString = "OpenBSD"; break;