Macro: INITIALIZE_INTERFACE

Module location: FMAC line 3407 (view source)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Command: INITIALIZE_INTERFACE Parameters: None. Description: INITIALIZE_INTERFACE initializes the object resource information. It should be executed before any other object related operations are performed. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  // B$ obj_flag        bit 0 = in_object, bit 1 = in_class, bit 2 = in proc/func
  // X.AGG agg_count(class)     defined count of objects in class

  // ZA$ procedure/function label for procedures and functions
  // ZB$ current_dep        the current dependant number to assign
  // ZC$ current_message    the current flex message number
  // ZD$ group_size         size of the current item group
  // ZE$ group_id           unique id of current item group
  // ZF$ super_class_count  count of objects in superclass
  // ZG$ temp               temp counter (items, functions etc)
  // ZH$ access_method      the current access method identifyer
  // ZI$ sub_obj_count      the sub object counter
  // ZJ$ current_object     the current_object number

//  #SET ZC$ $400             // begin up high, past predefinded
  #SET ZC$ $1000            // now reserving 4K for predefined msgs

//  #SET ZH$ $4001          // begin access methods here
  #SET ZH$ $40000001        // now using 32-bit msg ids; allows for 256M objs

  #SET ZJ$ 2                // desktop and clipboard are first

  #REPLACE IS$NEW$FMAC |CI1 // indicates that this is the new fmac
//  #REPLACE IS$WINDOWS |CI1  // comment this to create character mode version

  #REPLACE MANGLE_NAMES              |CI1   // Adds name mangling.
  #REPLACE EXTENDED_DATA_TYPES       |CI1   // Adds extended data types.
  #IFNDEF SUPPORT$ADDRESS
    #IFDEF EXTENDED_DATA_TYPES
      #REPLACE SUPPORT$ADDRESS           |CI1
    #ENDIF
  #ENDIF
  //#REPLACE WINBASE_CONSOLIDATION     |CI1   // Moves messages into dfmsg.pkg


// Informational output to screen/printer/file.
// This information is essential to know whether things are right at compile time.

  #IFDEF IS$WINDOWS
    #REM FMAC FOR VISUAL DATAFLEX AND WEB APP STUDIO.
  #ELSE
    #REM FMAC FOR DATAFLEX CHARACTER MODE.
  #ENDIF

  #IFDEF MANGLE_NAMES
    #REM NAME MANGLING ENABLED!
  #ENDIF

  #IFDEF EXTENDED_DATA_TYPES
    #REM EXTENDED DATA TYPES ENABLED!
  #ENDIF

  // Current FMAC Version, Revision and Build
  #REPLACE FMAC_VERSION  |CI16
  #REPLACE FMAC_REVISION |CI1
  #REPLACE FMAC_BUILD    |CI81


