###############################################################################
# Copyright (c) 2000, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
org_eclipse_swt_internal_cde_CDE=
CDE_DtActionArg_sizeof=

CDE__DtActionInvoke=
CDE__DtActionInvoke_0=cast=Widget
CDE__DtActionInvoke_1=cast=char *
CDE__DtActionInvoke_2=
CDE__DtActionInvoke_3=
CDE__DtActionInvoke_4=cast=char *
CDE__DtActionInvoke_5=cast=char *
CDE__DtActionInvoke_6=cast=char *
CDE__DtActionInvoke_7=
CDE__DtActionInvoke_8=cast=DtActionCallbackProc
CDE__DtActionInvoke_9=cast=XtPointer

CDE__DtAppInitialize=
CDE__DtAppInitialize_0=cast=(XtAppContext)
CDE__DtAppInitialize_1=cast=(Display *)
CDE__DtAppInitialize_2=cast=Widget
CDE__DtAppInitialize_3=cast=(char *)
CDE__DtAppInitialize_4=cast=(char *)

CDE__DtDbLoad=

CDE__DtDtsDataTypeIsAction=
CDE__DtDtsDataTypeIsAction_0=cast=char *

CDE__DtDtsDataTypeNames=

CDE__DtDtsDataTypeToAttributeValue=
CDE__DtDtsDataTypeToAttributeValue_0=cast=char *
CDE__DtDtsDataTypeToAttributeValue_1=cast=char *
CDE__DtDtsDataTypeToAttributeValue_2=cast=char *

CDE__DtDtsFileToDataType=
CDE__DtDtsFileToDataType_0=cast=char *

CDE__DtDtsFreeAttributeValue=
CDE__DtDtsFreeAttributeValue_0=cast=char *

CDE__DtDtsFreeDataType=
CDE__DtDtsFreeDataType_0=cast=char *

CDE__DtDtsFreeDataTypeNames=
CDE__DtDtsFreeDataTypeNames_0=cast=char **

CDE__XtAppCreateShell=
CDE__XtAppCreateShell_0=cast=(String)
CDE__XtAppCreateShell_1=cast=(String)
CDE__XtAppCreateShell_2=cast=(WidgetClass)
CDE__XtAppCreateShell_3=cast=(Display *)
CDE__XtAppCreateShell_4=cast=(ArgList)
CDE__XtAppCreateShell_5=

CDE__XtCreateApplicationContext=

CDE__XtDisplayInitialize=
CDE__XtDisplayInitialize_0=cast=(XtAppContext)
CDE__XtDisplayInitialize_1=cast=(Display *)
CDE__XtDisplayInitialize_2=cast=(String)
CDE__XtDisplayInitialize_3=cast=(String)
CDE__XtDisplayInitialize_4=cast=(XrmOptionDescRec *)
CDE__XtDisplayInitialize_5=cast=(Cardinal)
CDE__XtDisplayInitialize_6=cast=(int *)
CDE__XtDisplayInitialize_7=cast=(String *)

CDE__XtRealizeWidget=
CDE__XtRealizeWidget_0=cast=(Widget)

CDE__XtResizeWidget=
CDE__XtResizeWidget_0=cast=(Widget)
CDE__XtResizeWidget_1=
CDE__XtResizeWidget_2=
CDE__XtResizeWidget_3=

CDE__XtSetMappedWhenManaged=
CDE__XtSetMappedWhenManaged_0=cast=(Widget)
CDE__XtSetMappedWhenManaged_1=

CDE__XtToolkitInitialize=

CDE__topLevelShellWidgetClass=flags=const


org_eclipse_swt_internal_cde_DtActionArg=
DtActionArg_argClass=
DtActionArg_name=accessor=u.file.name,cast=char *

