Blame lib/Xm/RepType.c

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
#ifdef REV_INFO
Packit b099d7
#ifndef lint
Packit b099d7
static char rcsid[] = "$TOG: RepType.c /main/17 1997/09/15 10:10:39 cshi $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
/* (c) Copyright 1991, 1992 HEWLETT-PACKARD COMPANY */
Packit b099d7
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#include "RepTypeI.h"
Packit b099d7
#include "MessagesI.h"
Packit b099d7
#include <Xm/XmosP.h>		/* for (indirectly) atoi() */
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <string.h>
Packit b099d7
#include <ctype.h>
Packit b099d7
#include "XmI.h"
Packit b099d7
Packit b099d7
#define MESSAGE0 _XmMMsgRepType_0000 
Packit b099d7
#define MESSAGE1 _XmMMsgRepType_0001
Packit b099d7
#define MESSAGE2 _XmMMsgRepType_0002
Packit b099d7
Packit b099d7
/* INSTRUCTIONS to add a statically-stored representation type:
Packit b099d7
 *    (For dynamically allocated/created representation types, see the
Packit b099d7
 *     man page for XmRepTypeRegister).
Packit b099d7
 *
Packit b099d7
 *  1) Determine whether or not the numerical values of the representation
Packit b099d7
 *     type can be enumerated with consecutive numerical values beginning 
Packit b099d7
 *     with value zero.  If this is the case, continue with step 2).
Packit b099d7
 *
Packit b099d7
 *     If this is not the case, the representation type needs an extra
Packit b099d7
 *     array in the data structure to map the numerical resource value to
Packit b099d7
 *     the array position of the value name in the representation type data
Packit b099d7
 *     structures.  If the representation type must be mapped in this way,
Packit b099d7
 *     go to step 2M).
Packit b099d7
 *
Packit b099d7
 *  2) Define a static array of the names of the values for the
Packit b099d7
 *     representation type in RepType.c.  Use the representation type name,
Packit b099d7
 *     plus the suffix "Names" for the name of the array (see existing name
Packit b099d7
 *     arrays for an example).  The ordering of the value names in this
Packit b099d7
 *     array determines the numerical value of each name, beginning with
Packit b099d7
 *     zero and incrementing consecutively.
Packit b099d7
 *
Packit b099d7
 *  3) Add an enumeration symbol for the ID number of the representation
Packit b099d7
 *     type in the enum statement in the RepTypeI.h module. 
Packit b099d7
 *     Keep the enum alphabetically sorted.
Packit b099d7
 *
Packit b099d7
 *     Note: if the numerical value is int sized or will be put into an 
Packit b099d7
 *     int sized field, then the ID number of representation type
Packit b099d7
 *     needs to also be added to the "special case for int
Packit b099d7
 *     sized fields" clause in the ConvertRepType function below.
Packit b099d7
 *
Packit b099d7
 *  4) Add an element to the static array of representation type data
Packit b099d7
 *     structures named "_XmStandardRepTypes". Use the same format as the 
Packit b099d7
 *     other elements in the array; the fields which are initialized with  
Packit b099d7
 *     FALSE and NULL should be the same for all elements of the array.
Packit b099d7
 *     Always add the new entry sorted in the array.
Packit b099d7
 *
Packit b099d7
 *  5) You're done.  A generic "string to representation type" converter
Packit b099d7
 *     for the representation type that you just added will be automatically
Packit b099d7
 *     registered when all other Xm converters are registered.
Packit b099d7
 *
Packit b099d7
 ******** For "mapped" representation types: ********
Packit b099d7
 *
Packit b099d7
 *  2M) Define a static array of the numerical values for the
Packit b099d7
 *     representation type in RepType.c.  Use the enumerated symbols
Packit b099d7
 *     (generally defined in Xm.h) to initialize the array of numerical
Packit b099d7
 *     values.  Use the representation type name, plus the suffix "Map"
Packit b099d7
 *     for the name of the array (see existing map arrays for an example).
Packit b099d7
 *
Packit b099d7
 *  3M) Go to 2).
Packit b099d7
 *
Packit b099d7
 *************************************************************************
Packit b099d7
 *
Packit b099d7
 *  NOTE: We have decided to use the reptype mechanism for action parameter
Packit b099d7
 *  symbolic names. In order to capture the name of the widget class, the
Packit b099d7
 *  name of the action the parameters apply to and the fact that this reptype
Packit b099d7
 *  is for parameters to an action, the names tend to be rather long. This
Packit b099d7
 *  is a feature not a bug. Furthermore, we decided not to create new
Packit b099d7
 *  XmR types for each reptype which serves that purpose. To that end, I
Packit b099d7
 *  have hardcoded strings in the reptype table where the XmR value would
Packit b099d7
 *  normally go.
Packit b099d7
 */
Packit b099d7
Packit b099d7
/********    Static Function Declarations    ********/
Packit b099d7
Packit b099d7
static String * CopyStringArray( 
Packit b099d7
                        String *StrArray,
Packit b099d7
                        unsigned char NumEntries,
Packit b099d7
                        Boolean UppercaseFormat) ;
Packit b099d7
static void CopyRecord( 
Packit b099d7
                       XmRepTypeEntry OutputEntry,
Packit b099d7
		       String rep_type_name,
Packit b099d7
		       String *value_names,
Packit b099d7
		       unsigned char *values,
Packit b099d7
		       unsigned char num_values,
Packit b099d7
		       Boolean reverse_installed,
Packit b099d7
		       XmRepTypeId rep_type_id,
Packit b099d7
		       Boolean copy_in) ;
Packit b099d7
static Boolean ValuesConsecutiveStartingAtZero( 
Packit b099d7
                        unsigned char *values,
Packit b099d7
                        unsigned char num_values) ;
Packit b099d7
static XmRepTypeEntry GetRepTypeRecord( 
Packit b099d7
                        XmRepTypeId rep_type_id) ;
Packit b099d7
static Boolean ConvertRepType( 
Packit b099d7
                        Display *disp,
Packit b099d7
                        XrmValue *args,
Packit b099d7
                        Cardinal *n_args,
Packit b099d7
                        XrmValue *from,
Packit b099d7
                        XrmValue *to,
Packit b099d7
                        XtPointer *converter_data) ;
Packit b099d7
static Boolean ReverseConvertRepType( 
Packit b099d7
                        Display *disp,
Packit b099d7
                        XrmValue *args,
Packit b099d7
                        Cardinal *n_args,
Packit b099d7
                        XrmValue *from,
Packit b099d7
                        XrmValue *to,
Packit b099d7
                        XtPointer *converter_data) ;
Packit b099d7
Packit b099d7
/********    End Static Function Declarations    ********/
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*** For consistency with the enum and array declaration, keep these
Packit b099d7
  declarations sorted. Put the map array right after the string
Packit b099d7
  array if any. ***/