#IFDEF IS$WINDOWS

  // Define object class types.
  #REPLACE U_cObject            |CI1    // Basic object support.
  #REPLACE U_cUIObject          |CI2    // UI Object

  // removed in 8.3 --- might have #replaces defined in dfbase.pkg
  //#REPLACE U_DESKTOP            |CI1    // a desktop class object - obsolete
  //#REPLACE U_BaseClass          |CI1    // a desktop class object - obsolete
  //#REPLACE U_MESSAGE            |CI2    // a message class object -obsolete

  #REPLACE U_cm_MENU            |CI3    // a menu class object
  #REPLACE U_cm_EDIT            |CI4    // a edit class object
  #REPLACE U_SCROLLB            |CI5    // a scroll bar class object
  #REPLACE U_cm_LIST            |CI6    // a list class object
  #REPLACE U_cm_BUTTON          |CI7    // a button class object
  #REPLACE U_cm_CHECKBOX        |CI8    // a check box class object
  #REPLACE U_cm_CHECKLIST       |CI9    // a check box class object
  #REPLACE U_cm_FORM            |CI10   // a form class object
  #REPLACE U_cm_FORMLIST        |CI11   // a form class object
  #REPLACE U_CLIENT             |CI12   // a client area class object
  #REPLACE U_cm_TITLE           |CI13   // a title bar class object
  #REPLACE U_cm_ACTION_BAR      |CI14   // a action bar class object
  #REPLACE U_cm_WARNING_MSG     |CI15   // a warning message class object
  #REPLACE U_cm_CRIT_MSG        |CI16   // a critical error class object
  #REPLACE U_cm_ERROR           |CI17   // a standard error class object
  #REPLACE U_cm_HELP            |CI18   // a help class object
  #REPLACE U_ARRAY              |CI19   // a array class of mixed scalars
  #REPLACE U_TRACE              |CI20   // a trace class object
  #REPLACE U_cm_ENTRY           |CI21   // a data entry class object
  #REPLACE U_cm_ENTRYLIST       |CI22   // a data entry class object
  #REPLACE U_cm_DIALOG          |CI23   // a DIALOG area class object
  #REPLACE U_cm_RADIO           |CI24   // a radio button area
  #REPLACE U_cm_RADIOLIST       |CI25   // a radio list  area
  #REPLACE U_cm_VCONSOLE        |CI26   // a virtual console area
  #REPLACE U_CLIPBOARD          |CI27   // the clipboard handler

  #REPLACE U_DFBaseObject                 |CI28
  #REPLACE U_DFBaseWindow                 |CI29
  #REPLACE U_DFBaseUIWindow               |CI30
  #REPLACE U_DFBaseContainer              |CI31
  #REPLACE U_DFBaseDialog                 |CI32
  #REPLACE U_DFBasePanel                  |CI33
  #REPLACE U_cDesktop                     |CI34  // prior to 8.3 this was dfBaseDesktop
  #REPLACE U_DFBaseControl                |CI35
  #REPLACE U_DFBaseMenu                   |CI36
  #REPLACE U_DFBaseButton                 |CI37
  #REPLACE U_DFBasePushButton             |CI38
  //#REPLACE U_DFComboButton                |CI39  // no longer exists
  #REPLACE U_DFBaseCheckBox               |CI40
  #REPLACE U_DFBaseRadioButton            |CI41
  #REPLACE U_DFBaseTriState               |CI42    // not supported at highlevel
  #REPLACE U_DFBaseForm                   |CI43
  #REPLACE U_DFBaseEntry                  |CI44
  //#REPLACE U_DFComboForm                  |CI45  // no longer exists
  #REPLACE U_DFBaseList                   |CI46
  #REPLACE U_DFBaseFormList               |CI47
  #REPLACE U_DFBaseCheckList              |CI48    // not used
  #REPLACE U_DFBaseRadioList              |CI49    // not used
  #REPLACE U_DFBaseEntryList              |CI50    // not used
  #REPLACE U_DFBaseComboBox               |CI51
  #REPLACE U_DFBaseTriStateList           |CI52
  #REPLACE U_DFBasePushButtonList         |CI53
  #REPLACE U_DFBaseActionBar              |CI54
  #REPLACE U_DFBasePullDown               |CI55
  #REPLACE U_DFBaseSysMenu                |CI56
  #REPLACE U_DFBaseGroup                  |CI57
  #REPLACE U_DFBaseScrollBar              |CI58
  #REPLACE U_DFBaseHorzScrollBar          |CI59
  #REPLACE U_DFRubberBand                 |CI60   // no longer exists
  #REPLACE U_DFBaseTextBox                |CI61
  #REPLACE U_DFBaseEdit                   |CI62
  #REPLACE U_DFBaseSession                |CI63
  #REPLACE U_DFBaseDllSession             |CI64
  #REPLACE U_DFBaseSerial                 |CI65
  #REPLACE U_DFBaseLineForm               |CI66
  //#REPLACE U_DFVconsole                   |CI67  // no longer exists
  #REPLACE U_DFBaseToolPanel              |CI68
  #REPLACE U_DFBaseMapiSession            |CI69
  #REPLACE U_DFBaseImageList              |CI70
  #REPLACE U_DFBaseTabDialog              |CI71
  #REPLACE U_DFBaseToolBar                |CI72 // was dfbuttonbar
  #REPLACE U_DFBaseComboBoxEntry          |CI73
  #REPLACE U_DFBaseMdiClient              |CI74
  #REPLACE U_DFBaseListBox                |CI75
  #REPLACE U_DFBaseEditPulldown           |CI76
  #REPLACE U_DFBaseLineControl            |CI77

  // inet classes
  #REPLACE U_INETTRANSFER                 |CI78
  #REPLACE U_CFTPTRANSFER                 |CI79
  #REPLACE U_CBASEHTTPTRANSFER            |CI80


  // XML Classes
  #REPLACE U_BaseXMLDOMNODE               |CI81
  #REPLACE U_BaseXMLDOMNODELIST           |CI82
  #REPLACE U_BaseXMLDOMNAMEDNODEMAP       |CI83
  #REPLACE U_BaseXMLDOMPARSEERROR         |CI84
  #REPLACE U_BaseXMLDOMIMPLEMENTATION     |CI85
  #REPLACE U_BaseXMLDOMDOCUMENTFRAGMENT   |CI86
  #REPLACE U_BaseXMLDOMDOCUMENT           |CI87
  #REPLACE U_BaseXMLDOMCHARACTERDATA      |CI88
  #REPLACE U_BaseXMLDOMTEXTNODE           |CI89
  #REPLACE U_BaseXMLDOMCDATASECTION       |CI90
  #REPLACE U_BaseXMLDOMCOMMENT            |CI91
  #REPLACE U_BaseXMLDOMATTRIBUTE          |CI92
  #REPLACE U_BaseXMLDOMELEMENT            |CI93
  #REPLACE U_BaseXMLDOMPROCESSINGINSTRUCTION    |CI94
  #REPLACE U_BaseXMLDOMDOCUMENTTYPE       |CI95
  #REPLACE U_BaseXMLDOMNOTATION           |CI96
  #REPLACE U_BaseXMLDOMENTITY             |CI97
  #REPLACE U_BaseXMLDOMENTITYREFERENCE    |CI98

  #REPLACE U_CBASEWEBSERVICE              |CI00105

  // flexcom2 runtime classes

  #REPLACE U_DFCOMAUTOMATIONOBJECT        |CI107
  #REPLACE U_DFCOMDOCUMENTOBJECT          |CI108
  #REPLACE U_DFCOMACTIVEXCONTROL          |CI109
  #REPLACE U_DFCOMDESIGNCONTROL           |CI110
  #REPLACE U_DFCOMIDISPATCHDRIVER         |CI111

  #REPLACE U_DFBaseRichEdit               |CI112 // added 11.0
  #REPLACE U_DFBaseTextEdit               |CI113 // added 11.0

  #Replace U_cIdleHandler                 |CI128  // added 12.1


