<config>
	<!-- assembly inputs -->
	
	<assemblypath path="..\..\class\lib"/>

	<assembly file="corlib_cmp.dll"/>
	<assembly file="System.dll"/>

	<!-- output files -->

	<outputpath path="."/>

	<outputfile name="types" file="icall_types.h">
		<include><![CDATA[#include "icall.h"]]></include>
	</outputfile>

	<outputfile name="methods" file="icall_methods.h"/>
	<outputfile name="map" file="icall_map.c"/>

	<!-- typemap -->

	<typemap>
		<!-- base types -->

		<namespace name="System">

			<!-- default types are taken from the running assembly -->

			<type name="Object" peer="MonoObject" opaque="true" default="true"/>

			<type name="Void" peer="void" opaque="true" default="true"/>
			<type name="Boolean" peer="MonoBoolean" opaque="true" default="true"/>
			<type name="Int64" peer="gint64" opaque="true" default="true"/>
			<type name="Int32" peer="gint32" opaque="true" default="true"/>
			<type name="Int16" peer="gint16" opaque="true" default="true"/>
			<type name="Byte" peer="gint8" opaque="true" default="true"/>
			<type name="UInt64" peer="guint64" opaque="true" default="true"/>
			<type name="UInt32" peer="guint32" opaque="true" default="true"/>
			<type name="UInt16" peer="guint16" opaque="true" default="true"/>
			<type name="SByte" peer="guint8" opaque="true" default="true"/>
			<type name="IntPtr" peer="gpointer" opaque="true" default="true"/>
			<type name="UIntPtr" peer="gpointer" opaque="true" default="true"/>
			<type name="Single" peer="gfloat" opaque="true" default="true"/>
			<type name="Double" peer="gdouble" opaque="true" default="true"/>
			<type name="Char" peer="gunichar2" opaque="true" default="true"/>
			<type name="Array" peer="MonoArray" opaque="true" default="true"/>

			<!-- non-defaulting system types -->

			<type name="Decimal" peer="decimal_repr" opaque="true"/>
			<type name="String" peer="MonoString" opaque="true"/>

		</namespace>

		<!-- reflection types -->

		<namespace name="System">
			<type name="RuntimeTypeHandle" peer="MonoType *" opaque="true"/>
			<type name="RuntimeMethodHandle" peer="MonoMethod *" opaque="true"/>
			<type name="RuntimeFieldHandle" peer="MonoClassField *" opaque="true"/>

			<type name="Type" peer="MonoReflectionType"/>
			<type name="MonoTypeInfo" peer="MonoTypeInfo"/>
			<type name="MonoEnumInfo" peer="MonoEnumInfo"/>
		</namespace>

		<namespace name="System.Reflection">
			<type name="MonoMethod" peer="MonoReflectionMethod"/>
			<type name="MonoField" peer="MonoReflectionField"/>
			<type name="MonoFieldInfo" peer="MonoFieldInfo"/>
			<type name="MonoProperty" peer="MonoReflectionProperty"/>
			<type name="ParameterInfo" peer="MonoParameterInfo"/>
			<type name="MonoMethodInfo" peer="MonoMethodInfo"/>
			<type name="MonoPropertyInfo" peer="MonoPropertyInfo"/>
			<type name="Assembly" peer="MonoReflectionAssembly"/>
			<type name="Module" peer="MonoReflectionModule"/>
			<type name="AssemblyName" peer="MonoReflectionAssemblyName"/>
		</namespace>

		<namespace name="System.Reflection.Emit">
			<type name="ILGenerator" peer="MonoReflectionILGen"/>
			<type name="ILExceptionInfo" peer="MonoILExceptionInfo"/>
			<type name="ILExceptionBlock" peer="MonoILExceptionBlock"/>
			<type name="LocalBuilder" peer="MonoReflectionLocalBuilder"/>
			<type name="ParameterBuilder" peer="MonoReflectionParamBuilder"/>
			<type name="ConstructorBuilder" peer="MonoReflectionCtorBuilder"/>
			<type name="MethodBuilder" peer="MonoReflectionMethodBuilder"/>
			<type name="FieldBuilder" peer="MonoReflectionFieldBuilder"/>
			<type name="PropertyBuilder" peer="MonoReflectionPropertyBuilder"/>
			<type name="ModuleBuilder" peer="MonoReflectionModuleBuilder"/>
			<type name="TypeBuilder" peer="MonoReflectionTypeBuilder"/>
			<type name="Label" peer="MonoReflectionLabel"/>
		</namespace>

		<!-- enumerations -->

		<namespace name="System.Net.Sockets">
			<type name="SocketType" peer="MonoSocketType"/>
			<type name="AddressFamily" peer="MonoAddressFamily"/>
			<type name="ProtocolType" peer="MonoProtocolType"/>
			<type name="SocketOptionLevel" peer="MonoSocketOptionLevel"/>
			<type name="SocketOptionName" peer="MonoSocketOptionName"/>
		</namespace>
	</typemap>
</config>