Packit b099d7
Packit b099d7
static XmConst char *XmConst AlignmentNames[] =
Packit b099d7
{   "alignment_beginning", "alignment_center", "alignment_end"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst AnimationStyleNames[] =
Packit b099d7
{   "drag_under_none", "drag_under_pixmap", "drag_under_shadow_in",
Packit b099d7
    "drag_under_shadow_out", "drag_under_highlight"
Packit b099d7
    };
Packit b099d7
static XmConst char *XmConst ArrowDirectionNames[] =
Packit b099d7
{   "arrow_up", "arrow_down", "arrow_left", "arrow_right"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ArrowLayoutNames[] =
Packit b099d7
  {
Packit b099d7
  "arrows_end", 
Packit b099d7
  "arrows_beginning",
Packit b099d7
  "arrows_split",
Packit b099d7
  "arrows_flat_end",
Packit b099d7
  "arrows_flat_beginning"
Packit b099d7
  };
Packit b099d7
static XmConst char *XmConst ArrowOrientationNames[] =
Packit b099d7
  {
Packit b099d7
  "arrows_vertical",
Packit b099d7
  "arrows_horizontal"
Packit b099d7
  };
Packit b099d7
static XmConst char *XmConst ArrowSensitivityNames[] =
Packit b099d7
  {
Packit b099d7
  "arrows_insensitive",		/* 0b000 */
Packit b099d7
  "arrows_increment_sensitive",	/* 0b001 */
Packit b099d7
  "arrows_decrement_sensitive", /* 0b010 */
Packit b099d7
  "arrows_sensitive",		/* 0b011 */
Packit b099d7
  "arrows_default_sensitivity"  /* 0b100 Inherit */ 
Packit b099d7
  };
Packit b099d7
static XmConst char *XmConst AttachmentNames[] =
Packit b099d7
{   "attach_none", "attach_form", "attach_opposite_form", "attach_widget",
Packit b099d7
    "attach_opposite_widget", "attach_position", "attach_self"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst AudibleWarningNames[] =
Packit b099d7
{   "none", "bell"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst AutoDragModelNames[] =
Packit b099d7
{   "auto_drag_enabled",	"auto_drag_disabled",	
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst AutomaticSelectionNames[] =
Packit b099d7
{   "no_auto_select", "auto_select",
Packit b099d7
    XtEoff, XtEfalse, XtEno, "0",
Packit b099d7
    XtEon, XtEtrue, XtEyes, "1"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char AutomaticSelectionMap[] =
Packit b099d7
{   XmNO_AUTO_SELECT, XmAUTO_SELECT,
Packit b099d7
    XmNO_AUTO_SELECT, XmNO_AUTO_SELECT, XmNO_AUTO_SELECT, XmNO_AUTO_SELECT, 
Packit b099d7
    XmAUTO_SELECT, XmAUTO_SELECT, XmAUTO_SELECT, XmAUTO_SELECT
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst BindingTypeNames[] =
Packit b099d7
{   "none", "pixmap", "solid", "spiral", "pixmap_overlap_only"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst BitmapConversionModelNames[] =
Packit b099d7
{   "match_depth", "dynamic_depth"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst BlendModelNames[] =
Packit b099d7
{   "blend_all", "blend_state_source", "blend_just_source", "blend_none"
Packit b099d7
    } ;
Packit b099d7
#define ChildHorizontalAlignmentNames   AlignmentNames
Packit b099d7
Packit b099d7
static XmConst char *XmConst ChildPlacementNames[] =
Packit b099d7
{   "place_top", "place_above_selection", "place_below_selection"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ChildTypeNames[] =
Packit b099d7
{   "frame_generic_child", "frame_workarea_child", "frame_title_child"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ChildVerticalAlignmentNames[] =
Packit b099d7
{   "alignment_baseline_top", "alignment_center", 
Packit b099d7
    "alignment_baseline_bottom",
Packit b099d7
    "alignment_widget_top", "alignment_widget_bottom",
Packit b099d7
    "alignment_child_top", "alignment_child_bottom"
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst unsigned char ChildVerticalAlignmentMap[] =
Packit b099d7
{   XmALIGNMENT_BASELINE_TOP, XmALIGNMENT_CENTER, 
Packit b099d7
    XmALIGNMENT_BASELINE_BOTTOM,
Packit b099d7
    XmALIGNMENT_WIDGET_TOP, XmALIGNMENT_WIDGET_BOTTOM,
Packit b099d7
    XmALIGNMENT_CHILD_TOP, XmALIGNMENT_CHILD_BOTTOM
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ComboBoxListActionActionParamNames[] =
Packit b099d7
{
Packit b099d7
    "up", "down", "listprevpage", "listnextpage", "listbegindata", 
Packit b099d7
    "listenddata"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ComboBoxTypeNames[] =
Packit b099d7
{   "combo_box", "drop_down_combo_box", "drop_down_list"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst CommandSelectionBoxUpOrDownActionParamNames[] =
Packit b099d7
{   "previous", "next", "first", "last"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst CommandWindowLocationNames[] =
Packit b099d7
{   "command_above_workspace", "command_below_workspace"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ContainerCursorActionParamNames[] =
Packit b099d7
{
Packit b099d7
    "left", "right", "up", "down", "first", "last"
Packit b099d7
  } ;
Packit b099d7
static XmConst char *XmConst ContainerExpandCollapseActionParamNames[] =
Packit b099d7
{
Packit b099d7
    "left", "right", "collapse", "expand"
Packit b099d7
  } ;
Packit b099d7
static XmConst char *XmConst ContainerStartTransferActionParamNames[] =
Packit b099d7
{
Packit b099d7
    "link", "move", "copy"
Packit b099d7
  } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst DefaultButtonEmphasisNames[] =
Packit b099d7
{
Packit b099d7
    "external_highlight", "internal_highlight"
Packit b099d7
} ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst DefaultButtonTypeNames[] =
Packit b099d7
{   "dialog_none", "dialog_cancel_button", "dialog_ok_button",
Packit b099d7
    "dialog_help_button"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char DefaultButtonTypeMap[] = 
Packit b099d7
{   XmDIALOG_NONE, XmDIALOG_CANCEL_BUTTON, XmDIALOG_OK_BUTTON,
Packit b099d7
    XmDIALOG_HELP_BUTTON
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst DeleteResponseNames[] =
Packit b099d7
{   "destroy", "unmap", "do_nothing"
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst DialogStyleNames[] =
Packit b099d7
{   "dialog_modeless", "dialog_work_area", "dialog_primary_application_modal",
Packit b099d7
    "dialog_application_modal", "dialog_full_application_modal",
Packit b099d7
    "dialog_system_modal"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char DialogStyleMap[] =
Packit b099d7
{   XmDIALOG_MODELESS, XmDIALOG_WORK_AREA, XmDIALOG_PRIMARY_APPLICATION_MODAL,
Packit b099d7
    XmDIALOG_APPLICATION_MODAL, XmDIALOG_FULL_APPLICATION_MODAL,
Packit b099d7
    XmDIALOG_SYSTEM_MODAL
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst DialogTypeNames[] =
Packit b099d7
{   "dialog_template", "dialog_error", "dialog_information", "dialog_message",
Packit b099d7
    "dialog_question", "dialog_warning", "dialog_working"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst DirectionNames[] =
Packit b099d7
{   "left_to_right", "right_to_left",
Packit b099d7
    "left_to_right_top_to_bottom", "right_to_left_top_to_bottom",
Packit b099d7
    "left_to_right_bottom_to_top", "right_to_left_bottom_to_top",
Packit b099d7
    "top_to_bottom_left_to_right", "top_to_bottom_right_to_left",
Packit b099d7
    "bottom_to_top_left_to_right", "bottom_to_top_right_to_left"
Packit b099d7
   } ;
Packit b099d7
static XmConst unsigned char DirectionMap[] =
Packit b099d7
{   XmLEFT_TO_RIGHT, XmRIGHT_TO_LEFT,
Packit b099d7
    XmLEFT_TO_RIGHT_TOP_TO_BOTTOM, XmRIGHT_TO_LEFT_TOP_TO_BOTTOM,
Packit b099d7
    XmLEFT_TO_RIGHT_BOTTOM_TO_TOP, XmRIGHT_TO_LEFT_BOTTOM_TO_TOP,
Packit b099d7
    XmTOP_TO_BOTTOM_LEFT_TO_RIGHT, XmTOP_TO_BOTTOM_RIGHT_TO_LEFT,
Packit b099d7
    XmBOTTOM_TO_TOP_LEFT_TO_RIGHT, XmBOTTOM_TO_TOP_RIGHT_TO_LEFT
Packit b099d7
   };
Packit b099d7
static XmConst char *XmConst DragInitiatorProtocolStyleNames[] =
Packit b099d7
{   "drag_none", "drag_drop_only", "drag_prefer_preregister",
Packit b099d7
    "drag_preregister", "drag_prefer_dynamic", "drag_dynamic",
Packit b099d7
    "drag_prefer_receiver"
Packit b099d7
	};
Packit b099d7
static XmConst char *XmConst DragReceiverProtocolStyleNames[] =
Packit b099d7
{   "drag_none", "drag_drop_only", "drag_prefer_preregister",
Packit b099d7
    "drag_preregister", "drag_prefer_dynamic", "drag_dynamic"
Packit b099d7
	};
Packit b099d7
static XmConst char *XmConst DropSiteActivityNames[] =
Packit b099d7
{   "drop_site_active", "drop_site_inactive", "drop_site_ignore"
Packit b099d7
	};
Packit b099d7
static XmConst char *XmConst DropSiteTypeNames[] =
Packit b099d7
{   "drop_site_simple",   "drop_site_composite"
Packit b099d7
	};
Packit b099d7
static XmConst char *XmConst EditModeNames[] =
Packit b099d7
{   "multi_line_edit", "single_line_edit"
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst EnableBtn1Names[] =
Packit b099d7
{   XtEfalse, XtEtrue, XtEoff, "button2_adjust", "button2_transfer" };
Packit b099d7
Packit b099d7
static XmConst unsigned char EnableBtn1Map[] =
Packit b099d7
{   XmOFF, XmBUTTON2_ADJUST, XmOFF, XmBUTTON2_ADJUST, XmBUTTON2_TRANSFER };
Packit b099d7
Packit b099d7
static XmConst char *XmConst EnableWarpNames[] =
Packit b099d7
{   "enable_warp_on",	"enable_warp_off",	
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst EntryViewTypeNames[] = 
Packit b099d7
{   "large_icon", "small_icon", "any_icon"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst FileFilterStyleNames[] =
Packit b099d7
{   "filter_none", "filter_hidden_files"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst FileSelectionBoxUpOrDownActionParamNames[] =
Packit b099d7
{   "previous", "next", "first", "last"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst FileTypeMaskNames[] =
Packit b099d7
{   "file_directory", "file_regular", "file_any_type"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char FileTypeMaskMap[] = 
Packit b099d7
{   XmFILE_DIRECTORY, XmFILE_REGULAR, XmFILE_ANY_TYPE
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst FontTypeNames[] =
Packit b099d7
{   "font_is_font", "font_is_fontset", "as_is", "font_is_xft"
Packit b099d7
   } ; 
Packit b099d7
static XmConst unsigned char FontTypeMap[] =
Packit b099d7
{   XmFONT_IS_FONT, XmFONT_IS_FONTSET, XmAS_IS, XmFONT_IS_XFT
Packit b099d7
   } ; 
Packit b099d7
static XmConst char *XmConst IconAttachmentNames[] =
Packit b099d7
{   "attach_north_west", "attach_north", "attach_north_east", "attach_east",
Packit b099d7
    "attach_south_east", "attach_south", "attach_south_west", "attach_west",
Packit b099d7
    "attach_center", "attach_hot"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst IndicatorOnNames[] = 
Packit b099d7
    {
Packit b099d7
    "indicator_none", "indicator_fill", "indicator_box", "indicator_check", 
Packit b099d7
    "indicator_check_box", "indicator_cross", "indicator_cross_box",
Packit b099d7
    XtEoff, XtEfalse, XtEno,
Packit b099d7
    XtEon, XtEtrue, XtEyes
Packit b099d7
    };
Packit b099d7
static XmConst unsigned  char IndicatorOnMap[] = 
Packit b099d7
    {
Packit b099d7
     XmINDICATOR_NONE, XmINDICATOR_FILL, XmINDICATOR_BOX, XmINDICATOR_CHECK,
Packit b099d7
     XmINDICATOR_CHECK_BOX, XmINDICATOR_CROSS, XmINDICATOR_CROSS_BOX,
Packit b099d7
     XmINDICATOR_NONE, XmINDICATOR_NONE, XmINDICATOR_NONE, 
Packit b099d7
     XmINDICATOR_FILL, XmINDICATOR_FILL, XmINDICATOR_FILL
Packit b099d7
    };
Packit b099d7
static XmConst char *XmConst IndicatorTypeNames[] =
Packit b099d7
{   "n_of_many", "one_of_many", "one_of_many_round", "one_of_many_diamond"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char IndicatorTypeMap[] = 
Packit b099d7
{   XmN_OF_MANY, XmONE_OF_MANY, XmONE_OF_MANY_ROUND, XmONE_OF_MANY_DIAMOND
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst InputPolicyNames[] =
Packit b099d7
{   "per_shell", "per_widget"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst KeyboardFocusPolicyNames[] =
Packit b099d7
{   "explicit", "pointer"
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst LabelTypeNames[] =
Packit b099d7
{   "pixmap", "string", "pixmap_and_string"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char LabelTypeMap[] = 
Packit b099d7
{   XmPIXMAP, XmSTRING, XmPIXMAP_AND_STRING
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst LayoutTypeNames[] =
Packit b099d7
{   "outline", "spatial", "detail"
Packit b099d7
   } ;
Packit b099d7
static XmConst char *XmConst LineStyleNames[] =
Packit b099d7
{   "no_line", "single"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst LineTypeNames[] =
Packit b099d7
{   "no_line", "single_line", "double_line",
Packit b099d7
    "single_dashed_line", "double_dashed_line", "as_is"
Packit b099d7
    } ; 
Packit b099d7
static XmConst unsigned char LineTypeMap[] =
Packit b099d7
{   XmNO_LINE, XmSINGLE_LINE, XmDOUBLE_LINE,
Packit b099d7
    XmSINGLE_DASHED_LINE, XmDOUBLE_DASHED_LINE, XmAS_IS
Packit b099d7
    } ; 
Packit b099d7
static XmConst char *XmConst ListSizePolicyNames[] =
Packit b099d7
{   "variable", "constant", "resize_if_possible"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst LoadModelNames[] =
Packit b099d7
{   "load_deferred", "load_immediate", "as_is"
Packit b099d7
    } ; 
Packit b099d7
static XmConst unsigned char LoadModelMap[] =
Packit b099d7
{   XmLOAD_DEFERRED, XmLOAD_IMMEDIATE, XmAS_IS
Packit b099d7
    } ; 
Packit b099d7
static XmConst char *XmConst MatchBehaviorNames[] = 
Packit b099d7
{   "none", "quick_navigate"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst MultiClickNames[] =
Packit b099d7
{   "multiclick_discard", "multiclick_keep"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst NavigationTypeNames[] =
Packit b099d7
{   "none", "tab_group", "sticky_tab_group", "exclusive_tab_group"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst NotebookChildTypeNames[] =
Packit b099d7
{   "none", "page", "major_tab", "minor_tab", "status_area", "page_scroller"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst NotebookTraverseTabActionParamNames[] =
Packit b099d7
{   "home", "end", "next", "previous"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst OrientationNames[] =
Packit b099d7
{   XtEvertical, XtEhorizontal
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char OrientationMap[] = 
Packit b099d7
{   XmVERTICAL, XmHORIZONTAL
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst OutlineButtonPolicyNames[] =
Packit b099d7
{   "outline_button_present", "outline_button_absent"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst OutlineStateNames[] =
Packit b099d7
{   "collapsed", "expanded"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst PackingNames[] =
Packit b099d7
{   "pack_tight", "pack_column", "pack_none"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char PackingMap[] =
Packit b099d7
{   XmPACK_TIGHT, XmPACK_COLUMN, XmPACK_NONE
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst PanedWindowSashActionParamNames[] = 
Packit b099d7
{
Packit b099d7
    "start", "move", "commit", "key"
Packit b099d7
    };
Packit b099d7
static XmConst char *XmConst PanedWindowSashDirectionActionParamNames[] = 
Packit b099d7
{
Packit b099d7
    "up", "down", "right", "left", "first", "last"
Packit b099d7
    };
Packit b099d7
static XmConst char *XmConst PanedWindowSashIncrementActionParamNames[] = 
Packit b099d7
{
Packit b099d7
    "defaultincr", "largeincr"
Packit b099d7
    };
Packit b099d7
static XmConst char *XmConst PathModeNames[] =
Packit b099d7
{   "path_mode_full", "path_mode_relative"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst PositionModeNames[] =
Packit b099d7
{
Packit b099d7
  "zero_based", "one_based"
Packit b099d7
};
Packit b099d7
static XmConst char *XmConst PositionTypeNames[] =
Packit b099d7
  {
Packit b099d7
  "position_index",
Packit b099d7
  "position_value"
Packit b099d7
  };
Packit b099d7
static XmConst char *XmConst PrimaryOwnershipNames[] =
Packit b099d7
{   "own_never", "own_always", "own_multiple", "own_possible_multiple"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ProcessingDirectionNames[] =
Packit b099d7
{   "max_on_top", "max_on_bottom", "max_on_left", "max_on_right"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ResizePolicyNames[] =
Packit b099d7
{   "resize_none", "resize_grow", "resize_any"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst RowColumnTypeNames[] =
Packit b099d7
{   "work_area", "menu_bar", "menu_pulldown", "menu_popup", "menu_option"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollBarDisplayPolicyNames[] =
Packit b099d7
{   "static", "as_needed"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollBarIncrementDownOrRightActionParamNames[] =
Packit b099d7
{   "down", "right"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollBarIncrementUpOrLeftActionParamNames[] =
Packit b099d7
{   "up", "left"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollBarPageDownOrRightActionParamNames[] =
Packit b099d7
{   "down", "right"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollBarPageUpOrLeftActionParamNames[] =
Packit b099d7
{   "up", "left"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollBarPlacementNames[] =
Packit b099d7
{   "bottom_right", "top_right", "bottom_left", "top_left"
Packit b099d7
    } ;
Packit b099d7
/* NOTE: work_area, menu_bar and separator have to match the existing ones */
Packit b099d7
static XmConst char *XmConst ScrolledWindowChildTypeNames[] =
Packit b099d7
{   "work_area", "menu_bar", 
Packit b099d7
    "hor_scrollbar", "vert_scrollbar",
Packit b099d7
    "command_window", 
Packit b099d7
    "separator", "message_window",
Packit b099d7
    "scroll_hor", "scroll_vert", "no_scroll",
Packit b099d7
    "clip_window", "generic_child"	
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ScrollingPolicyNames[] =
Packit b099d7
{   "automatic", "application_defined"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SelectionBoxUpOrDownActionParamNames[] =
Packit b099d7
{   "previous", "next", "first", "last"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SelectionModeNames[] =
Packit b099d7
{   "normal_mode", "add_mode"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SelectionPolicyNames[] =
Packit b099d7
{   "single_select", "multiple_select", "extended_select", "browse_select"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SelectionTechniqueNames[] =
Packit b099d7
{   "marquee", "marquee_extend_start", "marquee_extend_both", 
Packit b099d7
    "touch_only", "touch_over"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SelectionTypeNames[] =
Packit b099d7
{   "dialog_work_area", "dialog_prompt", "dialog_selection", "dialog_command",
Packit b099d7
    "dialog_file_selection"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SeparatorTypeNames[] = 
Packit b099d7
{   "no_line", "single_line", "double_line", "single_dashed_line",
Packit b099d7
    "double_dashed_line", "shadow_etched_in", "shadow_etched_out",
Packit b099d7
    "shadow_etched_in_dash", "shadow_etched_out_dash"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SetNames[] =
Packit b099d7
{   "unset", "set", "indeterminate",
Packit b099d7
    XtEoff, XtEfalse, XtEno, "0",
Packit b099d7
    XtEon, XtEtrue, XtEyes, "1"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char SetMap[] =
Packit b099d7
{   XmUNSET, XmSET, XmINDETERMINATE,
Packit b099d7
    XmUNSET, XmUNSET, XmUNSET, XmUNSET, 
Packit b099d7
    XmSET, XmSET, XmSET, XmSET
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ShadowTypeNames[] =
Packit b099d7
{   "shadow_etched_in", "shadow_etched_out", "shadow_in", "shadow_out"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char ShadowTypeMap[] = 
Packit b099d7
{   XmSHADOW_ETCHED_IN, XmSHADOW_ETCHED_OUT, XmSHADOW_IN, XmSHADOW_OUT
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ShowArrowsNames[] =
Packit b099d7
{   "each_side", XtEtrue, XtEyes, XtEon, "1",
Packit b099d7
    "max_side", "min_side",
Packit b099d7
    "none", XtEfalse, XtEno, XtEoff, "0"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char ShowArrowsMap[] = 
Packit b099d7
{   1,1,1,1,1,
Packit b099d7
    XmMAX_SIDE, XmMIN_SIDE,
Packit b099d7
    0,0,0,0,0
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ShowValueNames[] =
Packit b099d7
{   "near_slider", XtEtrue, XtEyes, XtEon, "1",
Packit b099d7
    "near_border",
Packit b099d7
    "none", XtEfalse, XtEno, XtEoff, "0"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char ShowValueMap[] = 
Packit b099d7
{   1,1,1,1,1,
Packit b099d7
    XmNEAR_BORDER,
Packit b099d7
    0,0,0,0,0
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
static XmConst char *XmConst SliderMarkNames[] =
Packit b099d7
{   "none", "etched_line", "thumb_mark", "round_mark"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SliderVisualNames[] =
Packit b099d7
{   "background", "foreground", "trough_color", "shadowed_background"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SlidingModeNames[] =
Packit b099d7
{   "slider", "thermometer", 
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SpatialIncludeModelNames[] =
Packit b099d7
{   "append", "closest", "first_fit"
Packit b099d7
   } ;
Packit b099d7
static XmConst char *XmConst SpatialResizeModelNames[] =
Packit b099d7
{   "grow_minor", "grow_major", "grow_balanced"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SpatialSnapModelNames[] =
Packit b099d7
{   "none", "snap_to_grid", "center"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SpatialStyleNames[] =
Packit b099d7
{   "none", "grid", "cells"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst SpinBoxChildTypeNames[] =
Packit b099d7
  {
Packit b099d7
  "string",
Packit b099d7
  "numeric",
Packit b099d7
  };
Packit b099d7
Packit b099d7
static XmConst unsigned char SpinBoxChildTypeMap[] =
Packit b099d7
  {
Packit b099d7
  (unsigned char) XmSTRING,
Packit b099d7
  (unsigned char) XmNUMERIC,
Packit b099d7
  };
Packit b099d7
static XmConst char *XmConst StringDirectionNames[] =
Packit b099d7
{   "string_direction_l_to_r", "string_direction_r_to_l"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst TearOffModelNames[] =
Packit b099d7
{   "tear_off_enabled", "tear_off_disabled"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst TextExtendMovementActionParamNames[] = 
Packit b099d7
{   "extend"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst TextFieldExtendMovementActionParamNames[] = 
Packit b099d7
{   "extend"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst TextFieldDirectionActionParamNames[] = 
Packit b099d7
{   "right", "left"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst TextHorizontalDirectionActionParamNames[] = 
Packit b099d7
{   "right", "left"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst TextVerticalDirectionActionParamNames[] = 
Packit b099d7
{   "up", "down"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ToggleModeNames[] =
Packit b099d7
{   "toggle_boolean", "toggle_indeterminate"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst UnitTypeNames[] =
Packit b099d7
{   "pixels", "100th_millimeters", "1000th_inches", "100th_points",
Packit b099d7
    "100th_font_units", "inches", "centimeters", "millimeters",
Packit b099d7
    "points", "font_units"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst UnpostBehaviorNames[] =
Packit b099d7
{   "unpost", "unpost_and_replay"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst VerticalAlignmentNames[] =
Packit b099d7
{   "alignment_baseline_top", "alignment_center", "alignment_baseline_bottom",
Packit b099d7
    "alignment_contents_top", "alignment_contents_bottom"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst ViewTypeNames[] =
Packit b099d7
{   "large_icon", "small_icon"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst VisualEmphasisNames[] =
Packit b099d7
{   "selected", "not_selected"
Packit b099d7
    };
Packit b099d7
static XmConst char *XmConst VisualPolicyNames[] =
Packit b099d7
{   "variable", "constant"
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst WhichButtonNames[] =
Packit b099d7
{   "button1", "1", "button2", "2", "button3", "3", "button4", "4", 
Packit b099d7
    "button5", "5"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char WhichButtonMap[] = 
Packit b099d7
{   Button1, Button1, Button2, Button2, Button3, Button3, Button4, Button4,
Packit b099d7
    Button5, Button5
Packit b099d7
    } ;
Packit b099d7
static XmConst char *XmConst PixmapPlacementNames[] =
Packit b099d7
{   "top", "bottom", "left", "right"
Packit b099d7
    } ;
Packit b099d7
static XmConst unsigned char PixmapPlacementMap[] = 
Packit b099d7
{   XmPIXMAP_TOP, XmPIXMAP_BOTTOM, XmPIXMAP_LEFT, XmPIXMAP_RIGHT
Packit b099d7
    } ;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/* Note that this array does not initialize rep_type_id fields,
Packit b099d7
 * for this field is useless.  It always matches the index of the
Packit b099d7
 * entry in the array.  We have to keep the field since the structure
Packit b099d7
 * is public.  For the API, rep_type_id is set on query.
Packit b099d7
 */
Packit b099d7
Packit b099d7
Packit b099d7
static XmRepTypeEntryRec StandardRepTypes[] = {   
Packit b099d7
  {
Packit b099d7
    XmRAlignment, (String*)AlignmentNames, NULL, 
Packit b099d7
    XtNumber(AlignmentNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRAnimationStyle, (String*)AnimationStyleNames, NULL, 
Packit b099d7
    XtNumber(AnimationStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRArrowDirection, (String*)ArrowDirectionNames, NULL, 
Packit b099d7
    XtNumber(ArrowDirectionNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRArrowLayout, (String*)ArrowLayoutNames, NULL,
Packit b099d7
    XtNumber(ArrowLayoutNames),  FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRArrowOrientation, (String*)ArrowOrientationNames, NULL,
Packit b099d7
    XtNumber(ArrowOrientationNames),  FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRArrowSensitivity, (String*)ArrowSensitivityNames, NULL,
Packit b099d7
    XtNumber(ArrowSensitivityNames),  FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRAttachment, (String*)AttachmentNames, NULL, 
Packit b099d7
    XtNumber(AttachmentNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRAudibleWarning, (String*)AudibleWarningNames, NULL, 
Packit b099d7
    XtNumber(AudibleWarningNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRAutoDragModel, (String*)AutoDragModelNames, NULL, 
Packit b099d7
    XtNumber(AutoDragModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRAutomaticSelection, (String*)AutomaticSelectionNames, 
Packit b099d7
    (unsigned char *)AutomaticSelectionMap, 
Packit b099d7
    XtNumber(AutomaticSelectionNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRBindingType, (String*)BindingTypeNames, NULL, 
Packit b099d7
    XtNumber(BindingTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRBitmapConversionModel, (String*)BitmapConversionModelNames, NULL, 
Packit b099d7
    XtNumber(BitmapConversionModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRBlendModel, (String*)BlendModelNames, NULL, 
Packit b099d7
    XtNumber(BlendModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRChildHorizontalAlignment, (String*)ChildHorizontalAlignmentNames, NULL, 
Packit b099d7
    XtNumber(ChildHorizontalAlignmentNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRChildPlacement, (String*)ChildPlacementNames, NULL, 
Packit b099d7
    XtNumber(ChildPlacementNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRChildType, (String*)ChildTypeNames, NULL, 
Packit b099d7
    XtNumber(ChildTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRChildVerticalAlignment, (String*)ChildVerticalAlignmentNames, 
Packit b099d7
    (unsigned char *)ChildVerticalAlignmentMap, 
Packit b099d7
    XtNumber(ChildVerticalAlignmentNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ComboBoxListActionActionParam", /* See instructions above. */
Packit b099d7
    (String*)ComboBoxListActionActionParamNames, NULL, 
Packit b099d7
    XtNumber(ComboBoxListActionActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRComboBoxType, (String*)ComboBoxTypeNames, NULL, 
Packit b099d7
    XtNumber(ComboBoxTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {	
Packit b099d7
    "CommandSelectionBoxUpOrDownActionParam",
Packit b099d7
    (String*)CommandSelectionBoxUpOrDownActionParamNames, NULL,
Packit b099d7
    XtNumber(CommandSelectionBoxUpOrDownActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRCommandWindowLocation, (String*)CommandWindowLocationNames, NULL, 
Packit b099d7
    XtNumber(CommandWindowLocationNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ContainerCursorActionParam", /* See instructions above. */
Packit b099d7
    (String*)ContainerCursorActionParamNames,
Packit b099d7
    NULL, XtNumber(ContainerCursorActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ContainerExpandCollapseActionParamName", /* See instructions above. */
Packit b099d7
    (String*)ContainerExpandCollapseActionParamNames,
Packit b099d7
    NULL, XtNumber(ContainerExpandCollapseActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ContainerStartTransferActionParam", /* See instructions above. */
Packit b099d7
    (String*)ContainerStartTransferActionParamNames,
Packit b099d7
    NULL, XtNumber(ContainerStartTransferActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDefaultButtonEmphasis, (String*)DefaultButtonEmphasisNames, NULL,
Packit b099d7
    XtNumber(DefaultButtonEmphasisNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDefaultButtonType, (String*)DefaultButtonTypeNames, 
Packit b099d7
    (unsigned char *)DefaultButtonTypeMap,
Packit b099d7
    XtNumber(DefaultButtonTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDeleteResponse, (String*)DeleteResponseNames, NULL,
Packit b099d7
    XtNumber(DeleteResponseNames),  FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDialogStyle, (String*)DialogStyleNames, (unsigned char *)DialogStyleMap,
Packit b099d7
    XtNumber(DialogStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDialogType, (String*)DialogTypeNames, NULL, 
Packit b099d7
    XtNumber(DialogTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDirection, (String*)DirectionNames, (unsigned char *)DirectionMap,
Packit b099d7
    XtNumber(DirectionNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDragInitiatorProtocolStyle, (String*)DragInitiatorProtocolStyleNames, NULL, 
Packit b099d7
    XtNumber(DragInitiatorProtocolStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDragReceiverProtocolStyle, (String*)DragReceiverProtocolStyleNames, NULL, 
Packit b099d7
    XtNumber(DragReceiverProtocolStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDropSiteActivity, (String*)DropSiteActivityNames, NULL, 
Packit b099d7
    XtNumber(DropSiteActivityNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRDropSiteType, (String*)DropSiteTypeNames, NULL, 
Packit b099d7
    XtNumber(DropSiteTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmREditMode, (String*)EditModeNames, NULL, 
Packit b099d7
    XtNumber(EditModeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmREnableBtn1Transfer, (String*)EnableBtn1Names, 
Packit b099d7
    (unsigned char *) EnableBtn1Map, 
Packit b099d7
    XtNumber(EnableBtn1Names), FALSE
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmREnableWarp, (String*)EnableWarpNames, NULL, 
Packit b099d7
    XtNumber(EnableWarpNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmREntryViewType, (String*)EntryViewTypeNames, NULL, 
Packit b099d7
    XtNumber(EntryViewTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRFileFilterStyle, (String*)FileFilterStyleNames, NULL,
Packit b099d7
    XtNumber(FileFilterStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "FileSelectionBoxUpOrDownActionParam", /* See instructions above. */
Packit b099d7
    (String*)FileSelectionBoxUpOrDownActionParamNames,
Packit b099d7
    NULL, XtNumber(FileSelectionBoxUpOrDownActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRFileTypeMask, (String*)FileTypeMaskNames, 
Packit b099d7
    (unsigned char *)FileTypeMaskMap,
Packit b099d7
    XtNumber(FileTypeMaskNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRFontType, (String*)FontTypeNames, (unsigned char *)FontTypeMap,
Packit b099d7
    XtNumber(FontTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRIconAttachment, (String*)IconAttachmentNames, NULL, 
Packit b099d7
    XtNumber(IconAttachmentNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRIndicatorOn, (String*)IndicatorOnNames, (unsigned char *)IndicatorOnMap,
Packit b099d7
    XtNumber(IndicatorOnNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRIndicatorType, (String*)IndicatorTypeNames, 
Packit b099d7
    (unsigned char *)IndicatorTypeMap,
Packit b099d7
    XtNumber(IndicatorTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRInputPolicy, (String*)InputPolicyNames, NULL, 
Packit b099d7
    XtNumber(InputPolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRKeyboardFocusPolicy, (String*)KeyboardFocusPolicyNames, NULL,
Packit b099d7
    XtNumber(KeyboardFocusPolicyNames),  FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRLabelType, (String*)LabelTypeNames, (unsigned char *)LabelTypeMap,
Packit b099d7
    XtNumber(LabelTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRLayoutType, (String*)LayoutTypeNames, NULL, 
Packit b099d7
    XtNumber(LayoutTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRLineStyle, (String*)LineStyleNames, NULL, 
Packit b099d7
    XtNumber(LineStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRLineType, (String*)LineTypeNames, (unsigned char *)LineTypeMap,
Packit b099d7
    XtNumber(LineTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRListSizePolicy, (String*)ListSizePolicyNames, NULL, 
Packit b099d7
    XtNumber(ListSizePolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRLoadModel, (String*)LoadModelNames, (unsigned char *)LoadModelMap,
Packit b099d7
    XtNumber(LoadModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRMatchBehavior, (String*)MatchBehaviorNames, NULL, 
Packit b099d7
    XtNumber(MatchBehaviorNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRMultiClick, (String*)MultiClickNames, NULL, 
Packit b099d7
    XtNumber(MultiClickNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRNavigationType, (String*)NavigationTypeNames, NULL, 
Packit b099d7
    XtNumber(NavigationTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRNotebookChildType, (String*)NotebookChildTypeNames, NULL, 
Packit b099d7
    XtNumber(NotebookChildTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "NotebookTraverseTabActionParam", /* See instructions above. */
Packit b099d7
    (String*)NotebookTraverseTabActionParamNames, NULL, 
Packit b099d7
    XtNumber(NotebookTraverseTabActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmROrientation, (String*)OrientationNames, (unsigned char *)OrientationMap,
Packit b099d7
    XtNumber(OrientationNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmROutlineButtonPolicy, (String*)OutlineButtonPolicyNames, NULL, 
Packit b099d7
    XtNumber(OutlineButtonPolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmROutlineState, (String*)OutlineStateNames, NULL, 
Packit b099d7
    XtNumber(OutlineStateNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRPacking, (String*)PackingNames, (unsigned char *)PackingMap,
Packit b099d7
    XtNumber(PackingNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "PanedWindowSashActionParam", /* See instructions above. */
Packit b099d7
    (String*)PanedWindowSashActionParamNames, NULL,
Packit b099d7
    XtNumber(PanedWindowSashActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "PanedWindowSashDirectionActionParam", /* See instructions above. */
Packit b099d7
    (String*)PanedWindowSashDirectionActionParamNames, NULL,
Packit b099d7
    XtNumber(PanedWindowSashDirectionActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "PanedWindowSashIncrementActionParam", /* See instructions above. */
Packit b099d7
    (String*)PanedWindowSashIncrementActionParamNames, NULL,
Packit b099d7
    XtNumber(PanedWindowSashIncrementActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRPathMode, (String*)PathModeNames, NULL,
Packit b099d7
    XtNumber(PathModeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRPositionMode, (String*)PositionModeNames, NULL,
Packit b099d7
    XtNumber(PositionModeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRPositionType, (String*)PositionTypeNames, NULL,
Packit b099d7
    XtNumber(PositionTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRPrimaryOwnership, (String*)PrimaryOwnershipNames, NULL, 
Packit b099d7
    XtNumber(PrimaryOwnershipNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRProcessingDirection, (String*)ProcessingDirectionNames, NULL, 
Packit b099d7
    XtNumber(ProcessingDirectionNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRResizePolicy, (String*)ResizePolicyNames, NULL, 
Packit b099d7
    XtNumber(ResizePolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRRowColumnType, (String*)RowColumnTypeNames, NULL, 
Packit b099d7
    XtNumber(RowColumnTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRScrollBarDisplayPolicy, (String*)ScrollBarDisplayPolicyNames, NULL, 
Packit b099d7
    XtNumber(ScrollBarDisplayPolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ScrollBarIncrementDownOrRightActionParam", /* See instructions above. */
Packit b099d7
    (String*)ScrollBarIncrementDownOrRightActionParamNames,
Packit b099d7
    NULL, XtNumber(ScrollBarIncrementDownOrRightActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ScrollBarIncrementUpOrLeftActionParam", /* See instructions above. */
Packit b099d7
    (String*)ScrollBarIncrementUpOrLeftActionParamNames,
Packit b099d7
    NULL, XtNumber(ScrollBarIncrementUpOrLeftActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ScrollBarPageDownOrRightActionParam", /* See instructions above. */
Packit b099d7
    (String*)ScrollBarPageDownOrRightActionParamNames,
Packit b099d7
    NULL, XtNumber(ScrollBarPageDownOrRightActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "ScrollBarPageUpOrLeftActionParam", /* See instructions above. */
Packit b099d7
    (String*)ScrollBarPageUpOrLeftActionParamNames,
Packit b099d7
    NULL, XtNumber(ScrollBarPageUpOrLeftActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRScrollBarPlacement, (String*)ScrollBarPlacementNames, NULL, 
Packit b099d7
    XtNumber(ScrollBarPlacementNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRScrolledWindowChildType, (String*)ScrolledWindowChildTypeNames, NULL, 
Packit b099d7
    XtNumber(ScrolledWindowChildTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRScrollingPolicy, (String*)ScrollingPolicyNames, NULL, 
Packit b099d7
    XtNumber(ScrollingPolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "SelectionBoxUpOrDownActionParam", /* See instructions above. */
Packit b099d7
    (String*)SelectionBoxUpOrDownActionParamNames,
Packit b099d7
    NULL, XtNumber(SelectionBoxUpOrDownActionParamNames), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSelectionMode, (String*)SelectionModeNames, NULL, 
Packit b099d7
    XtNumber(SelectionModeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSelectionPolicy, (String*)SelectionPolicyNames, NULL, 
Packit b099d7
    XtNumber(SelectionPolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSelectionTechnique, (String*)SelectionTechniqueNames, NULL, 
Packit b099d7
    XtNumber(SelectionTechniqueNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSelectionType, (String*)SelectionTypeNames, NULL, 
Packit b099d7
    XtNumber(SelectionTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSeparatorType, (String*)SeparatorTypeNames, NULL, 
Packit b099d7
    XtNumber(SeparatorTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSet, (String*)SetNames, (unsigned char *)SetMap, 
Packit b099d7
    XtNumber(SetNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRShadowType, (String*)ShadowTypeNames, (unsigned char *)ShadowTypeMap,
Packit b099d7
    XtNumber(ShadowTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRShowArrows, (String*)ShowArrowsNames, (unsigned char *)ShowArrowsMap,
Packit b099d7
    XtNumber(ShowArrowsNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRShowValue, (String*)ShowValueNames, (unsigned char *)ShowValueMap,
Packit b099d7
    XtNumber(ShowValueNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSliderMark, (String*)SliderMarkNames, NULL, 
Packit b099d7
    XtNumber(SliderMarkNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSliderVisual, (String*)SliderVisualNames, NULL, 
Packit b099d7
    XtNumber(SliderVisualNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSlidingMode, (String*)SlidingModeNames, NULL, 
Packit b099d7
    XtNumber(SlidingModeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSpatialIncludeModel, (String*)SpatialIncludeModelNames, NULL, 
Packit b099d7
    XtNumber(SpatialIncludeModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSpatialResizeModel, (String*)SpatialResizeModelNames, NULL, 
Packit b099d7
    XtNumber(SpatialResizeModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSpatialSnapModel, (String*)SpatialSnapModelNames, NULL, 
Packit b099d7
    XtNumber(SpatialSnapModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSpatialStyle, (String*)SpatialStyleNames, NULL, 
Packit b099d7
    XtNumber(SpatialStyleNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRSpinBoxChildType, (String*)SpinBoxChildTypeNames, 
Packit b099d7
    (unsigned char *)SpinBoxChildTypeMap,
Packit b099d7
    XtNumber(SpinBoxChildTypeNames),  FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRStringDirection, (String*)StringDirectionNames, NULL, 
Packit b099d7
    XtNumber(StringDirectionNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRTearOffModel, (String*)TearOffModelNames, NULL, 
Packit b099d7
    XtNumber(TearOffModelNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "TextExtendMovementActionParam", /* See instructions above. */
Packit b099d7
    (String*)TextExtendMovementActionParamNames, NULL,
Packit b099d7
    XtNumber(TextExtendMovementActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "TextFieldDirectionActionParam", /* See instructions above. */
Packit b099d7
    (String*)TextFieldDirectionActionParamNames, NULL,
Packit b099d7
    XtNumber(TextFieldDirectionActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "TextFieldExtendMovementActionParam", /* See instructions above. */
Packit b099d7
    (String*)TextFieldExtendMovementActionParamNames, NULL,
Packit b099d7
    XtNumber(TextFieldExtendMovementActionParamNames ), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "TextHorizontalDirectionActionParam", /* See instructions above. */
Packit b099d7
    (String*)TextHorizontalDirectionActionParamNames, NULL,
Packit b099d7
    XtNumber(TextHorizontalDirectionActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    "TextVerticalDirectionActionParam", /* See instructions above. */
Packit b099d7
    (String*)TextVerticalDirectionActionParamNames, NULL,
Packit b099d7
    XtNumber(TextVerticalDirectionActionParamNames ), TRUE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRToggleMode, (String*)ToggleModeNames, NULL, 
Packit b099d7
    XtNumber(ToggleModeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRUnitType, (String*)UnitTypeNames, NULL, 
Packit b099d7
    XtNumber(UnitTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRUnpostBehavior, (String*)UnpostBehaviorNames, NULL, 
Packit b099d7
    XtNumber(UnpostBehaviorNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRVerticalAlignment, (String*)VerticalAlignmentNames, NULL, 
Packit b099d7
    XtNumber(VerticalAlignmentNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRViewType, (String*)ViewTypeNames, NULL, 
Packit b099d7
    XtNumber(ViewTypeNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRVisualEmphasis, (String*)VisualEmphasisNames, NULL, 
Packit b099d7
    XtNumber(VisualEmphasisNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRVisualPolicy, (String*)VisualPolicyNames, NULL, 
Packit b099d7
    XtNumber(VisualPolicyNames), FALSE,
Packit b099d7
  },
Packit b099d7
  {
Packit b099d7
    XmRWhichButton, (String*)WhichButtonNames, (unsigned char *)WhichButtonMap,
Packit b099d7
    XtNumber(WhichButtonNames),  FALSE,
Packit b099d7
  },    
Packit b099d7
  {
Packit b099d7
    XmRPixmapPlacement, (String*)PixmapPlacementNames, (unsigned char *)PixmapPlacementMap,
Packit b099d7
    XtNumber(PixmapPlacementNames), FALSE,
Packit b099d7
  }
Packit b099d7
} ;
Packit b099d7
Packit b099d7
static XmConst Cardinal StandardNumRecs = XtNumber( StandardRepTypes );
Packit b099d7
static XmRepTypeEntryRec *DynamicRepTypes = NULL;
Packit b099d7
static Cardinal DynamicRepTypeNumRecords = 0;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
static String *
Packit b099d7
CopyStringArray(
Packit b099d7
		String *StrArray,
Packit b099d7
                unsigned char NumEntries,
Packit b099d7
                Boolean UppercaseFormat)
Packit b099d7
{   
Packit b099d7
    unsigned int Index ;
Packit b099d7
    String * TmpStr ;
Packit b099d7
    int PrefixSize = 0 ;
Packit b099d7
Packit b099d7
    TmpStr = (String *) XtMalloc((NumEntries + 1) * sizeof(String));
Packit b099d7
    TmpStr[NumEntries] = NULL ;
Packit b099d7
Packit b099d7
    if (UppercaseFormat) PrefixSize = 2 ;
Packit b099d7
   
Packit b099d7
    Index = 0 ;
Packit b099d7
    while(Index < NumEntries)
Packit b099d7
      {   
Packit b099d7
	 TmpStr[Index] = XtMalloc(PrefixSize + strlen(StrArray[Index]) + 1);
Packit b099d7
	 strcpy(TmpStr[Index] + PrefixSize, StrArray[Index]);
Packit b099d7
	 Index ++ ;
Packit b099d7
      } 
Packit b099d7
Packit b099d7
    if (UppercaseFormat) {   
Packit b099d7
	Index = 0 ;
Packit b099d7
	while( Index < NumEntries)
Packit b099d7
	    {   
Packit b099d7
		Cardinal i ;
Packit b099d7
Packit b099d7
		TmpStr[Index][0] = 'X' ;
Packit b099d7
		TmpStr[Index][1] = 'm' ;
Packit b099d7
		i = 2 ;
Packit b099d7
		while (TmpStr[Index][i]) {
Packit b099d7
		    if (islower(TmpStr[Index][i]))
Packit b099d7
			TmpStr[Index][i] = toupper(TmpStr[Index][i]);
Packit b099d7
		    i++;
Packit b099d7
		}
Packit b099d7
		++Index ;
Packit b099d7
            } 
Packit b099d7
    } 
Packit b099d7
Packit b099d7
    return( TmpStr) ;
Packit b099d7
} 
Packit b099d7
Packit b099d7
Packit b099d7
static void
Packit b099d7
CopyRecord(
Packit b099d7
	   XmRepTypeEntry OutputEntry,
Packit b099d7
	   String rep_type_name,
Packit b099d7
	   String *value_names,
Packit b099d7
	   unsigned char *values,
Packit b099d7
	   unsigned char num_values,
Packit b099d7
	   Boolean reverse_installed,
Packit b099d7
	   XmRepTypeId rep_type_id,
Packit b099d7
	   Boolean copy_in)
Packit b099d7
{   
Packit b099d7
    OutputEntry->rep_type_name = XtNewString(rep_type_name) ;
Packit b099d7
Packit b099d7
    OutputEntry->value_names = CopyStringArray(value_names, num_values,
Packit b099d7
					       False);
Packit b099d7
Packit b099d7
    /* only when the record is copied out to the app we want to
Packit b099d7
       create a array of consecutive values */
Packit b099d7
    if (values || !copy_in)
Packit b099d7
	OutputEntry->values = (unsigned char *) 
Packit b099d7
	    XtMalloc(sizeof(unsigned char)*num_values);
Packit b099d7
    else 
Packit b099d7
	OutputEntry->values = NULL;
Packit b099d7
    if (values) {
Packit b099d7
	memcpy(OutputEntry->values, values, (size_t)num_values);
Packit b099d7
    } else if (!copy_in) {
Packit b099d7
	Cardinal i ;
Packit b099d7
	for (i=0; i<num_values;i++) OutputEntry->values[i] = i ;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    OutputEntry->num_values = num_values ;
Packit b099d7
    OutputEntry->reverse_installed = reverse_installed ;
Packit b099d7
    OutputEntry->rep_type_id = rep_type_id ;
Packit b099d7
Packit b099d7
} 
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
static Boolean
Packit b099d7
ValuesConsecutiveStartingAtZero(
Packit b099d7
        unsigned char *values,
Packit b099d7
        unsigned char num_values)
Packit b099d7
{   
Packit b099d7
    if(    values    )
Packit b099d7
      {   while(    num_values--    )
Packit b099d7
	    {   if(    num_values != values[num_values]    )
Packit b099d7
		  {   return( FALSE) ;
Packit b099d7
		  } 
Packit b099d7
	      } 
Packit b099d7
        } 
Packit b099d7
    return( TRUE) ;
Packit b099d7
} 
Packit b099d7
Packit b099d7
Packit b099d7
static XmRepTypeEntry
Packit b099d7
GetRepTypeRecord(
Packit b099d7
     XmRepTypeId rep_type_id)
Packit b099d7
{   
Packit b099d7
    if (rep_type_id < StandardNumRecs) {
Packit b099d7
	return (XmRepTypeEntry) &StandardRepTypes[rep_type_id];
Packit b099d7
    } 
Packit b099d7
    if (rep_type_id < DynamicRepTypeNumRecords + StandardNumRecs) {
Packit b099d7
	return &DynamicRepTypes[rep_type_id - StandardNumRecs];
Packit b099d7
    }
Packit b099d7
Packit b099d7
    return (XmRepTypeEntry)NULL ;
Packit b099d7
} 
Packit b099d7
Packit b099d7
Packit b099d7
XmRepTypeId
Packit b099d7
XmRepTypeRegister(
Packit b099d7
        String rep_type_name,
Packit b099d7
        String *value_names,
Packit b099d7
        unsigned char *values,
Packit b099d7
#if NeedWidePrototypes
Packit b099d7
        unsigned int num_values)
Packit b099d7
#else
Packit b099d7
        unsigned char num_values)
Packit b099d7
#endif /* NeedWidePrototypes */
Packit b099d7
{     
Packit b099d7
    XmRepTypeEntry NewRecord ;
Packit b099d7
    XtConvertArgRec convertArg;
Packit b099d7
    XmRepTypeId reptype_id;
Packit b099d7
    
Packit b099d7
    if (!num_values || !rep_type_name || !value_names) 
Packit b099d7
	return( XmREP_TYPE_INVALID) ;
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    /** expand the dynamic table */
Packit b099d7
    DynamicRepTypes = (XmRepTypeList) 
Packit b099d7
	XtRealloc( (char *) DynamicRepTypes, (sizeof(XmRepTypeEntryRec) 
Packit b099d7
				* (DynamicRepTypeNumRecords + 1))) ;
Packit b099d7
Packit b099d7
   /** fill in the new record */
Packit b099d7
    NewRecord = &DynamicRepTypes[DynamicRepTypeNumRecords] ;
Packit b099d7
    
Packit b099d7
    /* the new reptype ID values are located after the standard ones */
Packit b099d7
            
Packit b099d7
    CopyRecord(NewRecord,
Packit b099d7
	       rep_type_name, value_names, 
Packit b099d7
	       (ValuesConsecutiveStartingAtZero( values, num_values)) ? 
Packit b099d7
	       NULL:values, 
Packit b099d7
	       num_values, False,
Packit b099d7
	       DynamicRepTypeNumRecords + StandardNumRecs,
Packit b099d7
	       True);
Packit b099d7
	       
Packit b099d7
Packit b099d7
    /** register the converter to Xt */
Packit b099d7
    convertArg.address_mode = XtImmediate;
Packit b099d7
    convertArg.address_id   = (XPointer)(long)NewRecord->rep_type_id;
Packit b099d7
    convertArg.size         = sizeof(convertArg.address_id);
Packit b099d7
Packit b099d7
    XtSetTypeConverter( XmRString, NewRecord->rep_type_name, ConvertRepType,
Packit b099d7
		       &convertArg, 1, XtCacheNone, NULL) ;
Packit b099d7
Packit b099d7
Packit b099d7
    DynamicRepTypeNumRecords++ ;
Packit b099d7
    reptype_id  = NewRecord->rep_type_id;
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    /*XmRepTypeAddReverse(reptype_id);*/
Packit b099d7
    return reptype_id;
Packit b099d7
}
Packit b099d7
Packit b099d7
void
Packit b099d7
XmRepTypeAddReverse(
Packit b099d7
#if NeedWidePrototypes
Packit b099d7
     int rep_type_id)
Packit b099d7
#else
Packit b099d7
     XmRepTypeId rep_type_id)
Packit b099d7
#endif
Packit b099d7
{     
Packit b099d7
Packit b099d7
    XtConvertArgRec convertArg;
Packit b099d7
    XmRepTypeEntry Record;
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    Record = GetRepTypeRecord( rep_type_id);
Packit b099d7
Packit b099d7
    if(    Record  &&  !Record->reverse_installed    )
Packit b099d7
      {   
Packit b099d7
	  convertArg.address_mode = XtImmediate;
Packit b099d7
	  convertArg.address_id   = (XPointer)(long)rep_type_id;
Packit b099d7
	  convertArg.size         = sizeof(convertArg.address_id);
Packit b099d7
	  XtSetTypeConverter( Record->rep_type_name, XmRString,
Packit b099d7
			     ReverseConvertRepType, &convertArg,
Packit b099d7
			     1, XtCacheNone, NULL) ;
Packit b099d7
	  Record->reverse_installed = TRUE ;
Packit b099d7
      } 
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    return ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Boolean
Packit b099d7
XmRepTypeValidValue(
Packit b099d7
#if NeedWidePrototypes
Packit b099d7
     int rep_type_id,
Packit b099d7
     unsigned int test_value,
Packit b099d7
#else
Packit b099d7
     XmRepTypeId rep_type_id,
Packit b099d7
     unsigned char test_value,
Packit b099d7
#endif
Packit b099d7
     Widget enable_default_warning)
Packit b099d7
{
Packit b099d7
    XmRepTypeEntry Record; 
Packit b099d7
    
Packit b099d7
    _XmProcessLock();
Packit b099d7
    Record = GetRepTypeRecord( rep_type_id);
Packit b099d7
    if (!Record) {   
Packit b099d7
	_XmProcessUnlock();
Packit b099d7
	if (enable_default_warning) {
Packit b099d7
	    XmeWarning(enable_default_warning, MESSAGE1);
Packit b099d7
	}
Packit b099d7
	return FALSE;
Packit b099d7
    } else {
Packit b099d7
	if (Record->values) {   
Packit b099d7
	    unsigned int Index;
Packit b099d7
	    for (Index=0; Index < Record->num_values; Index++ ) {
Packit b099d7
		if (Record->values[Index] == test_value) {
Packit b099d7
		    _XmProcessUnlock();
Packit b099d7
		    return(TRUE) ;
Packit b099d7
		}
Packit b099d7
	    }
Packit b099d7
	} else if (test_value < Record->num_values) { 
Packit b099d7
	    _XmProcessUnlock();
Packit b099d7
	    return (TRUE) ;
Packit b099d7
	}
Packit b099d7
	if (enable_default_warning) {   
Packit b099d7
	    char *params[2];
Packit b099d7
	    params[0] = (char *)(long)test_value;
Packit b099d7
	    params[1] = Record->rep_type_name;
Packit b099d7
	    _XmProcessUnlock();
Packit b099d7
	    _XmWarningMsg(enable_default_warning, "illegalRepTypeValue", 
Packit b099d7
			  MESSAGE2, params, 2) ;
Packit b099d7
	    return FALSE;
Packit b099d7
	} 
Packit b099d7
    }
Packit b099d7
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    return FALSE ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
XmRepTypeList
Packit b099d7
XmRepTypeGetRegistered( void )
Packit b099d7
{
Packit b099d7
    unsigned int TotalEntries ;
Packit b099d7
    XmRepTypeList OutputList ;
Packit b099d7
    unsigned int Index ;
Packit b099d7
Packit b099d7
    /* Total up the data sizes of the static and run-time lists. */
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    TotalEntries = StandardNumRecs + DynamicRepTypeNumRecords ;
Packit b099d7
Packit b099d7
    OutputList = (XmRepTypeList) 
Packit b099d7
	XtMalloc((TotalEntries + 1)  * sizeof(XmRepTypeEntryRec)) ;
Packit b099d7
Packit b099d7
Packit b099d7
    for ( Index = 0; Index < StandardNumRecs; Index++ )
Packit b099d7
      { 
Packit b099d7
	  XmRepTypeEntry Record = (XmRepTypeEntry) &(StandardRepTypes[Index]);
Packit b099d7
Packit b099d7
	  CopyRecord(&(OutputList[Index]),
Packit b099d7
		     Record->rep_type_name, Record->value_names, 
Packit b099d7
		     Record->values, Record->num_values,
Packit b099d7
		     Record->reverse_installed, Index,
Packit b099d7
		     False) ;
Packit b099d7
      }
Packit b099d7
Packit b099d7
    for ( Index = 0; Index < DynamicRepTypeNumRecords; Index++ )
Packit b099d7
      { 
Packit b099d7
	  XmRepTypeEntry Record = &(DynamicRepTypes[Index]) ;
Packit b099d7
Packit b099d7
	  CopyRecord(&(OutputList[StandardNumRecs + Index]),
Packit b099d7
		     Record->rep_type_name, Record->value_names, 
Packit b099d7
		     Record->values, Record->num_values,
Packit b099d7
		     Record->reverse_installed, Index + StandardNumRecs,
Packit b099d7
		     False) ;
Packit b099d7
      }
Packit b099d7
Packit b099d7
    OutputList[TotalEntries].rep_type_name = NULL ;
Packit b099d7
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    return(OutputList) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
XmRepTypeEntry
Packit b099d7
XmRepTypeGetRecord(
Packit b099d7
#if NeedWidePrototypes
Packit b099d7
        int rep_type_id)
Packit b099d7
#else
Packit b099d7
        XmRepTypeId rep_type_id)
Packit b099d7
#endif
Packit b099d7
{
Packit b099d7
    XmRepTypeEntry Record; 
Packit b099d7
    XmRepTypeEntry OutputRecord ;
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    Record = GetRepTypeRecord( rep_type_id);
Packit b099d7
    if(    Record    )
Packit b099d7
      {   
Packit b099d7
	  OutputRecord = (XmRepTypeEntry) 
Packit b099d7
	      XtMalloc(sizeof( XmRepTypeEntryRec)) ;
Packit b099d7
	  
Packit b099d7
	  CopyRecord(OutputRecord,
Packit b099d7
		     Record->rep_type_name, Record->value_names, 
Packit b099d7
		     Record->values, Record->num_values,
Packit b099d7
		     Record->reverse_installed, rep_type_id,
Packit b099d7
		     False) ;
Packit b099d7
Packit b099d7
	  _XmProcessUnlock();
Packit b099d7
	  return( OutputRecord) ;
Packit b099d7
      } 
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    return( NULL) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
XmRepTypeId
Packit b099d7
XmRepTypeGetId(
Packit b099d7
        String rep_type_name)
Packit b099d7
{
Packit b099d7
    Cardinal Index ;
Packit b099d7
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    /* First look in the statically defined lists */
Packit b099d7
Packit b099d7
    /* Just an ordered search, could do better, but this routine
Packit b099d7
       is probably not be worth it */
Packit b099d7
Packit b099d7
    for ( Index = 0; Index < StandardNumRecs ; Index++ ) {
Packit b099d7
	int compare_name = strcmp(rep_type_name, 
Packit b099d7
				  StandardRepTypes[Index].rep_type_name ) ;
Packit b099d7
	if(compare_name == 0) {
Packit b099d7
		_XmProcessUnlock();
Packit b099d7
		return  Index;
Packit b099d7
	}
Packit b099d7
	else if (compare_name < 0) break ;
Packit b099d7
	
Packit b099d7
     }
Packit b099d7
Packit b099d7
Packit b099d7
    /* Not in the static list; look in the run-time list. */
Packit b099d7
    /* This one is not ordered: have to go thru */
Packit b099d7
    for ( Index = 0; Index < DynamicRepTypeNumRecords; Index++ ) {
Packit b099d7
Packit b099d7
	  if( !strcmp( rep_type_name, 
Packit b099d7
		      DynamicRepTypes[Index].rep_type_name )) {
Packit b099d7
	    _XmProcessUnlock();
Packit b099d7
	    return Index + StandardNumRecs ;
Packit b099d7
	  }
Packit b099d7
      }
Packit b099d7
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    return( XmREP_TYPE_INVALID) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
String *
Packit b099d7
XmRepTypeGetNameList(
Packit b099d7
#if NeedWidePrototypes
Packit b099d7
        int rep_type_id,
Packit b099d7
        int use_uppercase_format)
Packit b099d7
#else
Packit b099d7
        XmRepTypeId rep_type_id,
Packit b099d7
        Boolean use_uppercase_format)
Packit b099d7
#endif /* NeedWidePrototypes */
Packit b099d7
{
Packit b099d7
    XmRepTypeEntry Record;
Packit b099d7
    String *name_list = NULL;
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    Record = GetRepTypeRecord( rep_type_id);
Packit b099d7
    if(Record) {
Packit b099d7
	name_list = CopyStringArray(Record->value_names, Record->num_values,
Packit b099d7
				use_uppercase_format);
Packit b099d7
    } 
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
    return name_list;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static Boolean
Packit b099d7
ConvertRepType(
Packit b099d7
        Display *disp,
Packit b099d7
        XrmValue *args,
Packit b099d7
        Cardinal *n_args,	/* unused */
Packit b099d7
        XrmValue *from,
Packit b099d7
        XrmValue *to,
Packit b099d7
        XtPointer *converter_data) /* unused */
Packit b099d7
{  
Packit b099d7
    char *in_str = (char *) (from->addr) ;
Packit b099d7
    XtPointer argvalue = *((XtPointer*)args[0].addr);
Packit b099d7
    XmRepTypeId RepTypeID = (XmRepTypeId)(long)argvalue;
Packit b099d7
    XmRepTypeEntry Record; 
Packit b099d7
    Cardinal Index = 0 ;
Packit b099d7
    
Packit b099d7
    _XmProcessLock();
Packit b099d7
    Record = GetRepTypeRecord( RepTypeID);
Packit b099d7
    while(Index < Record->num_values) {   
Packit b099d7
Packit b099d7
	if(XmeNamesAreEqual( in_str, Record->value_names[Index])) {   
Packit b099d7
Packit b099d7
	    if ((RepTypeID == XmRID_EDIT_MODE) || 
Packit b099d7
		(RepTypeID == XmRID_WHICH_BUTTON) ||
Packit b099d7
		(RepTypeID == XmRID_FONT_TYPE))
Packit b099d7
	      { 
Packit b099d7
		/* special case for int sized fields */
Packit b099d7
Packit b099d7
		int conversion_buffer ;
Packit b099d7
		conversion_buffer = (int) 
Packit b099d7
		    ((Record->values) ? Record->values[Index] : Index) ;
Packit b099d7
Packit b099d7
		_XmProcessUnlock();
Packit b099d7
		_XM_CONVERTER_DONE (to, int, conversion_buffer, ;)
Packit b099d7
Packit b099d7
	     } else {
Packit b099d7
Packit b099d7
		unsigned char conversion_buffer  ;
Packit b099d7
		conversion_buffer = (unsigned char) 
Packit b099d7
		    ((Record->values) ? Record->values[Index] : Index) ;
Packit b099d7
Packit b099d7
		_XmProcessUnlock();
Packit b099d7
		_XM_CONVERTER_DONE (to, unsigned char, conversion_buffer, ;)
Packit b099d7
	     }
Packit b099d7
	}
Packit b099d7
	++Index ;
Packit b099d7
    }
Packit b099d7
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
     XtDisplayStringConversionWarning( disp, in_str, Record->rep_type_name);
Packit b099d7
    
Packit b099d7
    return( FALSE) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static Boolean
Packit b099d7
ReverseConvertRepType(
Packit b099d7
        Display *disp,
Packit b099d7
        XrmValue *args,
Packit b099d7
        Cardinal *n_args,	/* unused */
Packit b099d7
        XrmValue *from,
Packit b099d7
        XrmValue *to,
Packit b099d7
        XtPointer *converter_data) /* unused */
Packit b099d7
{   
Packit b099d7
    XtPointer argvalue = *(XtPointer *)args[0].addr;
Packit b099d7
    XmRepTypeId RepTypeID = (XmRepTypeId)(long)argvalue;
Packit b099d7
    XmRepTypeEntry Record; 
Packit b099d7
    unsigned char in_value = *(unsigned char *) from->addr ;
Packit b099d7
    unsigned short NumValues;
Packit b099d7
    char **OutValue = NULL ;
Packit b099d7
    String in_str ;
Packit b099d7
    String reverse_message = MESSAGE0 ;
Packit b099d7
Packit b099d7
    _XmProcessLock();
Packit b099d7
    Record = GetRepTypeRecord( RepTypeID);
Packit b099d7
    NumValues = Record->num_values;
Packit b099d7
Packit b099d7
    if(Record->values)  {   /* mapped type */
Packit b099d7
	  unsigned short Index = 0 ;
Packit b099d7
Packit b099d7
	  while(Index < NumValues    )  {   
Packit b099d7
		if(in_value == Record->values[Index]    )
Packit b099d7
		  {   
Packit b099d7
		      OutValue = (char **) &Record->value_names[Index] ;
Packit b099d7
		      break ;
Packit b099d7
		  }
Packit b099d7
		++Index ;
Packit b099d7
            } 
Packit b099d7
      } else {
Packit b099d7
	  if(    in_value < NumValues    ) 
Packit b099d7
	    {   
Packit b099d7
		OutValue = (char **) &Record->value_names[in_value] ;
Packit b099d7
            } 
Packit b099d7
      } 
Packit b099d7
Packit b099d7
    
Packit b099d7
    _XmProcessUnlock();
Packit b099d7
#if 0
Packit b099d7
    if (OutValue)  _XM_CONVERTER_DONE (to, String, *OutValue, ;)
Packit b099d7
#else
Packit b099d7
    if (OutValue)
Packit b099d7
    {
Packit b099d7
	if (to->addr)
Packit b099d7
	{
Packit b099d7
	    if (to->size < sizeof(String))
Packit b099d7
	    {
Packit b099d7
		to->size = sizeof(String);
Packit b099d7
	    	return(False);
Packit b099d7
	    }
Packit b099d7
	    else
Packit b099d7
	    {
Packit b099d7
		to->addr = (XtPointer)*OutValue;
Packit b099d7
	    }
Packit b099d7
	}
Packit b099d7
	else
Packit b099d7
	{
Packit b099d7
	    to->addr = (XtPointer)OutValue;
Packit b099d7
	}
Packit b099d7
	to->size = sizeof(String);
Packit b099d7
	return(True);
Packit b099d7
    }
Packit b099d7
#endif
Packit b099d7
 
Packit b099d7
Packit b099d7
	/** generate a message and display it */
Packit b099d7
    in_str = (char *) XtMalloc (strlen(reverse_message) + 10) ;
Packit b099d7
    sprintf(in_str, "%s %d", reverse_message, in_value);
Packit b099d7
Packit b099d7
    XtDisplayStringConversionWarning( disp, in_str, Record->rep_type_name) ;
Packit b099d7
Packit b099d7
    return( FALSE) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
void
Packit b099d7
_XmRepTypeInstallConverters( void )
Packit b099d7
{   
Packit b099d7
    unsigned short Index = XmRID_UNIT_TYPE ;
Packit b099d7
    XtConvertArgRec convertArg;
Packit b099d7
Packit b099d7
    /* in order to be able to implement the XmCvtStringToUnitType
Packit b099d7
       converter as using the native code in RepType, we must
Packit b099d7
       have a different unit type converter name to refer to from
Packit b099d7
       ResConvert.c when calling XtConvertAndStore */
Packit b099d7
    convertArg.address_mode = XtImmediate;
Packit b099d7
    convertArg.address_id   = (XPointer)(long)Index;
Packit b099d7
    convertArg.size         = sizeof(convertArg.address_id);
Packit b099d7
    XtSetTypeConverter(XmRString, 
Packit b099d7
		       REAL_UNIT_TYPE_NAME,
Packit b099d7
		       ConvertRepType, &convertArg, 1,
Packit b099d7
		       XtCacheNone, NULL) ;
Packit b099d7
Packit b099d7
    /* Install the static consecutive-valued converters. */
Packit b099d7
    for ( Index = 0; Index < StandardNumRecs; Index ++ ) {
Packit b099d7
      
Packit b099d7
      /* Special case the record used for the action param, where
Packit b099d7
	 we don't need to install the converter. For these, we
Packit b099d7
	 have used the reverse_installed field set to True to
Packit b099d7
	 notify this routine not to install them */
Packit b099d7
      if (StandardRepTypes[Index].reverse_installed) continue ;
Packit b099d7
Packit b099d7
      /* only update the index data, the other field are already good */
Packit b099d7
      convertArg.address_id = (XPointer)(long)Index;
Packit b099d7
Packit b099d7
      XtSetTypeConverter(XmRString, 
Packit b099d7
			 StandardRepTypes[Index].rep_type_name,
Packit b099d7
			 ConvertRepType, &convertArg, 1,
Packit b099d7
			 XtCacheNone, NULL) ;
Packit b099d7
     XmRepTypeAddReverse(Index);
Packit b099d7
    } 
Packit b099d7
}
Packit b099d7
Packit b099d7
void
Packit b099d7
XmRepTypeInstallTearOffModelConverter( void )
Packit b099d7
{
Packit b099d7
  /* Obsolete,  we now do this by default */
Packit b099d7
}
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * Given a rep_type_id and a string parameter, this function tries to
Packit b099d7
 * find the reptype value for that string. The resulting reptype value is
Packit b099d7
 * returned in result.  For backwards compatibility, the string parameter
Packit b099d7
 * for some actions could be a numeric rather than an alphabetic string
Packit b099d7
 * (i.e. "0"). If an action parameter reptype is able to accept a
Packit b099d7
 * numeric, then pass True for the can_be_numeric parameter. This will
Packit b099d7
 * cause the function to first parse the string as a numeric. If it
Packit b099d7
 * succeeds in doing so, it checks to verify that the value is a valid
Packit b099d7
 * value for the given reptype. If it can't parse the string as a
Packit b099d7
 * numeric, it tries to do the rep type lookup. If both fail, it returns
Packit b099d7
 * False and does not set result. If either succeeds, it returns True and
Packit b099d7
 * sets the result parameter to be the resulting numeric value. The
Packit b099d7
 * widget parameter is used by various warning message functions so any
Packit b099d7
 * widget may be passed.
Packit b099d7
 */
Packit b099d7
Packit b099d7
Boolean
Packit b099d7
_XmConvertActionParamToRepTypeId(Widget widget, XmRepTypeId rep_type_id,
Packit b099d7
				 char *parameter, Boolean can_be_numeric,
Packit b099d7
				 int *result)
Packit b099d7
{
Packit b099d7
    int value, i;
Packit b099d7
    XtPointer aligned_value;
Packit b099d7
    XrmValue args, from, to;
Packit b099d7
Packit b099d7
    /* If the parameter can be numeric (for backward compatibility) then
Packit b099d7
       try to convert the parameter to a number */
Packit b099d7
    if (can_be_numeric)
Packit b099d7
    {
Packit b099d7
	value = i = 0;
Packit b099d7
	while (isspace(parameter[i])) ++i; /* skip leading white space */
Packit b099d7
	if (isdigit(parameter[i]))
Packit b099d7
	{
Packit b099d7
	    value = atoi(parameter + i);
Packit b099d7
	    /* If the number was converted, verify that it is a valid value
Packit b099d7
	       for the reptype. If so return it in the result argument and
Packit b099d7
	       return True. Otherwise, don't set the result argument and
Packit b099d7
	       return False. */
Packit b099d7
	    if (XmRepTypeValidValue(rep_type_id, value, widget))
Packit b099d7
	    {
Packit b099d7
		*result = value;
Packit b099d7
		return(True);
Packit b099d7
	    }
Packit b099d7
	    return(False);
Packit b099d7
	}
Packit b099d7
    }
Packit b099d7
Packit b099d7
    /* If we made it this far, then the parameter can't be numeric or can
Packit b099d7
       be numeric but we were unable to parse it as such. Try to convert
Packit b099d7
       the parameter via the rep type converters. */
Packit b099d7
    args.size = sizeof(rep_type_id);
Packit b099d7
    aligned_value = (XtPointer)(long)(rep_type_id);
Packit b099d7
    args.addr = (char*)(&aligned_value);
Packit b099d7
    from.size = sizeof(char *);
Packit b099d7
    from.addr = parameter;
Packit b099d7
    to.size = sizeof(unsigned char);
Packit b099d7
    to.addr = (XPointer) &value;
Packit b099d7
Packit b099d7
    if (ConvertRepType(XtDisplay(widget), &args, NULL, &from, &to, NULL))
Packit b099d7
    {
Packit b099d7
	/* We converted okay. Set up result and return True. */
Packit b099d7
	*result = *((unsigned char *)(to.addr));
Packit b099d7
	return(True);
Packit b099d7
    }
Packit b099d7
Packit b099d7
    /* All conversions failed. Just return False. */
Packit b099d7
    return(False);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
#ifdef DEBUG
Packit b099d7
void _XmCheckStandardNumRecs() {
Packit b099d7
    Cardinal Index ;
Packit b099d7
    XmRepTypeEntry Record, PrevRecord = NULL ;
Packit b099d7
Packit b099d7
    for ( Index = 0; Index < StandardNumRecs; Index++ )
Packit b099d7
      { 
Packit b099d7
	  Record = &(StandardRepTypes[Index]) ;
Packit b099d7
Packit b099d7
	  printf("Record[%d]: %s", Index, Record->rep_type_name) ;
Packit b099d7
	  if (PrevRecord)
Packit b099d7
	      if (strcmp(Record->rep_type_name,
Packit b099d7
			 PrevRecord->rep_type_name) <= 0) 
Packit b099d7
		  printf(" ** UNSORTED ENTRY **");
Packit b099d7
	  printf("\n");
Packit b099d7
Packit b099d7
	  PrevRecord = Record ;
Packit b099d7
Packit b099d7
      }
Packit b099d7
}
Packit b099d7
Packit b099d7
#endif