#ELSE

  // character mode class defintions

  // Define object class types.
  #REPLACE U_DESKTOP            |CI1    // a desktop class object
  #REPLACE U_MESSAGE            |CI2    // a message class object
  #REPLACE U_MENU               |CI3    // a menu class object
  #REPLACE U_EDIT               |CI4    // a edit class object
  #REPLACE U_SCROLLB            |CI5    // a scroll bar class object
  #REPLACE U_LIST               |CI6    // a list class object
  #REPLACE U_BUTTON             |CI7    // a button class object
  #REPLACE U_CHECKBOX           |CI8    // a check box class object
  #REPLACE U_CHECKLIST          |CI9    // a check box class object
  #REPLACE U_FORM               |CI10   // a form class object
  #REPLACE U_FORMLIST           |CI11   // a form class object
  #REPLACE U_CLIENT             |CI12   // a client area class object
  #REPLACE U_TITLE              |CI13   // a title bar class object
  #REPLACE U_ACTION_BAR         |CI14   // a action bar class object
  #REPLACE U_WARNING_MSG        |CI15   // a warning message class object
  #REPLACE U_CRIT_MSG           |CI16   // a critical error class object
  #REPLACE U_ERROR              |CI17   // a standard error class object
  #REPLACE U_HELP               |CI18   // a help class object
  #REPLACE U_ARRAY              |CI19   // a array class of mixed scalars
  #REPLACE U_TRACE              |CI20   // a trace class object
  #REPLACE U_ENTRY              |CI21   // a data entry class object
  #REPLACE U_ENTRYLIST          |CI22   // a data entry class object
  #REPLACE U_DIALOG             |CI23   // a DIALOG area class object
  #REPLACE U_RADIO              |CI24   // a radio button area
  #REPLACE U_RADIOLIST          |CI25   // a radio list  area
  #REPLACE U_VCONSOLE           |CI26   // a virtual console area
  #REPLACE U_CLIPBOARD          |CI27   // the clipboard handler
