--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2019 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-NetFramework                                                        --
--    Version   : 1.0.0.0                                                     --
--                                                                            --
-- This program is free software: you can redistribute it and / or modify     --
-- it under the terms of the GNU Lesser General Public License as published by--
-- the Free Software Foundation, either version 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program is distributed in the hope that it will be useful,            --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of             --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the               --
-- GNU Lesser General Public License for more details.                        --
--                                                                            --
-- You should have received a copy of the GNU Lesser General Public License   --
-- along with this program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with NetFrameworkBase.System.Object;
limited with NetFrameworkBase.System.Type_x;
limited with NetFrameworkBase.System.Reflection.PortableExecutableKinds;
limited with NetFrameworkBase.System.Reflection.ImageFileMachine;
limited with NetFrameworkBase.System.Runtime.Serialization.SerializationInfo;
limited with NetFrameworkBase.System.Runtime.Serialization.StreamingContext;
limited with NetFrameworkBase.System.Reflection.TypeFilter;
limited with NetFrameworkBase.System.Reflection.BindingFlags;
limited with NetFrameworkBase.System.Reflection.Binder;
limited with NetFrameworkBase.System.Reflection.CallingConventions;
limited with NetFrameworkBase.System.Reflection.ParameterModifier;
limited with NetFrameworkBase.System.Reflection.MethodBase;
limited with NetFrameworkBase.System.Reflection.FieldInfo;
limited with NetFrameworkBase.System.Reflection.MemberInfo;
limited with NetFrameworkBase.System.Guid;
limited with NetFrameworkBase.System.Reflection.MethodInfo;
limited with NetFrameworkBase.System.Reflection.Assembly;
limited with NetFrameworkBase.System.ModuleHandle;
limited with NetFrameworkBase.System.Security.Cryptography.X509Certificates.X509Certificate;
--------------------------------------------------------------------------------
package NetFrameworkBase.System.Reflection.Module is
   
   type Kind is new NetFrameworkBase.System.Object.Kind with null record;
   type Kind_Ptr is access all Kind;
   type Kind_Array is array(Natural range<>) of Kind_Ptr;
   type Kind_Array_Ptr is access all Kind_Array;
   
      function op_Equality
      (
         left : NetFrameworkBase.System.Reflection.Module.Kind_Ptr; 
         right : NetFrameworkBase.System.Reflection.Module.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      function "="(left : NetFrameworkBase.System.Reflection.Module.Kind_Ptr; right : NetFrameworkBase.System.Reflection.Module.Kind_Ptr) return NetFrameworkBase.Boolean renames op_Equality;
      
      function op_Inequality
      (
         left : NetFrameworkBase.System.Reflection.Module.Kind_Ptr; 
         right : NetFrameworkBase.System.Reflection.Module.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function Equals
      (
         this : in out Module.Kind;
         o : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function GetHashCode
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.Int32;
      
      function ToString
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function GetCustomAttributes
      (
         this : in out Module.Kind;
         inherit : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Object.Kind_Array;
      
      function GetCustomAttributes
      (
         this : in out Module.Kind;
         attributeType : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         inherit : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Object.Kind_Array;
      
      function IsDefined
      (
         this : in out Module.Kind;
         attributeType : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         inherit : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.Boolean;
      
      function ResolveMethod
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.Reflection.MethodBase.Kind_Ptr;
      
      function ResolveMethod
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32; 
         genericTypeArguments : NetFrameworkBase.System.Type_x.Kind_Array; 
         genericMethodArguments : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.MethodBase.Kind_Ptr;
      
      function ResolveField
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Ptr;
      
      function ResolveField
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32; 
         genericTypeArguments : NetFrameworkBase.System.Type_x.Kind_Array; 
         genericMethodArguments : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Ptr;
      
      function ResolveType
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function ResolveType
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32; 
         genericTypeArguments : NetFrameworkBase.System.Type_x.Kind_Array; 
         genericMethodArguments : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function ResolveMember
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Ptr;
      
      function ResolveMember
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32; 
         genericTypeArguments : NetFrameworkBase.System.Type_x.Kind_Array; 
         genericMethodArguments : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Ptr;
      
      function ResolveSignature
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.Byte_Array;
      
      function ResolveString
      (
         this : in out Module.Kind;
         metadataToken : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.BSTR;
      
      procedure GetPEKind
      (
         this : in out Module.Kind;
         peKind : out NetFrameworkBase.System.Reflection.PortableExecutableKinds.Kind; 
         machine : out NetFrameworkBase.System.Reflection.ImageFileMachine.Kind
      );
      
      function MDStreamVersion
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.Int32;
      
      procedure GetObjectData
      (
         this : in out Module.Kind;
         info : NetFrameworkBase.System.Runtime.Serialization.SerializationInfo.Kind_Ptr; 
         context : NetFrameworkBase.System.Runtime.Serialization.StreamingContext.Kind_Ptr
      );
      
      function GetType
      (
         this : in out Module.Kind;
         className : NetFrameworkBase.BSTR; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetType
      (
         this : in out Module.Kind;
         className : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetType
      (
         this : in out Module.Kind;
         className : NetFrameworkBase.BSTR; 
         throwOnError : NetFrameworkBase.Boolean; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function FullyQualifiedName
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function FindTypes
      (
         this : in out Module.Kind;
         filter : NetFrameworkBase.System.Reflection.TypeFilter.Kind_Ptr; 
         filterCriteria : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GetTypes
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function ModuleVersionId
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.Guid.Kind_Ptr;
      
      function MetadataToken
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.Int32;
      
      function IsResource
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function GetFields
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Array;
      
      function GetFields
      (
         this : in out Module.Kind;
         bindingFlags : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Array;
      
      function GetField
      (
         this : in out Module.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Ptr;
      
      function GetField
      (
         this : in out Module.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Ptr;
      
      function GetMethods
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Array;
      
      function GetMethods
      (
         this : in out Module.Kind;
         bindingFlags : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Array;
      
      function GetMethod
      (
         this : in out Module.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         callConvention : NetFrameworkBase.System.Reflection.CallingConventions.Kind; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Module.Kind;
         name : NetFrameworkBase.BSTR; 
         types : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Module.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function ScopeName
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function Name
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function Assembly
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.Reflection.Assembly.Kind_Ptr;
      
      function ModuleHandle
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.ModuleHandle.Kind_Ptr;
      
      function GetSignerCertificate
      (
         this : in out Module.Kind
      )
      return NetFrameworkBase.System.Security.Cryptography.X509Certificates.X509Certificate.Kind_Ptr;
      
end;
