-- Autogenerated by MSIL2Ada v. 2
-- By: Martin C. Carlisle
--     Department of Computer Science
--     US Air Force Academy
--     carlislem@acm.org
pragma Extensions_Allowed(On);
with MSSyst.Object;
with MSIL_Types;
use MSIL_Types;
with type MSSyst.Runtime.InteropServices.uModule.Ref is access;
with type MSSyst.Runtime.Serialization.ISerializable.Ref is access;
with type MSSyst.Reflection.ICustomAttributeProvider.Ref is access;
with type MSSyst.Runtime.InteropServices.uModuleBuilder.Ref is access;
with type MSSyst.Diagnostics.SymbolStore.ISymbolDocumentWriter.Ref is access;
with type MSSyst.String.Ref is access;
with type MSSyst.Guid.Valuetype is tagged;
with type MSSyst.Reflection.Emit.EnumBuilder.Ref is access;
with MSSyst.Reflection.TypeAttributes;
with type MSSyst.Type_k.Ref is access;
with type MSSyst.Reflection.Emit.MethodBuilder.Ref is access;
with MSSyst.Reflection.MethodAttributes;
with MSSyst.Reflection.CallingConventions;
with type MSSyst.Type_k.Ref_array is access;
with type MSSyst.Reflection.Emit.FieldBuilder.Ref is access;
with MSSyst.Reflection.FieldAttributes;
with MSSyst.Runtime.InteropServices.CallingConvention;
with MSSyst.Runtime.InteropServices.CharSet;
with type MSSyst.Resources.IResourceWriter.Ref is access;
with MSSyst.Reflection.ResourceAttributes;
with type MSSyst.Reflection.Emit.TypeBuilder.Ref is access;
with MSSyst.Reflection.Emit.PackingSize;
with type MSSyst.Object.Ref is access;
with type MSSyst.Reflection.TypeFilter.Ref is access;
with type MSSyst.Reflection.Assembly.Ref is access;
with type MSSyst.Reflection.MethodInfo.Ref is access;
with type MSSyst.Reflection.Emit.MethodToken.Valuetype is tagged;
with type MSSyst.Reflection.ConstructorInfo.Ref is access;
with type MSSyst.Object.Ref_array is access;
with type MSSyst.Reflection.FieldInfo.Ref is access;
with MSSyst.Reflection.BindingFlags;
with type MSSyst.Reflection.FieldInfo.Ref_array is access;
with type MSSyst.Reflection.Emit.FieldToken.Valuetype is tagged;
with type MSSyst.Reflection.Binder.Ref is access;
with MSSyst.Reflection.ParameterModifier;
with type MSSyst.Reflection.MethodInfo.Ref_array is access;
with type MSSyst.Runtime.Serialization.SerializationInfo.Ref is access;
with type MSSyst.Runtime.Serialization.StreamingContext.Valuetype is tagged;
with type MSSyst.Reflection.Emit.SignatureToken.Valuetype is tagged;
with type MSSyst.Reflection.Emit.SignatureHelper.Ref is access;
with type MSSyst.Security.Cryptography.X509Certificates.X509Certificate.Ref is access;
with type MSSyst.Reflection.Emit.StringToken.Valuetype is tagged;
with type MSSyst.Diagnostics.SymbolStore.ISymbolWriter.Ref is access;
with type MSSyst.Reflection.Emit.TypeToken.Valuetype is tagged;
with type MSSyst.Reflection.Emit.CustomAttributeBuilder.Ref is access;
with MSSyst.Reflection.Module;
package MSSyst.Reflection.Emit.ModuleBuilder is
   type Typ;
   type Ref is access all Typ'Class;
   type Ref_addrof is access all Ref;
   type Ref_Arr is array(Natural range <>) of Ref;
   type Ref_Array is access all Ref_Arr;
   type Ref_Array_addrof is access all Ref_Array;
   type Typ(
         I_uModule : MSSyst.Runtime.InteropServices.uModule.Ref;
         I_ISerializable : MSSyst.Runtime.Serialization.ISerializable.Ref;
         I_ICustomAttributeProvider : MSSyst.Reflection.ICustomAttributeProvider.Ref;
         I_uModuleBuilder : MSSyst.Runtime.InteropServices.uModuleBuilder.Ref
      ) is new MSSyst.Reflection.Module.Typ(
         I_uModule => I_uModule,
         I_ISerializable => I_ISerializable,
         I_ICustomAttributeProvider => I_ICustomAttributeProvider
      ) with record
      null;
   end record;
   procedure CreateGlobalFunctions(
      This : access Typ);
   function DefineDocument(
      This : access Typ;
      url : MSSyst.String.Ref;
      language : MSSyst.Guid.Valuetype;
      languageVendor : MSSyst.Guid.Valuetype;
      documentType : MSSyst.Guid.Valuetype) return MSSyst.Diagnostics.SymbolStore.ISymbolDocumentWriter.Ref;
   function DefineEnum(
      This : access Typ;
      name : MSSyst.String.Ref;
      visibility : MSSyst.Reflection.TypeAttributes.Valuetype;
      underlyingType : MSSyst.Type_k.Ref) return MSSyst.Reflection.Emit.EnumBuilder.Ref;
   function DefineGlobalMethod(
      This : access Typ;
      name : MSSyst.String.Ref;
      attributes : MSSyst.Reflection.MethodAttributes.Valuetype;
      callingConvention : MSSyst.Reflection.CallingConventions.Valuetype;
      returnType : MSSyst.Type_k.Ref;
      parameterTypes : MSSyst.Type_k.Ref_array) return MSSyst.Reflection.Emit.MethodBuilder.Ref;
   function DefineGlobalMethod(
      This : access Typ;
      name : MSSyst.String.Ref;
      attributes : MSSyst.Reflection.MethodAttributes.Valuetype;
      returnType : MSSyst.Type_k.Ref;
      parameterTypes : MSSyst.Type_k.Ref_array) return MSSyst.Reflection.Emit.MethodBuilder.Ref;
   function DefineInitializedData(
      This : access Typ;
      name : MSSyst.String.Ref;
      data : MSIL_Types.unsigned_int8_Arr;
      attributes : MSSyst.Reflection.FieldAttributes.Valuetype) return MSSyst.Reflection.Emit.FieldBuilder.Ref;
   function DefinePInvokeMethod(
      This : access Typ;
      name : MSSyst.String.Ref;
      dllName : MSSyst.String.Ref;
      entryName : MSSyst.String.Ref;
      attributes : MSSyst.Reflection.MethodAttributes.Valuetype;
      callingConvention : MSSyst.Reflection.CallingConventions.Valuetype;
      returnType : MSSyst.Type_k.Ref;
      parameterTypes : MSSyst.Type_k.Ref_array;
      nativeCallConv : MSSyst.Runtime.InteropServices.CallingConvention.Valuetype;
      nativeCharSet : MSSyst.Runtime.InteropServices.CharSet.Valuetype) return MSSyst.Reflection.Emit.MethodBuilder.Ref;
   function DefinePInvokeMethod(
      This : access Typ;
      name : MSSyst.String.Ref;
      dllName : MSSyst.String.Ref;
      attributes : MSSyst.Reflection.MethodAttributes.Valuetype;
      callingConvention : MSSyst.Reflection.CallingConventions.Valuetype;
      returnType : MSSyst.Type_k.Ref;
      parameterTypes : MSSyst.Type_k.Ref_array;
      nativeCallConv : MSSyst.Runtime.InteropServices.CallingConvention.Valuetype;
      nativeCharSet : MSSyst.Runtime.InteropServices.CharSet.Valuetype) return MSSyst.Reflection.Emit.MethodBuilder.Ref;
   function DefineResource(
      This : access Typ;
      name : MSSyst.String.Ref;
      description : MSSyst.String.Ref;
      attribute : MSSyst.Reflection.ResourceAttributes.Valuetype) return MSSyst.Resources.IResourceWriter.Ref;
   function DefineResource(
      This : access Typ;
      name : MSSyst.String.Ref;
      description : MSSyst.String.Ref) return MSSyst.Resources.IResourceWriter.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref;
      attr : MSSyst.Reflection.TypeAttributes.Valuetype) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref;
      attr : MSSyst.Reflection.TypeAttributes.Valuetype;
      parent : MSSyst.Type_k.Ref) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref;
      attr : MSSyst.Reflection.TypeAttributes.Valuetype;
      parent : MSSyst.Type_k.Ref;
      packingSize : MSSyst.Reflection.Emit.PackingSize.Valuetype;
      typesize : Integer) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref;
      attr : MSSyst.Reflection.TypeAttributes.Valuetype;
      parent : MSSyst.Type_k.Ref;
      packsize : MSSyst.Reflection.Emit.PackingSize.Valuetype) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref;
      attr : MSSyst.Reflection.TypeAttributes.Valuetype;
      parent : MSSyst.Type_k.Ref;
      typesize : Integer) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineType(
      This : access Typ;
      name : MSSyst.String.Ref;
      attr : MSSyst.Reflection.TypeAttributes.Valuetype;
      parent : MSSyst.Type_k.Ref;
      interfaces : MSSyst.Type_k.Ref_array) return MSSyst.Reflection.Emit.TypeBuilder.Ref;
   function DefineUninitializedData(
      This : access Typ;
      name : MSSyst.String.Ref;
      size : Integer;
      attributes : MSSyst.Reflection.FieldAttributes.Valuetype) return MSSyst.Reflection.Emit.FieldBuilder.Ref;
   procedure DefineUnmanagedResource(
      This : access Typ;
      resource : MSIL_Types.unsigned_int8_Arr);
   procedure DefineUnmanagedResource(
      This : access Typ;
      resourceFileName : MSSyst.String.Ref);
   function get_FullyQualifiedName(
      This : access Typ) return MSSyst.String.Ref;
   function GetArrayMethod(
      This : access Typ;
      arrayClass : MSSyst.Type_k.Ref;
      methodName : MSSyst.String.Ref;
      callingConvention : MSSyst.Reflection.CallingConventions.Valuetype;
      returnType : MSSyst.Type_k.Ref;
      parameterTypes : MSSyst.Type_k.Ref_array) return MSSyst.Reflection.MethodInfo.Ref;
   function GetArrayMethodToken(
      This : access Typ;
      arrayClass : MSSyst.Type_k.Ref;
      methodName : MSSyst.String.Ref;
      callingConvention : MSSyst.Reflection.CallingConventions.Valuetype;
      returnType : MSSyst.Type_k.Ref;
      parameterTypes : MSSyst.Type_k.Ref_array) return MSSyst.Reflection.Emit.MethodToken.Valuetype;
   function GetConstructorToken(
      This : access Typ;
      con : MSSyst.Reflection.ConstructorInfo.Ref) return MSSyst.Reflection.Emit.MethodToken.Valuetype;
   function GetFieldToken(
      This : access Typ;
      field : MSSyst.Reflection.FieldInfo.Ref) return MSSyst.Reflection.Emit.FieldToken.Valuetype;
   function GetMethodToken(
      This : access Typ;
      method : MSSyst.Reflection.MethodInfo.Ref) return MSSyst.Reflection.Emit.MethodToken.Valuetype;
   function GetSignatureToken(
      This : access Typ;
      sigBytes : MSIL_Types.unsigned_int8_Arr;
      sigLength : Integer) return MSSyst.Reflection.Emit.SignatureToken.Valuetype;
   function GetSignatureToken(
      This : access Typ;
      sigHelper : MSSyst.Reflection.Emit.SignatureHelper.Ref) return MSSyst.Reflection.Emit.SignatureToken.Valuetype;
   function GetStringConstant(
      This : access Typ;
      str : MSSyst.String.Ref) return MSSyst.Reflection.Emit.StringToken.Valuetype;
   function GetSymWriter(
      This : access Typ) return MSSyst.Diagnostics.SymbolStore.ISymbolWriter.Ref;
   function GetType(
      This : access Typ;
      className : MSSyst.String.Ref) return MSSyst.Type_k.Ref;
   function GetType(
      This : access Typ;
      className : MSSyst.String.Ref;
      ignoreCase : Standard.Boolean) return MSSyst.Type_k.Ref;
   function GetType(
      This : access Typ;
      className : MSSyst.String.Ref;
      throwOnError : Standard.Boolean;
      ignoreCase : Standard.Boolean) return MSSyst.Type_k.Ref;
   function GetTypes(
      This : access Typ) return MSSyst.Type_k.Ref_array;
   function GetTypeToken(
      This : access Typ;
      name : MSSyst.String.Ref) return MSSyst.Reflection.Emit.TypeToken.Valuetype;
   function GetTypeToken(
      This : access Typ;
      type_k : MSSyst.Type_k.Ref) return MSSyst.Reflection.Emit.TypeToken.Valuetype;
   function IsTransient(
      This : access Typ) return Standard.Boolean;
   procedure SetCustomAttribute(
      This : access Typ;
      con : MSSyst.Reflection.ConstructorInfo.Ref;
      binaryAttribute : MSIL_Types.unsigned_int8_Arr);
   procedure SetCustomAttribute(
      This : access Typ;
      customBuilder : MSSyst.Reflection.Emit.CustomAttributeBuilder.Ref);
   procedure SetSymCustomAttribute(
      This : access Typ;
      name : MSSyst.String.Ref;
      data : MSIL_Types.unsigned_int8_Arr);
   procedure SetUserEntryPoint(
      This : access Typ;
      entryPoint : MSSyst.Reflection.MethodInfo.Ref);