#ENDIF

  // Base data structures
  #REPLACE MESSAGE_CLASS        |CI0
  #REPLACE MENU_CLASS           |CI1
  #REPLACE LIST_CLASS           |CI2
  #REPLACE EDIT_CLASS           |CI3
  #REPLACE SCROLL_CLASS         |CI4
  #REPLACE ARRAY_CLASS          |CI5


  // Define physical key names
  #REPLACE KEY_ALT              |VI$8200
  #REPLACE KEY_SHIFT            |VI$8400
  #REPLACE KEY_CTRL             |VI$8800

  #REPLACE KEY_ENTER            |VI$9001
  #REPLACE KEY_TAB              |VI$9002
  #REPLACE KEY_BACK_SPACE       |VI$9003
  #REPLACE KEY_ESCAPE           |VI$9004
  #REPLACE KEY_UP_ARROW         |VI$9005
  #REPLACE KEY_DOWN_ARROW       |VI$9006
  #REPLACE KEY_LEFT_ARROW       |VI$9007
  #REPLACE KEY_RIGHT_ARROW      |VI$9008
  #REPLACE KEY_HOME             |VI$9009
  #REPLACE KEY_END              |VI$900A
  #REPLACE KEY_PGUP             |VI$900B
  #REPLACE KEY_PGDN             |VI$900C
  #REPLACE KEY_INSERT           |VI$900D
  #REPLACE KEY_DELETE           |VI$900E
  #REPLACE KEY_F1               |VI$9010
  #REPLACE KEY_F2               |VI$9011
  #REPLACE KEY_F3               |VI$9012
  #REPLACE KEY_F4               |VI$9013
  #REPLACE KEY_F5               |VI$9014
  #REPLACE KEY_F6               |VI$9015
  #REPLACE KEY_F7               |VI$9016
  #REPLACE KEY_F8               |VI$9017
  #REPLACE KEY_F9               |VI$9018
  #REPLACE KEY_F10              |VI$9019
  #REPLACE KEY_F11              |VI$901A
  #REPLACE KEY_F12              |VI$901B
  #REPLACE KEY_A                |VI$8041
  #REPLACE KEY_B                |VI$8042
  #REPLACE KEY_C                |VI$8043
  #REPLACE KEY_D                |VI$8044
  #REPLACE KEY_E                |VI$8045
  #REPLACE KEY_F                |VI$8046
  #REPLACE KEY_G                |VI$8047
  #REPLACE KEY_H                |VI$8048
  #REPLACE KEY_I                |VI$8049
  #REPLACE KEY_J                |VI$804A
  #REPLACE KEY_K                |VI$804B
  #REPLACE KEY_L                |VI$804C
  #REPLACE KEY_M                |VI$804D
  #REPLACE KEY_N                |VI$804E
  #REPLACE KEY_O                |VI$804F
  #REPLACE KEY_P                |VI$8050
  #REPLACE KEY_Q                |VI$8051
  #REPLACE KEY_R                |VI$8052
  #REPLACE KEY_S                |VI$8053
  #REPLACE KEY_T                |VI$8054
  #REPLACE KEY_U                |VI$8055
  #REPLACE KEY_V                |VI$8056
  #REPLACE KEY_W                |VI$8057
  #REPLACE KEY_X                |VI$8058
  #REPLACE KEY_Y                |VI$8059
  #REPLACE KEY_Z                |VI$805A
  #REPLACE KEY_SPACE            |VI$8020
  #REPLACE KSPACE               |VI$8020
  #REPLACE KEY_0                |VI$8030
  #REPLACE KEY_1                |VI$8031
  #REPLACE KEY_2                |VI$8032
  #REPLACE KEY_3                |VI$8033
  #REPLACE KEY_4                |VI$8034
  #REPLACE KEY_5                |VI$8035
  #REPLACE KEY_6                |VI$8036
  #REPLACE KEY_7                |VI$8037
  #REPLACE KEY_8                |VI$8038
  #REPLACE KEY_9                |VI$8039
  #REPLACE KEY_PLUS             |VI$802B
  #REPLACE KEY_MINUS            |VI$802D
  #REPLACE KEY_EQUAL            |VI$803D
  #REPLACE KEY_BACK_SLASH       |VI$805C
  #REPLACE KEY_SLASH            |VI$802F

  // Define Accelerator key names.
  #REPLACE KHELP                |CI274
  #REPLACE KSAVE_RECORD         |CI265
  #REPLACE KDELETE_RECORD       |CI266
  #REPLACE KEXIT_FUNCTION       |CI281
  #REPLACE KEXIT_APPLICATION    |CI282
  #REPLACE KPROMPT              |CI283
  #REPLACE KPRINT_SCREEN        |CI258
  #REPLACE KCLEAR               |CI269
  #REPLACE KREFRESH_SCREEN      |CI284
  #REPLACE KSWITCH              |CI285
  #REPLACE KSWITCH_BACK         |CI286
  #REPLACE KFIND                |CI263
  #REPLACE KFIND_PREVIOUS       |CI270
  #REPLACE KFIND_NEXT           |CI271
  #REPLACE KSUPER_FIND          |CI264
  #REPLACE KSUPER_FIND_PREVIOUS |CI287
  #REPLACE KSUPER_FIND_NEXT     |CI288
  #REPLACE KACTION_BAR          |CI289
  #REPLACE KENTER               |CI257
  #REPLACE KUPARROW             |CI272
  #REPLACE KDOWNARROW           |CI273
  #REPLACE KLEFTARROW           |CI260
  #REPLACE KRIGHTARROW          |CI261
  #REPLACE KSCROLL_BACK         |CI290
  #REPLACE KSCROLL_FORWARD      |CI291
  #REPLACE KSCROLL_LEFT         |CI292
  #REPLACE KSCROLL_RIGHT        |CI293
  #REPLACE KBEGIN_OF_LINE       |CI294
  #REPLACE KEND_OF_LINE         |CI295
  #REPLACE KNEXT_ITEM           |CI296
  #REPLACE KPREVIOUS_ITEM       |CI262
  #REPLACE KDELETE_CHARACTER    |CI277
  #REPLACE KERASE_END_OF_LINE   |CI297
  #REPLACE KBACK_SPACE          |CI278
  #REPLACE KCANCEL              |CI259
  #REPLACE KBEGIN_OF_PANEL      |CI298
  #REPLACE KEND_OF_PANEL        |CI299
  #REPLACE KBEGIN_OF_DATA       |CI300
  #REPLACE KEND_OF_DATA         |CI301
  #REPLACE KWORD_LEFT           |CI302
  #REPLACE KWORD_RIGHT          |CI303
  #REPLACE KINSERT              |CI276
  #REPLACE KCLEAR_AND_RETURN    |CI279
  #REPLACE KADD_MODE            |CI304
  #REPLACE KPASTE               |CI305
  #REPLACE KCOPY                |CI306
  #REPLACE KCUT                 |CI307
  #REPLACE KCLEAR_ALL           |CI308
  #REPLACE KMOUSE               |CI309
  #REPLACE KMARK                |CI310
  #REPLACE KZOOM                |CI311
  #REPLACE KCLOSE_PANEL         |CI312

  //OLD KEY DEFINITIONS
  #REPLACE KCALCULATE           |CI267
  #REPLACE KUSER                |CI268
  #REPLACE KUSER2               |CI275
  #REPLACE KCLEOW               |CI280


  //#FREG |CI$01CE STRING PERCENTAGE RETURNS INTEGER

  #REPLACE DFLT$VALUE               __X__
  #REPLACE DFLT$MESSAGE             __X__
  #REPLACE DFLT$AUX_VALUE           __X__
  #REPLACE DFLT$SHADOW_STATE        __X__
  #REPLACE DFLT$SELECT_STATE        __X__
  #REPLACE DFLT$CHECKBOX_ITEM_STATE __X__
  #REPLACE DFLT$AUTOCLEAR_STATE     __X__
  #REPLACE DFLT$CENTER_STATE        __X__
  #REPLACE DFLT$ENTRY_STATE         __X__
  #REPLACE DFLT$ITEM_CHANGED_STATE  __X__
  #REPLACE DFLT$ITEM_ENTRY_MSG      __X__
  #REPLACE DFLT$ITEM_EXIT_MSG       __X__
  #REPLACE DFLT$ITEM_VALIDATE_MSG   __X__
  #REPLACE DFLT$DATA_FILE           __X__
  #REPLACE DFLT$DATA_FIELD          __X__
  #REPLACE DFLT$DATA_WINDOW         __X__
  #REPLACE DFLT$ITEM_OPTIONS        __X__
  #REPLACE DFLT$ITEM_OPTION         __X__
  #REPLACE DFLT$PROMPT_OBJECT       __X__
  #REPLACE DFLT$ZOOM_OBJECT         __X__

