###############################################################################
# Copyright (c) 2000, 2007 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_cocoa_Cocoa=
Cocoa_HICocoaViewCreate=flags=dynamic
Cocoa_HICocoaViewCreate_0=
Cocoa_HICocoaViewCreate_1=
Cocoa_HICocoaViewCreate_2=

Cocoa_HIJavaViewCreateWithCocoaView=flags=no_gen
Cocoa_HIJavaViewCreateWithCocoaView_0=
Cocoa_HIJavaViewCreateWithCocoaView_1=

Cocoa_HIWebViewCreate=
Cocoa_HIWebViewCreate_0=cast=HIViewRef *

Cocoa_HIWebViewGetWebView=
Cocoa_HIWebViewGetWebView_0=cast=HIViewRef

Cocoa_NSDeviceRGBColorSpace=flags=const

Cocoa_WebInitForCarbon=

Cocoa_memcpy=
Cocoa_memcpy_0=
Cocoa_memcpy_1=cast=(void *)
Cocoa_memcpy_2=

Cocoa_memmove=
Cocoa_memmove_0=
Cocoa_memmove_1=cast=(void *)
Cocoa_memmove_2=

Cocoa_objc_getClass=
Cocoa_objc_getClass_0=cast=(const char *)

Cocoa_objc_1msgSend__II=
Cocoa_objc_1msgSend__II_0=cast=(id)
Cocoa_objc_1msgSend__II_1=cast=(SEL)

Cocoa_objc_1msgSend__IIF=flags=cast
Cocoa_objc_1msgSend__IIF_0=cast=(id)
Cocoa_objc_1msgSend__IIF_1=cast=(SEL)
Cocoa_objc_1msgSend__IIF_2=

Cocoa_objc_1msgSend__IIFF=flags=cast
Cocoa_objc_1msgSend__IIFF_0=cast=(id)
Cocoa_objc_1msgSend__IIFF_1=cast=(SEL)
Cocoa_objc_1msgSend__IIFF_2=
Cocoa_objc_1msgSend__IIFF_3=

Cocoa_objc_1msgSend__III=
Cocoa_objc_1msgSend__III_0=cast=(id)
Cocoa_objc_1msgSend__III_1=cast=(SEL)
Cocoa_objc_1msgSend__III_2=

Cocoa_objc_1msgSend__IIII=
Cocoa_objc_1msgSend__IIII_0=cast=(id)
Cocoa_objc_1msgSend__IIII_1=cast=(SEL)
Cocoa_objc_1msgSend__IIII_2=
Cocoa_objc_1msgSend__IIII_3=

Cocoa_objc_1msgSend__IIIII=
Cocoa_objc_1msgSend__IIIII_0=cast=(id)
Cocoa_objc_1msgSend__IIIII_1=cast=(SEL)
Cocoa_objc_1msgSend__IIIII_2=
Cocoa_objc_1msgSend__IIIII_3=
Cocoa_objc_1msgSend__IIIII_4=

Cocoa_objc_1msgSend__IIIIII=
Cocoa_objc_1msgSend__IIIIII_0=cast=(id)
Cocoa_objc_1msgSend__IIIIII_1=cast=(SEL)
Cocoa_objc_1msgSend__IIIIII_2=
Cocoa_objc_1msgSend__IIIIII_3=
Cocoa_objc_1msgSend__IIIIII_4=
Cocoa_objc_1msgSend__IIIIII_5=

Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSPoint_2=
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSPoint_2_0=cast=(id)
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSPoint_2_1=cast=(SEL)
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSPoint_2_2=
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSPoint_2_3=flags=struct

Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSRect_2I=
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSRect_2I_0=cast=(id)
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSRect_2I_1=cast=(SEL)
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSRect_2I_2=
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSRect_2I_3=flags=struct
Cocoa_objc_1msgSend__IIILorg_eclipse_swt_internal_cocoa_NSRect_2I_4=

Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2=
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2_0=cast=(id)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2_1=cast=(SEL)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2_2=flags=struct

Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2I=
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2I_0=cast=(id)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2I_1=cast=(SEL)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2I_2=flags=struct
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2I_3=

Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2=
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2_0=cast=(id)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2_1=cast=(SEL)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2_2=flags=struct
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2_3=flags=struct
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2Lorg_eclipse_swt_internal_cocoa_NSPoint_2_4=flags=struct

Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2=
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2_0=cast=(id)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2_1=cast=(SEL)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2_2=flags=struct

Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2I=
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2I_0=cast=(id)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2I_1=cast=(SEL)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2I_2=flags=struct
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSRect_2I_3=

Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSSize_2=
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSSize_2_0=cast=(id)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSSize_2_1=cast=(SEL)
Cocoa_objc_1msgSend__IILorg_eclipse_swt_internal_cocoa_NSSize_2_2=flags=struct

Cocoa_objc_1msgSend__II_3IIIIIIIIIII=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_0=cast=(id)
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_1=cast=SEL
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_2=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_3=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_4=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_5=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_6=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_7=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_8=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_9=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_10=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_11=
Cocoa_objc_1msgSend__II_3IIIIIIIIIII_12=

Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2II=
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2II_0=cast=(void *)
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2II_1=cast=(void *)
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2II_2=cast=(SEL)

Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2IILorg_eclipse_swt_internal_cocoa_NSRect_2I=
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2IILorg_eclipse_swt_internal_cocoa_NSRect_2I_0=cast=(void *)
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2IILorg_eclipse_swt_internal_cocoa_NSRect_2I_1=cast=(void *)
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2IILorg_eclipse_swt_internal_cocoa_NSRect_2I_2=cast=SEL
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2IILorg_eclipse_swt_internal_cocoa_NSRect_2I_3=flags=struct
Cocoa_objc_1msgSend_1stret__Lorg_eclipse_swt_internal_cocoa_NSRect_2IILorg_eclipse_swt_internal_cocoa_NSRect_2I_4=

Cocoa_sel_registerName=
Cocoa_sel_registerName_0=cast=(const char *)


org_eclipse_swt_internal_cocoa_NSPoint=
NSPoint_x=
NSPoint_y=

org_eclipse_swt_internal_cocoa_NSRect=
NSRect_x=accessor=origin.x
NSRect_y=accessor=origin.y
NSRect_width=accessor=size.width
NSRect_height=accessor=size.height

org_eclipse_swt_internal_cocoa_NSSize=
NSSize_width=
NSSize_height=