private
   pragma Convention(MSIL,Typ);
   pragma Import(MSIL,CreateGlobalFunctions,"CreateGlobalFunctions");
   pragma Import(MSIL,DefineDocument,"DefineDocument");
   pragma Import(MSIL,DefineEnum,"DefineEnum");
   pragma Import(MSIL,DefineGlobalMethod,"DefineGlobalMethod");
   pragma Import(MSIL,DefineInitializedData,"DefineInitializedData");
   pragma Import(MSIL,DefinePInvokeMethod,"DefinePInvokeMethod");
   pragma Import(MSIL,DefineResource,"DefineResource");
   pragma Import(MSIL,DefineType,"DefineType");
   pragma Import(MSIL,DefineUninitializedData,"DefineUninitializedData");
   pragma Import(MSIL,DefineUnmanagedResource,"DefineUnmanagedResource");
   pragma Import(MSIL,get_FullyQualifiedName,"get_FullyQualifiedName");
   pragma Import(MSIL,GetArrayMethod,"GetArrayMethod");
   pragma Import(MSIL,GetArrayMethodToken,"GetArrayMethodToken");
   pragma Import(MSIL,GetConstructorToken,"GetConstructorToken");
   pragma Import(MSIL,GetFieldToken,"GetFieldToken");
   pragma Import(MSIL,GetMethodToken,"GetMethodToken");
   pragma Import(MSIL,GetSignatureToken,"GetSignatureToken");
   pragma Import(MSIL,GetStringConstant,"GetStringConstant");
   pragma Import(MSIL,GetSymWriter,"GetSymWriter");
   pragma Import(MSIL,GetType,"GetType");
   pragma Import(MSIL,GetTypes,"GetTypes");
   pragma Import(MSIL,GetTypeToken,"GetTypeToken");
   pragma Import(MSIL,IsTransient,"IsTransient");
   pragma Import(MSIL,SetCustomAttribute,"SetCustomAttribute");
   pragma Import(MSIL,SetSymCustomAttribute,"SetSymCustomAttribute");
   pragma Import(MSIL,SetUserEntryPoint,"SetUserEntryPoint");
end MSSyst.Reflection.Emit.ModuleBuilder;
pragma Extensions_Allowed(Off);
pragma Import(MSIL,MSSyst.Reflection.Emit.ModuleBuilder,
   ".ver 1:0:5000:0 .publickeytoken=( b7 7a 5c 56 19 34 e0 89 )",
   "[mscorlib]System.Reflection.Emit.ModuleBuilder");