#IFDEF IS$WINDOWS

  // Define all Form properties that require an index (item). If the item parameter
  // is omitted item 0 is used as a default. This allows single item objects (e.g. Form)
  // to omit the item number. (e.g. Set Password_State to True).

  #REPLACE DFLT$FORM_WIDTH                 __F__
  #REPLACE DFLT$FORM_COLOR                 __F__
  #REPLACE DFLT$FORM_DATATYPE              __F__
  #REPLACE DFLT$FORM_OPTIONS               __F__
  #REPLACE DFLT$FORM_FONT                  __F__
  #REPLACE DFLT$FORM_ROW                   __F__
  #REPLACE DFLT$FORM_COLUMN                __F__
  #REPLACE DFLT$FORM_TYPEFACE              __F__
  #REPLACE DFLT$FORM_FONTHEIGHT            __F__
  #REPLACE DFLT$FORM_FONTWEIGHT            __F__
  #REPLACE DFLT$FORM_FONTITALICS           __F__
  #REPLACE DFLT$FORM_FONTUNDERLINE         __F__
  #REPLACE DFLT$BUTTON_ASPECT              __F__
  #REPLACE DFLT$FORM_HEIGHT                __F__
  #REPLACE DFLT$FORM_GUIWIDTH              __F__
  #REPLACE DFLT$FORM_GUIHEIGHT             __F__
  #REPLACE DFLT$FORM_GUIROW                __F__
  #REPLACE DFLT$FORM_GUICOLUMN             __F__
  #REPLACE DFLT$FORM_MARGIN                __F__
  #REPLACE DFLT$FORM_OPTION                __F__
  #REPLACE DFLT$FORM_STYLE                 __F__
  #REPLACE DFLT$FORM_EXTENDED_STYLE        __F__
  #REPLACE DFLT$FORM_BORDER                __F__
  #REPLACE DFLT$PASSWORD_STATE             __F__
  #REPLACE DFLT$FORM_MASK                  __F__
  #REPLACE DFLT$FORM_BUTTON                __F__
  #REPLACE DFLT$FORM_BUTTON_VALUE          __F__
  #REPLACE DFLT$FORM_WINDOW_HANDLE         __F__
  #REPLACE DFLT$FORM_BUTTON_WINDOW_HANDLE  __F__
  #REPLACE DFLT$MASKED_VALUE               __F__  // these are really form properties
  #REPLACE DFLT$UNMASKED_VALUE             __F__  // so if no param use 0
  #REPLACE DFLT$FORM_JUSTIFICATION_MODE    __F__

  // These are index (item or form) tem based properties that require two
  // parameters in the set statement following the "to". Please do not
  // create any more of these kinds of messages
  #REPLACE DFLT$2$ITEM_OPTION              __2__
  #REPLACE DFLT$2$FORM_COLOR               __2__
  #REPLACE DFLT$2$FORM_STYLE               __2__
  #REPLACE DFLT$2$FORM_EXTENDED_STYLE      __2__

#ENDIF



  //Reserve$Internal$Functions // this disallows these names to be used in
                             // in functions, properties or cts.
  #REPLACE FN$Abs                          __F__
  #REPLACE FN$Acos                         __F__
  #REPLACE FN$Append                       __F__
  #REPLACE FN$Ascii                        __F__
  #REPLACE FN$Asin                         __F__
  #REPLACE FN$Atan                         __F__
  #REPLACE FN$Center                       __F__
  #REPLACE FN$Character                    __F__
  #REPLACE FN$Cos                          __F__
  #REPLACE FN$Date                         __F__
  #REPLACE FN$Eval                         __F__
  #REPLACE FN$Exp                          __F__
  #REPLACE FN$Hi                           __F__
  #REPLACE FN$If                           __F__
  #REPLACE FN$Insert                       __F__
  #REPLACE FN$Integer                      __F__
  #REPLACE FN$Left                         __F__
  #REPLACE FN$Length                       __F__
  #REPLACE FN$Log                          __F__
  #REPLACE FN$Low                          __F__
  #REPLACE FN$Lowercase                    __F__
  #REPLACE FN$Ltrim                        __F__
  #REPLACE FN$Mid                          __F__
  #REPLACE FN$Mod                          __F__
  #REPLACE FN$Not                          __F__
  #REPLACE FN$Number                       __F__
  #REPLACE FN$Overstrike                   __F__
  #REPLACE FN$Pad                          __F__
  #REPLACE FN$Pos                          __F__
  #REPLACE FN$Random                       __F__
  #REPLACE FN$Real                         __F__
  #REPLACE FN$Remove                       __F__
  #REPLACE FN$Repeat                       __F__
  #REPLACE FN$Replace                      __F__
  #REPLACE FN$Replaces                     __F__
  #REPLACE FN$Right                        __F__
  #REPLACE FN$Round                        __F__
  #REPLACE FN$Rtrim                        __F__
  #REPLACE FN$Sin                          __F__
  #REPLACE FN$Sqrt                         __F__
  #REPLACE FN$String                       __F__
  #REPLACE FN$Tan                          __F__
  #REPLACE FN$Trim                         __F__
  #REPLACE FN$Uppercase                    __F__

  #IFDEF EXTENDED_DATA_TYPES
    #REPLACE FN$CurrentDateTime              __F__
    #REPLACE FN$DateGetDay                   __F__
    #REPLACE FN$DateGetDayofWeek             __F__
    #REPLACE FN$DateGetDayofYear             __F__
    #REPLACE FN$DateGetHour                  __F__
    #REPLACE FN$DateGetMinute                __F__
    #REPLACE FN$DateGetMonth                 __F__
    #REPLACE FN$DateGetSecond                __F__
    #REPLACE FN$DateGetYear                  __F__
    #REPLACE FN$DateSetDay                   __F__
    #REPLACE FN$DateSetHour                  __F__
    #REPLACE FN$DateSetMinute                __F__
    #REPLACE FN$DateSetMonth                 __F__
    #REPLACE FN$DateSetSecond                __F__
    #REPLACE FN$DateSetYear                  __F__
    #REPLACE FN$IsDateValid                  __F__
    #REPLACE FN$SpanDays                     __F__
    #REPLACE FN$SpanHours                    __F__
    #REPLACE FN$SpanMinutes                  __F__
    #REPLACE FN$SpanSeconds                  __F__
    #REPLACE FN$SpanTotalDays                __F__
    #REPLACE FN$SpanTotalHours               __F__
    #REPLACE FN$SpanTotalMinutes             __F__
    #REPLACE FN$SpanTotalSeconds             __F__
    #REPLACE FN$Addressof                    __F__
    #REPLACE FN$Cast                         __F__
    #REPLACE FN$Convert                      __F__
    #REPLACE FN$InvokeXML                    __F__
    //
    #REPLACE FN$Storec                       __F__
    #REPLACE FN$Storew                       __F__
    #REPLACE FN$Storedw                      __F__
    #REPLACE FN$Derefc                       __F__
    #REPLACE FN$Derefw                       __F__
    #REPLACE FN$Derefdw                      __F__
    #REPLACE FN$MemCopy                      __F__
    #REPLACE FN$MemSet                       __F__

    #REPLACE FN$IsSameCOMObject              __F__
    #REPLACE FN$IsNullCOMObject              __F__
    #REPLACE FN$NullCOMObject                __F__


    // 11.0 changes
    #REPLACE FN$FindByRowId                  __F__
    #REPLACE FN$GetRowId                     __F__
    #REPLACE FN$NullRowId                    __F__
    #REPLACE FN$IsNullRowId                  __F__
    #REPLACE FN$IsSameRowId                  __F__
    #REPLACE FN$SerializeRowId               __F__
    #REPLACE FN$DeSerializeRowId             __F__
    #REPLACE FN$SizeOfArray                  __F__
    #REPLACE FN$ResizeArray                  __F__
    #REPLACE FN$CStringLength                __F__
    #REPLACE FN$SizeOfType                   __F__ // size of any data type including structs

    // 11.1 changes
    #REPLACE FN$BinarySearchArray            __F__
    #REPLACE FN$CopyArray                    __F__
    #REPLACE FN$CountArray                   __F__
    #REPLACE FN$FillArray                    __F__
    #REPLACE FN$MinArray                     __F__
    #REPLACE FN$MaxArray                     __F__
    #REPLACE FN$ReverseArray                 __F__
    #REPLACE FN$SearchArray                  __F__
    #REPLACE FN$ShuffleArray                 __F__
    #REPLACE FN$SortArray                    __F__
    // 15.0 changes added post 15.0
    #REPLACE FN$RemoveFromArray              __F__
    #REPLACE FN$InsertInArray                __F__
    #REPLACE FN$RightPos                     __F__

  #ENDIF // is windows

    // Object commands
  #REPLACE OBJ$INIT         $0440
  #REPLACE OBJ$CREATE       $0441
  #REPLACE OBJ$ILIST        $0442
  #REPLACE OBJ$ITEM         $0443
  #REPLACE OBJ$ENDILIST     $0444
  #REPLACE OBJ$ACCLIST      $0445 // not used
  #REPLACE OBJ$ONKEY        $0446
  #REPLACE OBJ$ENDALIST     $0447 // not used
  #REPLACE OBJ$ENDDEFINE    $0448 // not used
  #REPLACE OBJ$IODISPATCH   $0449
  #REPLACE OBJ$SET          $044A
  #REPLACE OBJ$GET          $044B
  #REPLACE OBJ$SEND         $044C
  #REPLACE OBJ$FIX          $044D  // not used
  #REPLACE OBJ$END          $044E
  #REPLACE OBJ$FWDFIX       $044F  // not used
  #REPLACE OBJ$HRET         $0450
  #REPLACE OBJ$ITEM_EXEC    $0451
  #REPLACE OBJ$ACCEPT       $0452
  #REPLACE CREATE$CLASS     $0453
  #REPLACE HANDLE$FOR       $0454
  #REPLACE OBJ$END$HANDLER  $0455
  #REPLACE LOCAL$ARGUMENT   $0456
  #REPLACE FIND$OBJECT      $0457
  #REPLACE END$CLASS        $0458
  #REPLACE CREATE$SUB$PAGE  $0459
  #REPLACE CLONE$CLASS      $045A
  #REPLACE OBJ$ENTRY$ITEM   $045B
  #REPLACE MOVE$SUB$PAGE    $045C
  #REPLACE OBJ$TIMER        $045D
  #REPLACE SCREEN$OPT       $045E
  #REPLACE CREATE$PROPERTY  $045F
  #REPLACE REDEFINE$SUB$PAGE $0464

  //Focus modes:
  #REPLACE FOCUSABLE    |CI0
  #REPLACE NONFOCUSABLE |CI1
  #REPLACE POINTER_ONLY |CI2
  #REPLACE NO_ACTIVATE  |CI3

  //Search modes:
  #REPLACE FIRST_CHARACTER  |CI0
  #REPLACE INCREMENTAL      |CI1
  #REPLACE CAPITAL          |CI2
  #REPLACE NO_SEARCH        |CI3

  //Delegation modes:
  #REPLACE DELEGATE_TO_PARENT       |CI0
  #REPLACE NO_DELEGATE_OR_ERROR     |CI1
  #REPLACE NO_DELEGATION            |CI2
  #REPLACE RETURN_INVALID_MESSAGE   |CI3
  #REPLACE DELEGATE_PRIOR_LEVEL     |CI4

  //Location modes:
  #REPLACE ABSOLUTE         |CI0
  #REPLACE RELATIVE         |CI1
  #REPLACE ITEM_RELATIVE    |CI2

  //Sort modes:
  #REPLACE ASCENDING        |CI0
  #REPLACE DESCENDING       |CI1

  //Select Modes:
  #REPLACE NO_SELECT        |CI0
  #REPLACE SINGLE_SELECT    |CI1
  #REPLACE MULTI_SELECT     |CI2
  #REPLACE AUTO_SELECT      |CI3

  //Entry item options:
  #REPLACE IWINDOW          $C0A1
  #REPLACE IENTRY           $C0A2
  #REPLACE IEXIT            $C0A3
  #REPLACE IVALIDATE        $C0A4
  #REPLACE IZOOM            $C0A5
  #REPLACE IPROMPT          $C0A6

  //Import modes
  #REPLACE INHERIT          1
  #REPLACE NO_OVERWRITE     2

  //System integers
  #REPLACE CURRENT_OBJECT     |VI85
  #REPLACE SELF               |VI85  // as of 12.0 this is now part of fmac
  #REPLACE FORWARD$MESSAGE    |VI87
  #REPLACE CURRENT_MESSAGE    |VI88
  #REPLACE TOTAL_OBJECTS      |VI89

  // Define the desktop objects
  #REPLACE NULL_OBJECT          |CI0
  #REPLACE CLIPBOARD            |CI1
  #REPLACE CLIPBOARD.N          |CI0
  //#REPLACE DESKTOP              |CI2            // now defined in flex$init
  #REPLACE DESKTOP.N            |CI0
  //#REPLACE END_FUNCTION         END_PROCEDURE   // now defined in flex$init
  //#REPLACE PROCEDURE_RETURN     FUNCTION_RETURN // now defined in flex$init
  #REPLACE NO_IMAGE             |CI-9999

  #REPLACE CURRENT              |CI-99 //use current item#
  #REPLACE TOGGLE_STATE         |CI3   //toggle boolean state
  #REPLACE UPWARD_DIRECTION     |CI0   //scroll up
  #REPLACE DOWNWARD_DIRECTION   |CI1   //scroll down

//  #REPLACE GET_SCROLLBAR        |CI$4000
//  #REPLACE GET_CLIPBOARD        |CI$4001
//  #FREG |CI$4000 RETURNS INTEGER
//  #FREG |CI$4001 RETURNS INTEGER

// bumped up for 32-bit msg ids
  #REPLACE GET_SCROLLBAR        |CI$40000000
  #REPLACE GET_CLIPBOARD        |CI$40000001
  #FREG |CI$40000000 RETURNS INTEGER
  #FREG |CI$40000001 RETURNS INTEGER

  #REPLACE ERROR_OBJECT_ID      |VI100
  #REPLACE ERROR_TYPE           |VI101

  #REPLACE ERROR_CHILD_INHERITS_PARENT  |CI0
  #REPLACE ERROR_OFF_IN_CHILD           |CI1
  #REPLACE ERROR_DEFAULT_IN_CHILD       |CI2

  //deactivate search modes
  #REPLACE SCOPE_TYPE                   |CI1
  #REPLACE POPUP_TYPE                   |CI2
  #REPLACE AREA_TYPE                    |CI3

  //add_focus/activate/deactivate/release_focus error return codes
  #REPLACE ERROR_ENTERING               |CI1
  #REPLACE ERROR_EXITING                |CI2
  #REPLACE ERROR_ACTIVATING             |CI3
  #REPLACE ERROR_DEACTIVATING           |CI4
  #REPLACE ERROR_CANT_ACCEPT_FOCUS      |CI5
  #REPLACE ERROR_CANT_CREATE_TREE       |CI6
  #REPLACE ERROR_ADD_TO_INACTIVE_OBJECT |CI7
  #REPLACE ERROR_NO_FOCUSABLE_CHILDREN  |CI8

  // modes for peInNeighborHood
  #REPLACE nhNo         |CI0   // not a neighbor, check to see if parent is neighbor
  #REPLACE nhPublic     |CI1   // Is a neighbor hood, All descendant objects may address each other
  #REPLACE nhPrivate    |CI2   // Is a private neighborhood. descendants can not addres each other

  // alias data-types. These used to be in dll.pkg but are best defined here.
  #REPLACE Pointer Integer     // Parameter is a POINTER
  #REPLACE DWord Integer       // Parameter is a DWORD (32 bits)
  #REPLACE Handle DWord        // Parameter is a HANDLE (32 bits)
  #REPLACE Void_Type Integer   // Return type is  VOID

  // The following set of replacements define the type of load for the
  // DLL.  Each load type has the standard set of trade offs, speed
  // vs memory.  A lib that is loaded each time is probable the most memory
  // efficient, but suffers from load speed overhead.  However, large DLLs
  // that are retained in memory are not using system resources as
  // efficientry as possible.  Note that some DLLs are already in memory.
  // The Windows Kernel and USER libs are already loaded by Windows, and
  // do not take up more memory.
  // These are used by command SET_DEFAULT_CALLTYPE (which is actually rarely if ever used)

  #REPLACE LOAD_ON_EACH_USE |CI0     // Load and free on each call (slow)
  #REPLACE LOAD_LIBRARY     |CI1     // Load Lib on definition
  #REPLACE DELETE_ENTRY     |CI2     // Delete lib entry in reg DataBase
  #REPLACE FREE_LIBRARY     |CI4     // Free lib in Reg DataBase
  #REPLACE LOAD_ON_USE      |CI8     // Load lib on first use (call)




  #CHKSUB 1 1                   // Verify the UI subsystem.
  !A [] OBJ$INIT |CI0           // INITIALIZE_INTERFACE
  #FREF OBJ$DESK$NUM !a         // Number of desktop dependants