dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/runtime/System/Runtime/InteropService


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/runtime/System/Runtime/InteropServices ArrayWithOffset.cs,NONE,1.1 AssemblyRegistrationFlags.cs,NONE,1.1 AutomationProxyAttribute.cs,NONE,1.1 BINDPTR.cs,NONE,1.1 BIND_OPTS.cs,NONE,1.1 CALLCONV.cs,NONE,1.1 COMException.cs,NONE,1.1 CONNECTDATA.cs,NONE,1.1 CoClassAttribute.cs,NONE,1.1 ComAliasNameAttribute.cs,NONE,1.1ComConversionLossAttribute.cs,NONE,1.1 ComEventInterfaceAttribute.cs,NONE,1.1 ComRegisterFunctionAttribute.cs,NONE,1.1 ComSourceInterfacesAttribute.cs,NONE,1.1 ComUnregisterFunctionAttribute.cs,NONE,1.1 CurrencyWrapper.cs,NONE,1.1 DESCKIND.cs,NONE,1.1 DISPPARAMS.cs,NONE,1.1 DispatchWrapper.cs,NONE,1.1 ELEMDESC.cs,NONE,1.1 EXCEPINFO.cs,NONE,1.1 ErrorWrapper.cs,NONE,1.1 ExporterEventKind.cs,NONE,1.1 ExtensibleClassFactory.cs,NONE,1.1 FILETIME.cs,NONE,1.1 FUNCDESC.cs,NONE,1.1 FUNCFLAGS.cs,NONE,1.1 FUNCKIND.cs,NONE,1.1 HandleRef.cs,NONE,1.1 IDLDESC.cs,NONE,1.1 IDLFLAG.cs,NONE,1.1 IDispatchImplAttribute.cs,NONE,1.1 IDispatchImplType.cs,NONE,1.1 IMPLTYPEFLAGS.cs,NONE,1.1 INVOKEKIND.cs,NONE,1.1 IRegistrationServices.cs,NONE,1.1 ITypeLibConverter.cs,NONE,1.1ITypeLibExporterNameProvider.cs,NONE,1.1 ITypeLibExporterNotifySink.cs,NONE,1.1 ITypeLibImporterNotifySink.cs,NONE,1.1 ImportedFromTypeLibAttribute.cs,NONE,1.1 ImporterEventKind.cs,NONE,1.1 InvalidComObjectException.cs,NONE,1.1 InvalidOleVariantTypeException.cs,NONE,1.1 LCIDConversionAttribute.cs,NONE,1.1 LIBFLAGS.cs,NONE,1.1 MarshalDirectiveException.cs,NONE,1.1 ObjectCreationDelegate.cs,NONE,1.1 OptionalAttribute.cs,NONE,1.1 PARAMDESC.cs,NONE,1.1 PARAMFLAG.cs,NONE,1.1 PreserveSigAttribute.cs,NONE,1.1 PrimaryInteropAssemblyAttribute.cs,NONE,1.1 ProgIdAttribute.cs,NONE,1.1 RegistrationServices.cs,NONE,1.1 RuntimeEnvironment.cs,NONE,1.1 SEHException.cs,NONE,1.1 STATSTG.cs,NONE,1.1 SYSKIND.cs,NONE,1.1 SafeArrayRankMismatchException.cs,NONE,1.1 SafeArrayTypeMismatchException.cs,NONE,1.1 TYPEATTR.cs,NONE,1.1 TYPEDESC.cs,NONE,1.1 TYPEFLAGS.cs,NONE,1.1 TYPEKIND.cs,NONE,1.1 TYPELIBATTR.cs,NONE,1.1 TypeLibConverter.cs,NONE,1.1 TypeLibExporterFlags.cs,NONE,1.1 TypeLibFuncAttribute.cs,NONE,1.1 TypeLibFuncFlags.cs,NONE,1.1 TypeLibImporterFlags.cs,NONE,1.1 TypeLibTypeAttribute.cs,NONE,1.1 TypeLibTypeFlags.cs,NONE,1.1 TypeLibVarAttribute.cs,NONE,1.1 TypeLibVarFlags.cs,NONE,1.1 UCOMIBindCtx.cs,NONE,1.1 UCOMIConnectionPoint.cs,NONE,1.1 UCOMIConnectionPointContainer.cs,NONE,1.1 UCOMIEnumConnectionPoints.cs,NONE,1.1 UCOMIEnumConnections.cs,NONE,1.1 UCOMIEnumMoniker.cs,NONE,1.1 UCOMIEnumString.cs,NONE,1.1 UCOMIEnumVARIANT.cs,NONE,1.1 UCOMIMoniker.cs,NONE,1.1 UCOMIPersistFile.cs,NONE,1.1 UCOMIRunningObjectTable.cs,NONE,1.1 UCOMIStream.cs,NONE,1.1 UCOMITypeComp.cs,NONE,1.1 UnknownWrapper.cs,NONE,1.1 VARDESC.cs,NONE,1.1 VARFLAGS.cs,NONE,1.1 VarEnum.cs,NONE,1.1 ComImportAttribute.cs,1.2,1.3 ComInterfaceType.cs,1.1,1.2 ComMemberType.cs,1.1,1.2 DispIdAttribute.cs,1.2,1.3 ExternalException.cs,1.1,1.2 InterfaceTypeAttribute.cs,1.4,1.5 Marshal.cs,1.4,1.5 UCOMITypeInfo.cs,1.1,1.2 UCOMITypeLib.cs,1.1,1.2 ExposeHResultAttribute.cs,1.2,NONE
Date: Fri, 04 Apr 2003 16:53:56 -0500

Update of /cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices
In directory 
subversions:/tmp/cvs-serv1430/runtime/System/Runtime/InteropServices

Modified Files:
        ComImportAttribute.cs ComInterfaceType.cs ComMemberType.cs 
        DispIdAttribute.cs ExternalException.cs 
        InterfaceTypeAttribute.cs Marshal.cs UCOMITypeInfo.cs 
        UCOMITypeLib.cs 
Added Files:
        ArrayWithOffset.cs AssemblyRegistrationFlags.cs 
        AutomationProxyAttribute.cs BINDPTR.cs BIND_OPTS.cs 
        CALLCONV.cs COMException.cs CONNECTDATA.cs CoClassAttribute.cs 
        ComAliasNameAttribute.cs ComConversionLossAttribute.cs 
        ComEventInterfaceAttribute.cs ComRegisterFunctionAttribute.cs 
        ComSourceInterfacesAttribute.cs 
        ComUnregisterFunctionAttribute.cs CurrencyWrapper.cs 
        DESCKIND.cs DISPPARAMS.cs DispatchWrapper.cs ELEMDESC.cs 
        EXCEPINFO.cs ErrorWrapper.cs ExporterEventKind.cs 
        ExtensibleClassFactory.cs FILETIME.cs FUNCDESC.cs FUNCFLAGS.cs 
        FUNCKIND.cs HandleRef.cs IDLDESC.cs IDLFLAG.cs 
        IDispatchImplAttribute.cs IDispatchImplType.cs 
        IMPLTYPEFLAGS.cs INVOKEKIND.cs IRegistrationServices.cs 
        ITypeLibConverter.cs ITypeLibExporterNameProvider.cs 
        ITypeLibExporterNotifySink.cs ITypeLibImporterNotifySink.cs 
        ImportedFromTypeLibAttribute.cs ImporterEventKind.cs 
        InvalidComObjectException.cs InvalidOleVariantTypeException.cs 
        LCIDConversionAttribute.cs LIBFLAGS.cs 
        MarshalDirectiveException.cs ObjectCreationDelegate.cs 
        OptionalAttribute.cs PARAMDESC.cs PARAMFLAG.cs 
        PreserveSigAttribute.cs PrimaryInteropAssemblyAttribute.cs 
        ProgIdAttribute.cs RegistrationServices.cs 
        RuntimeEnvironment.cs SEHException.cs STATSTG.cs SYSKIND.cs 
        SafeArrayRankMismatchException.cs 
        SafeArrayTypeMismatchException.cs TYPEATTR.cs TYPEDESC.cs 
        TYPEFLAGS.cs TYPEKIND.cs TYPELIBATTR.cs TypeLibConverter.cs 
        TypeLibExporterFlags.cs TypeLibFuncAttribute.cs 
        TypeLibFuncFlags.cs TypeLibImporterFlags.cs 
        TypeLibTypeAttribute.cs TypeLibTypeFlags.cs 
        TypeLibVarAttribute.cs TypeLibVarFlags.cs UCOMIBindCtx.cs 
        UCOMIConnectionPoint.cs UCOMIConnectionPointContainer.cs 
        UCOMIEnumConnectionPoints.cs UCOMIEnumConnections.cs 
        UCOMIEnumMoniker.cs UCOMIEnumString.cs UCOMIEnumVARIANT.cs 
        UCOMIMoniker.cs UCOMIPersistFile.cs UCOMIRunningObjectTable.cs 
        UCOMIStream.cs UCOMITypeComp.cs UnknownWrapper.cs VARDESC.cs 
        VARFLAGS.cs VarEnum.cs 
Removed Files:
        ExposeHResultAttribute.cs 
Log Message:


Add a large number of missing non-ECMA classes in the
"System.Runtime.InteropServices" namespace.


--- NEW FILE ---
/*
 * ArrayWithOffset.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ArrayWithOffset" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public struct ArrayWithOffset
{
        // Internal state.
        private Array array;
        private int offset;

        // Constructor.
        public ArrayWithOffset(Array array, int offset)
                        {
                                this.array = array;
                                this.offset = offset;
                        }

        // Determine if two objects are equal.
        public override bool Equals(Object obj)
                        {
                                if(obj is ArrayWithOffset)
                                {
                                        ArrayWithOffset other = 
(ArrayWithOffset)obj;
                                        return (array == other.array && offset 
== other.offset);
                                }
                                else
                                {
                                        return false;
                                }
                        }

        // Get the array from this structure.
        public Array GetArray()
                        {
                                return array;
                        }

        // Get a hash code for this instance.
        public override int GetHashCode()
                        {
                                return offset;
                        }

        // Get the offset from this structure.
        public int GetOffset()
                        {
                                return offset;
                        }

}; // struct ArrayWithOffset

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * AssemblyRegistrationFlags.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.AssemblyRegistrationFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Flags]
[Serializable]
public enum AssemblyRegistrationFlags
{
        None        = 0,
        SetCodeBase = 1

}; // enum AssemblyRegistrationFlags

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * AutomationProxyAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.AutomationProxyAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Assembly |
                                AttributeTargets.Class |
                                AttributeTargets.Interface)]
public sealed class AutomationProxyAttribute : Attribute
{
        // Internal state.
        private bool val;

        // Constructor.
        public AutomationProxyAttribute(bool val)
                        {
                                this.val = val;
                        }

        // Fetch the attribute's value.
        public bool Value
                        {
                                get
                                {
                                        return val;
                                }
                        }

}; // class AutomationProxyAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * BINDPTR.cs - Implementation of the
 *                      "System.Runtime.InteropServices.BINDPTR" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[StructLayout(LayoutKind.Explicit)]
public struct BINDPTR
{
        // Accessible state.
        [FieldOffset(0)] public IntPtr lpfuncdesc;
        [FieldOffset(0)] public IntPtr lptcomp;
        [FieldOffset(0)] public IntPtr lpvardesc;

}; // struct BINDPTR

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * BIND_OPTS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.BIND_OPTS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct BIND_OPTS
{
        // Accessible state.
        public int cbStruct;
        public int grfFlags;
        public int grfMode;
        public int dwTickCountDeadline;

}; // struct BIND_OPTS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * CALLCONV.cs - Implementation of the
 *                      "System.Runtime.InteropServices.CALLCONV" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
public enum CALLCONV
{
        CC_CDECL     = 1,
        CC_PASCAL    = 2,
        CC_MSCPASCAL = CC_PASCAL,
        CC_MACPASCAL = 3,
        CC_STDCALL   = 4,
        CC_RESERVED  = 5,
        CC_SYSCALL   = 6,
        CC_MPWCDECL  = 7,
        CC_MPWPASCAL = 8,
        CC_MAX       = 9

}; // enum CALLCONV

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * COMException.cs - Implementation of the
 *                      "System.Runtime.InteropServices.COMException" class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class COMException : ExternalException
{

        private int errorCode;

        // Constructors.
        public COMException()
                        : base(_("Exception_COM")) {}
        public COMException(String msg)
                        : base(msg) {}
        public COMException(String msg, Exception inner)
                        : base(msg, inner) {}
        public COMException(String msg, int errorCode)
                        : base(msg, errorCode) {}
        protected COMException(SerializationInfo info, StreamingContext context)
                        : base(info, context) {}

        // Convert this object into a string.
        public override String ToString()
                        {
                                return base.ToString();
                        }

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_COM");
                                }
                        }

}; // class COMException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * CONNECTDATA.cs - Implementation of the
 *                      "System.Runtime.InteropServices.CONNECTDATA" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct CONNECTDATA
{
        // Accessible state.
        [MarshalAs(UnmanagedType.Interface)] public Object pUnk;
        public int dwCookie;

}; // struct CONNECTDATA

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * CoClassAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.AutomationProxyAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Interface)]
public sealed class CoClassAttribute : Attribute
{
        // Internal state.
        private Type coClass;

        // Constructor.
        public CoClassAttribute(Type coClass)
                        {
                                this.coClass = coClass;
                        }

        // Fetch the attribute's value.
        public Type CoClass
                        {
                                get
                                {
                                        return coClass;
                                }
                        }

}; // class CoClassAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ComAliasNameAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ComAliasNameAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Property |
                                AttributeTargets.Field |
                                AttributeTargets.Parameter |
                                AttributeTargets.ReturnValue)]
public sealed class ComAliasNameAttribute : Attribute
{
        // Internal state.
        private String alias;

        // Constructor.
        public ComAliasNameAttribute(String alias)
                        {
                                this.alias = alias;
                        }

        // Fetch the attribute's value.
        public String Value
                        {
                                get
                                {
                                        return alias;
                                }
                        }

}; // class ComAliasNameAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ComConversionLossAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ComConversionLossAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.All)]
public sealed class ComConversionLossAttribute : Attribute
{
        // Constructor.
        public ComConversionLossAttribute() {}

}; // class ComConversionLossAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ComEventInterfaceAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ComEventInterfaceAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Interface)]
public sealed class ComEventInterfaceAttribute : Attribute
{
        // Internal state.
        private Type sourceInterface;
        private Type eventProvider;

        // Constructor.
        public ComEventInterfaceAttribute(Type SourceInterface, Type 
EventProvider)
                        {
                                this.sourceInterface = SourceInterface;
                                this.eventProvider = EventProvider;
                        }

        // Fetch the attribute's values.
        public Type SourceInterface
                        {
                                get
                                {
                                        return sourceInterface;
                                }
                        }
        public Type EventProvider
                        {
                                get
                                {
                                        return eventProvider;
                                }
                        }

}; // class ComEventInterfaceAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ComRegisterFunctionAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ComRegisterFunctionAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Method)]
public sealed class ComRegisterFunctionAttribute : Attribute
{
        // Constructor.
        public ComRegisterFunctionAttribute() {}

}; // class ComRegisterFunctionAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ComSourceInterfacesAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ComSourceInterfacesAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Class)]
public sealed class ComSourceInterfacesAttribute : Attribute
{
        // Internal state.
        private String value;

        // Constructors.
        public ComSourceInterfacesAttribute(String sourceInterfaces)
                        {
                                this.value = sourceInterfaces;
                        }
        public ComSourceInterfacesAttribute(Type sourceInterface)
                        {
                                this.value = sourceInterface.ToString();
                        }
        public ComSourceInterfacesAttribute(Type sourceInterface1,
                                                                                
Type sourceInterface2)
                        {
                                this.value = sourceInterface1.ToString() + "," +
                                                         
sourceInterface2.ToString();
                        }
        public ComSourceInterfacesAttribute(Type sourceInterface1,
                                                                                
Type sourceInterface2,
                                                                                
Type sourceInterface3)
                        {
                                this.value = sourceInterface1.ToString() + "," +
                                                         
sourceInterface2.ToString() + "," +
                                                         
sourceInterface3.ToString();
                        }
        public ComSourceInterfacesAttribute(Type sourceInterface1,
                                                                                
Type sourceInterface2,
                                                                                
Type sourceInterface3,
                                                                                
Type sourceInterface4)
                        {
                                this.value = sourceInterface1.ToString() + "," +
                                                         
sourceInterface2.ToString() + "," +
                                                         
sourceInterface3.ToString() + "," +
                                                         
sourceInterface4.ToString();
                        }

        // Fetch the attribute's value.
        public String Value
                        {
                                get
                                {
                                        return value;
                                }
                        }

}; // class ComSourceInterfacesAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ComUnregisterFunctionAttribute.cs - Implementation of the
 *              "System.Runtime.InteropServices.ComUnregisterFunctionAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Method)]
public sealed class ComUnregisterFunctionAttribute : Attribute
{
        // Constructor.
        public ComUnregisterFunctionAttribute() {}

}; // class ComUnregisterFunctionAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * CurrencyWrapper.cs - Implementation of the
 *                      "System.Runtime.InteropServices.CurrencyWrapper" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public sealed class CurrencyWrapper
{
        // Internal state.
        private Decimal value;

        // Constructors.
        public CurrencyWrapper(Decimal obj)
                        {
                                value = obj;
                        }
        public CurrencyWrapper(Object obj)
                        {
                                if(obj is Decimal)
                                {
                                        value = (Decimal)obj;
                                }
                                else
                                {
                                        throw new ArgumentException
                                                (_("Arg_MustBeDecimal"), "obj");
                                }
                        }

        // Get the wrapped currency value.
        public Decimal WrappedObject
                        {
                                get
                                {
                                        return value;
                                }
                        }

}; // class CurrencyWrapper

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * DESCKIND.cs - Implementation of the
 *                      "System.Runtime.InteropServices.DESCKIND" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
public enum DESCKIND
{
        DESCKIND_NONE                   = 0,
        DESCKIND_FUNCDESC               = 1,
        DESCKIND_VARDESC                = 2,
        DESCKIND_TYPECOMP               = 3,
        DESCKIND_IMPLICITAPPOBJ = 4,
        DESCKIND_MAX                    = 5

}; // enum DESCKIND

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * DISPPARAMS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.DISPPARAMS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct DISPPARAMS
{
        // Accessible state.
        public IntPtr rgvarg;
        public IntPtr rgdispidNamedArgs;
        public int cArgs;
        public int cNamedArgs;

}; // struct DISPPARAMS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * DispatchWrapper.cs - Implementation of the
 *                      "System.Runtime.InteropServices.DispatchWrapper" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public sealed class DispatchWrapper
{
        // Internal state.
        private Object value;

        // Constructors.
        public DispatchWrapper(Object obj)
                        {
                                value = obj;
                        }

        // Get the wrapped dispatch object value.
        public Object WrappedObject
                        {
                                get
                                {
                                        return value;
                                }
                        }

}; // class DispatchWrapper

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ELEMDESC.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ELEMDESC" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct ELEMDESC
{
        [StructLayout(LayoutKind.Explicit)]
        [ComVisible(false)]
        public struct DESCUNION
        {
                [FieldOffset(0)] public IDLDESC idldesc;
                [FieldOffset(0)] public PARAMDESC paramdesc;

        }; // struct DESCUNION

        public TYPEDESC tdesc;
        public DESCUNION desc;

}; // struct ELEMDESC

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * EXCEPINFO.cs - Implementation of the
 *                      "System.Runtime.InteropServices.EXCEPINFO" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct EXCEPINFO
{
        // Accessible state.
        public short wCode;
        public short wReserved;
        [MarshalAs(UnmanagedType.BStr)] public String bstrSource;
        [MarshalAs(UnmanagedType.BStr)] public String bstrDescription;
        [MarshalAs(UnmanagedType.BStr)] public String bstrHelpFile;
        public int dwHelpContext;
        public IntPtr pvReserved;
        public IntPtr pfnDeferredFillIn;

}; // struct EXCEPINFO

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ErrorWrapper.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ErrorWrapper" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public sealed class ErrorWrapper
{
        // Internal state.
        private int code;

        // Constructors.
        public ErrorWrapper(Exception e)
                        {
                                code = Marshal.GetHRForException(e);
                        }
        public ErrorWrapper(int errorCode)
                        {
                                code = errorCode;
                        }
        public ErrorWrapper(Object errorCode)
                        {
                                if(errorCode is int)
                                {
                                        code = (int)errorCode;
                                }
                                else
                                {
                                        throw new ArgumentException
                                                (_("Arg_MustBeInt32"), 
"errorCode");
                                }
                        }

        // Get the wrapped error code.
        public int ErrorCode
                        {
                                get
                                {
                                        return code;
                                }
                        }

}; // class ErrorWrapper

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ExporterEventKind.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ExporterEventKind" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
public enum ExporterEventKind
{
        NOTIF_TYPECONVERTED        = 0,
        NOTIF_CONVERTWARNING       = 1,
        ERROR_REFTOINVALIDASSEMBLY = 2

}; // enum ExporterEventKind

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ExtensibleClassFactory.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ExtensibleClassFactory" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public sealed class ExtensibleClassFactory
{
        // Constructor.
        private ExtensibleClassFactory() {}

        // Register an object creation callback delegate.
        public static void RegisterObjectCreationCallback
                                (ObjectCreationDelegate callback)
                        {
                                // Not used in this implementation.
                        }

}; // class ExtensibleClassFactory

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * FILETIME.cs - Implementation of the
 *                      "System.Runtime.InteropServices.FILETIME" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct FILETIME
{
        // Accessible state.
        public int dwLowDateTime;
        public int dwHighDateTime;

}; // struct FILETIME

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * FUNCDESC.cs - Implementation of the
 *                      "System.Runtime.InteropServices.FUNCDESC" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct FUNCDESC
{
        // Accessible state.
        public int memid;
        public IntPtr lprgscode;
        public IntPtr lprgelemdescParam;
        public FUNCKIND funckind;
        public INVOKEKIND invkind;
        public CALLCONV callconv;
        public short cParams;
        public short cParamsOpt;
        public short oVft;
        public short cScodes;
        public ELEMDESC elemdescFunc;
        public short wFuncFlags;

}; // struct FUNCDESC

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * FUNCFLAGS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.FUNCFLAGS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum FUNCFLAGS : short
{
        FUNCFLAG_FRESTRICTED            = 0x0001,
        FUNCFLAG_FSOURCE                        = 0x0002,
        FUNCFLAG_FBINDABLE                      = 0x0004,
        FUNCFLAG_FREQUESTEDIT           = 0x0008,
        FUNCFLAG_FDISPLAYBIND           = 0x0010,
        FUNCFLAG_FDEFAULTBIND           = 0x0020,
        FUNCFLAG_FHIDDEN                        = 0x0040,
        FUNCFLAG_FUSESGETLASTERROR      = 0x0080,
        FUNCFLAG_FDEFAULTCOLLELEM       = 0x0100,
        FUNCFLAG_FUIDEFAULT                     = 0x0200,
        FUNCFLAG_FNONBROWSABLE          = 0x0400,
        FUNCFLAG_FREPLACEABLE           = 0x0800,
        FUNCFLAG_FIMMEDIATEBIND         = 0x1000

}; // enum FUNCFLAGS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * FUNCKIND.cs - Implementation of the
 *                      "System.Runtime.InteropServices.FUNCKIND" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
public enum FUNCKIND
{
        FUNC_VIRTUAL     = 0,
        FUNC_PUREVIRTUAL = 1,
        FUNC_NONVIRTUAL  = 2,
        FUNC_STATIC      = 3,
        FUNC_DISPATCH    = 4

}; // enum FUNCKIND

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * HandleRef.cs - Implementation of the
 *                      "System.Runtime.InteropServices.HandleRef" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public struct HandleRef
{
        // Internal state.
        private Object wrapper;
        private IntPtr handle;

        // Constructor.
        public HandleRef(Object wrapper, IntPtr handle)
                        {
                                this.wrapper = wrapper;
                                this.handle = handle;
                        }

        // Get this instance's fields.
        public IntPtr Handle
                        {
                                get
                                {
                                        return handle;
                                }
                        }
        public Object Wrapper
                        {
                                get
                                {
                                        return wrapper;
                                }
                        }

        // Convert a handle reference into an IntPtr.
        public static explicit operator IntPtr(HandleRef value)
                        {
                                return value.handle;
                        }

}; // struct HandleRef

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * IDLDESC.cs - Implementation of the
 *                      "System.Runtime.InteropServices.IDLDESC" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct IDLDESC
{
        // Accessible state.
        public int dwReserved;
        public IDLFLAG wIDLFlags;

}; // struct IDLDESC

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * IDLFLAG.cs - Implementation of the
 *                      "System.Runtime.InteropServices.IDLFLAG" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum IDLFLAG : short
{
        IDLFLAG_NONE    = 0x0000,
        IDLFLAG_FIN     = 0x0001,
        IDLFLAG_FOUT    = 0x0002,
        IDLFLAG_FLCID   = 0x0004,
        IDLFLAG_FRETVAL = 0x0008

}; // enum IDLFLAG

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * IDispatchImplAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.IDispatchImplAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class)]
public sealed class IDispatchImplAttribute : Attribute
{
        // Internal state.
        private IDispatchImplType implType;

        // Constructor.
        public IDispatchImplAttribute(IDispatchImplType implType)
                        {
                                this.implType = implType;
                        }
        public IDispatchImplAttribute(short implType)
                        {
                                this.implType = (IDispatchImplType)implType;
                        }

        // Fetch the attribute's value.
        public IDispatchImplType Value
                        {
                                get
                                {
                                        return implType;
                                }
                        }

}; // class IDispatchImplAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * IDispatchImplType.cs - Implementation of the
 *                      "System.Runtime.InteropServices.IDispatchImplType" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
public enum IDispatchImplType
{
        SystemDefinedImpl = 0,
        InternalImpl      = 1,
        CompatibleImpl    = 2

}; // enum IDispatchImplType

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * IMPLTYPEFLAGS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.IMPLTYPEFLAGS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum IMPLTYPEFLAGS
{
        IMPLTYPEFLAG_FDEFAULT       = 0x0001,
        IMPLTYPEFLAG_FSOURCE        = 0x0002,
        IMPLTYPEFLAG_FRESTRICTED    = 0x0004,
        IMPLTYPEFLAG_FDEFAULTVTABLE = 0x0008

}; // enum IMPLTYPEFLAGS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * INVOKEKIND.cs - Implementation of the
 *                      "System.Runtime.InteropServices.INVOKEKIND" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
public enum INVOKEKIND
{
        INVOKE_FUNC           = 0x0001,
        INVOKE_PROPERTYGET    = 0x0002,
        INVOKE_PROPERTYSET    = 0x0004,
        INVOKE_PROPERTYPUTREF = 0x0008

}; // enum INVOKEKIND

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * IRegistrationServices.cs - Implementation of the
 *                      "System.Runtime.InteropServices.IRegistrationServices" 
class.
 *
 * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;

[Guid("")]
public interface IRegistrationServices
{

        // Get the GUID of the managed category.
        Guid GetManagedCategoryGuid();

        // Get the program identifier for a specific type.
        String GetProgIdForType(Type type);

        // Get a list of types that can be registered.
        Type[] GetRegistrableTypesInAssembly(Assembly assembly);

        // Register the types in a particular assembly.
        bool RegisterAssembly(Assembly assembly, AssemblyRegistrationFlags 
flags);

        // Register a particular type for COM clients.
        void RegisterTypeForComClients(Type type, ref Guid g);

        // Determine if a particular type is a COM type.
        bool TypeRepresentsComType(Type type);

        // Determine if a particular type requires registration.
        bool TypeRequiresRegistration(Type type);

        // Unregister the types in a particular assembly.
        bool UnregisterAssembly(Assembly assembly);

}; // interface IRegistrationServices

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ITypeLibConverter.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ITypeLibConverter" 
class.
 *
 * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;
using System.Reflection.Emit;

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITypeLibConverter
{

        // Convert an assembly into a type library.
        Object ConvertAssemblyToTypeLib
                                (Assembly assembly, String typeLibName,
                                 TypeLibExporterFlags flags,
                                 ITypeLibExporterNotifySink notifySink);

        // Convert a type library into an emitted assembly.
        AssemblyBuilder ConvertTypeLibToAssembly
                                (Object typeLib, String asmFileName,
                                 int flags, ITypeLibImporterNotifySink 
notifySink,
                                 byte[] publicKey, StrongNameKeyPair keyPair,
                                 bool unsafeInterfaces);
        AssemblyBuilder ConvertTypeLibToAssembly
                                (Object typeLib, String asmFileName,
                                 TypeLibImporterFlags flags,
                                 ITypeLibImporterNotifySink notifySink,
                                 byte[] publicKey, StrongNameKeyPair keyPair,
                                 String asmNamespace, Version asmVersion);

        // Get a primary interoperability assembly.
        bool GetPrimaryInteropAssembly
                                (Guid g, int major, int minor, int lcid,
                                 out String asmName, out String asmCodeBase);

}; // interface ITypeLibConverter

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ITypeLibExporterNameProvider.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ITypeLibExporterNameProvider" class.
 *
 * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;
using System.Reflection.Emit;

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITypeLibExporterNameProvider
{

        // Get the name list from this provider.
        String[] GetNames();

}; // interface ITypeLibExporterNameProvider

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ITypeLibExporterNotifySink.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ITypeLibExporterNotifySink" class.
 *
 * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITypeLibExporterNotifySink
{

        // Report an event that occurred while converting an assembly.
        void ReportEvent(ExporterEventKind eventKind,
                                         int eventCode, String eventMsg);

        // Resolve a type library reference to an assembly.
        Object ResolveRef(Assembly assembly);

}; // interface ITypeLibExporterNotifySink

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ITypeLibImporterNotifySink.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ITypeLibImporterNotifySink" class.
 *
 * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITypeLibImporterNotifySink
{

        // Report an event that occurred while converting an assembly.
        void ReportEvent(ImporterEventKind eventKind,
                                         int eventCode, String eventMsg);

        // Resolve a type library reference to an assembly.
        Assembly ResolveRef(Object typeLib);

}; // interface ITypeLibImporterNotifySink

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ImportedFromTypeLibAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.ImportedFromTypeLibAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Assembly)]
public sealed class ImportedFromTypeLibAttribute : Attribute
{
        // Internal state.
        private String tlbFile;

        // Constructor.
        public ImportedFromTypeLibAttribute(String tlbFile)
                        {
                                this.tlbFile = tlbFile;
                        }

        // Fetch the attribute's value.
        public String Value
                        {
                                get
                                {
                                        return tlbFile;
                                }
                        }

}; // class ImportedFromTypeLibAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ImporterEventKind.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ImporterEventKind" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
public enum ImporterEventKind
{
        NOTIF_TYPECONVERTED       = 0,
        NOTIF_CONVERTWARNING      = 1,
        ERROR_REFTOINVALIDTYPELIB = 2

}; // enum ImporterEventKind

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * InvalidComObjectException.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.InvalidComObjectException" class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class InvalidComObjectException : SystemException
{

        // Constructors.
        public InvalidComObjectException()
                        : base(_("Exception_InvalidComObject")) {}
        public InvalidComObjectException(String msg)
                        : base(msg) {}
        public InvalidComObjectException(String msg, Exception inner)
                        : base(msg, inner) {}
        protected InvalidComObjectException(SerializationInfo info,
                                                                                
StreamingContext context)
                        : base(info, context) {}

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_InvalidComObject");
                                }
                        }

}; // class InvalidComObjectException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * InvalidOleVariantTypeException.cs - Implementation of the
 *      "System.Runtime.InteropServices.InvalidOleVariantTypeException" class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class InvalidOleVariantTypeException : SystemException
{

        // Constructors.
        public InvalidOleVariantTypeException()
                        : base(_("Exception_InvalidOleType")) {}
        public InvalidOleVariantTypeException(String msg)
                        : base(msg) {}
        public InvalidOleVariantTypeException(String msg, Exception inner)
                        : base(msg, inner) {}
        protected InvalidOleVariantTypeException(SerializationInfo info,
                                                                                
     StreamingContext context)
                        : base(info, context) {}

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_InvalidOleType");
                                }
                        }

}; // class InvalidOleVariantTypeException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * LCIDConversionAttribute.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.LCIDConversionAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Method)]
public sealed class LCIDConversionAttribute : Attribute
{
        // Internal state.
        private int lcid;

        // Constructor.
        public LCIDConversionAttribute(int lcid)
                        {
                                this.lcid = lcid;
                        }

        // Fetch the attribute's value.
        public int Value
                        {
                                get
                                {
                                        return lcid;
                                }
                        }

}; // class LCIDConversionAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * LIBFLAGS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.LIBFLAGS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum LIBFLAGS : short
{
        LIBFLAG_FRESTRICTED   = 0x0001,
        LIBFLAG_FCONTROL      = 0x0002,
        LIBFLAG_FHIDDEN       = 0x0004,
        LIBFLAG_FHASDISKIMAGE = 0x0008

}; // enum LIBFLAGS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * MarshalDirectiveException.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.MarshalDirectiveException" class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class MarshalDirectiveException : SystemException
{

        // Constructors.
        public MarshalDirectiveException()
                        : base(_("Exception_MarshalDirective")) {}
        public MarshalDirectiveException(String msg)
                        : base(msg) {}
        public MarshalDirectiveException(String msg, Exception inner)
                        : base(msg, inner) {}
        protected MarshalDirectiveException(SerializationInfo info,
                                                                                
StreamingContext context)
                        : base(info, context) {}

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_MarshalDirective");
                                }
                        }

}; // class MarshalDirectiveException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ObjectCreationDelegate.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ObjectCreationDelegate" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public delegate IntPtr ObjectCreationDelegate(IntPtr aggregator);

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * OptionalAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.OptionalAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Parameter)]
public sealed class OptionalAttribute : Attribute
{

        // Constructor.
        public OptionalAttribute() : base() {}

}; // class OptionalAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * PARAMDESC.cs - Implementation of the
 *                      "System.Runtime.InteropServices.PARAMDESC" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct PARAMDESC
{
        // Accessible state.
        public IntPtr lpVarValue;
        public PARAMFLAG wParamFlags;

}; // struct PARAMDESC

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * PARAMFLAG.cs - Implementation of the
 *                      "System.Runtime.InteropServices.PARAMFLAG" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum PARAMFLAG : short
{
        PARAMFLAG_NONE         = 0x0000,
        PARAMFLAG_FIN          = 0x0001,
        PARAMFLAG_FOUT         = 0x0002,
        PARAMFLAG_FLCID        = 0x0004,
        PARAMFLAG_FRETVAL      = 0x0008,
        PARAMFLAG_FOPT         = 0x0010,
        PARAMFLAG_HASDEFAULT   = 0x0020,
        PARAMFLAG_FHASCUSTDATA = 0x0040

}; // enum PARAMFLAG

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * PreserveSigAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.PreserveSigAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Method)]
public sealed class PreserveSigAttribute : Attribute
{

        // Constructor.
        public PreserveSigAttribute() : base() {}

}; // class PreserveSigAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * PrimaryInteropAssemblyAttribute.cs - Implementation of the
 *      "System.Runtime.InteropServices.PrimaryInteropAssemblyAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Assembly)]
public sealed class PrimaryInteropAssemblyAttribute : Attribute
{
        // Internal state.
        private int major;
        private int minor;

        // Constructor.
        public PrimaryInteropAssemblyAttribute(int major, int minor)
                        {
                                this.major = major;
                                this.minor = minor;
                        }

        // Fetch the attribute's values.
        public int MajorVersion
                        {
                                get
                                {
                                        return major;
                                }
                        }
        public int MinorVersion
                        {
                                get
                                {
                                        return minor;
                                }
                        }

}; // class PrimaryInteropAssemblyAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * ProgIdAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.ProgIdAttribute" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Class)]
public sealed class ProgIdAttribute : Attribute
{
        // Internal state.
        private String progId;

        // Constructor.
        public ProgIdAttribute(String progId)
                        {
                                this.progId = progId;
                        }

        // Get this attribute's value.
        public String Value
                        {
                                get
                                {
                                        return progId;
                                }
                        }

}; // class ProgIdAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * RegistrationServices.cs - Implementation of the
 *                      "System.Runtime.InteropServices.RegistrationServices" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;

// We don't support COM registration in this implementation.

[ClassInterface(ClassInterfaceType.None)]
[Guid("")]
public class RegistrationServices : IRegistrationServices
{

        // Constructor.
        public RegistrationServices() {}

        // Get the GUID of the managed category.
        public virtual Guid GetManagedCategoryGuid()
                        {
                                throw new NotImplementedException();
                        }

        // Get the program identifier for a specific type.
        public virtual String GetProgIdForType(Type type)
                        {
                                throw new NotImplementedException();
                        }

        // Get a list of types that can be registered.
        public virtual Type[] GetRegistrableTypesInAssembly(Assembly assembly)
                        {
                                throw new NotImplementedException();
                        }

        // Register the types in a particular assembly.
        public virtual bool RegisterAssembly
                                (Assembly assembly, AssemblyRegistrationFlags 
flags)
                        {
                                throw new NotImplementedException();
                        }

        // Register a particular type for COM clients.
        public virtual void RegisterTypeForComClients(Type type, ref Guid g)
                        {
                                throw new NotImplementedException();
                        }

        // Determine if a particular type is a COM type.
        public virtual bool TypeRepresentsComType(Type type)
                        {
                                throw new NotImplementedException();
                        }

        // Determine if a particular type requires registration.
        public virtual bool TypeRequiresRegistration(Type type)
                        {
                                throw new NotImplementedException();
                        }

        // Unregister the types in a particular assembly.
        public virtual bool UnregisterAssembly(Assembly assembly)
                        {
                                throw new NotImplementedException();
                        }

}; // class RegistrationServices

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * RuntimeEnvironment.cs - Implementation of the
 *                      "System.Runtime.InteropServices.RuntimeEnvironment" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;

public class RuntimeEnvironment
{

        // Constructor.
        public RuntimeEnvironment() {}

        // Get the system configuration file.
        public static String SystemConfigurationFile
                        {
                                get
                                {
                                        // We don't use system config files in 
this implementation.
                                        throw new NotImplementedException();
                                }
                        }

        // Determine if an assembly was loaded from the global access cache.
        public static bool FromGlobalAccessCache(Assembly assembly)
                        {
                                // This implementation doesn't use a GAC.
                                return false;
                        }

        // Get the directory where the runtime engine is installed.
        public static String GetRuntimeDirectory()
                        {
                                // We don't allow this to be inspected in this 
implementation.
                                throw new NotImplementedException();
                        }

        // Get the version of the runtime being used for the current process.
        public static String GetRuntimeVersion()
                        {
                                return Environment.Version.ToString();
                        }

}; // class RuntimeEnvironment

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * SEHException.cs - Implementation of the
 *              "System.Runtime.InteropServices.SEHException" class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class SEHException : SystemException
{

        // Constructors.
        public SEHException()
                        : base(_("Exception_SEH")) {}
        public SEHException(String msg)
                        : base(msg) {}
        public SEHException(String msg, Exception inner)
                        : base(msg, inner) {}
        protected SEHException(SerializationInfo info, StreamingContext context)
                        : base(info, context) {}

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_SEH");
                                }
                        }

        // Determine if this exception can be resumed.
        public virtual bool CanResume()
                        {
                                return false;
                        }

}; // class SEHException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * STATSTG.cs - Implementation of the
 *                      "System.Runtime.InteropServices.STATSTG" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct STATSTG
{
        // Accessible state.
        public String pwcsName;
        public int type;
        public long cbSize;
        public FILETIME mtime;
        public FILETIME ctime;
        public FILETIME atime;
        public int grfMode;
        public int grfLocksSupported;
        public Guid clsid;
        public int grfStateBits;
        public int reserved;

}; // struct STATSTG

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * SYSKIND.cs - Implementation of the
 *                      "System.Runtime.InteropServices.SYSKIND" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
public enum SYSKIND
{
        SYS_WIN16 = 0,
        SYS_WIN32 = 1,
        SYS_MAC   = 2

}; // enum SYSKIND

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * SafeArrayRankMismatchException.cs - Implementation of the
 *              "System.Runtime.InteropServices.SafeArrayRankMismatchException" 
class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class SafeArrayRankMismatchException : SystemException
{

        // Constructors.
        public SafeArrayRankMismatchException()
                        : base(_("Exception_SafeArrayRank")) {}
        public SafeArrayRankMismatchException(String msg)
                        : base(msg) {}
        public SafeArrayRankMismatchException(String msg, Exception inner)
                        : base(msg, inner) {}
        protected SafeArrayRankMismatchException(SerializationInfo info,
                                                                                
     StreamingContext context)
                        : base(info, context) {}

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_SafeArrayRank");
                                }
                        }

}; // class SafeArrayRankMismatchException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * SafeArrayTypeMismatchException.cs - Implementation of the
 *              "System.Runtime.InteropServices.SafeArrayTypeMismatchException" 
class 
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Runtime.Serialization;

[Serializable]
public class SafeArrayTypeMismatchException : SystemException
{

        // Constructors.
        public SafeArrayTypeMismatchException()
                        : base(_("Exception_SafeArrayType")) {}
        public SafeArrayTypeMismatchException(String msg)
                        : base(msg) {}
        public SafeArrayTypeMismatchException(String msg, Exception inner)
                        : base(msg, inner) {}
        protected SafeArrayTypeMismatchException(SerializationInfo info,
                                                                                
     StreamingContext context)
                        : base(info, context) {}

        // Get the default message to use for this exception type.
        protected internal override String MessageDefault
                        {
                                get
                                {
                                        return _("Exception_SafeArrayType");
                                }
                        }

}; // class SafeArrayTypeMismatchException

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TYPEATTR.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TYPEATTR" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct TYPEATTR
{
        // Accessible state.
        public const int MEMBER_ID_NIL = -1;
        public Guid guid;
        public int lcid;
        public int dwReserved;
        public int memidConstructor;
        public int memidDestructor;
        public IntPtr lpstrSchema;
        public int cbSizeInstance;
        public TYPEKIND typekind;
        public short cFuncs;
        public short cVars;
        public short cImplTypes;
        public short cbSizeVft;
        public short cbAlignment;
        public TYPEFLAGS wTypeFlags;
        public short wMajorVerNum;
        public short wMinorVerNum;
        public TYPEDESC tdescAlias;
        public IDLDESC ildescType;

}; // struct TYPEATTR

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TYPEDESC.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TYPEDESC" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct TYPEDESC
{
        // Accessible state.
        public IntPtr lpValue;
        public short vt;

}; // struct TYPEDESC

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TYPEFLAGS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TYPEFLAGS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum TYPEFLAGS : short
{
        TYPEFLAG_FAPPOBJECT     = 0x0001,
        TYPEFLAG_FCANCREATE     = 0x0002,
        TYPEFLAG_FLICENSED      = 0x0004,
        TYPEFLAG_FPREDECLID     = 0x0008,
        TYPEFLAG_FHIDDEN        = 0x0010,
        TYPEFLAG_FCONTROL       = 0x0020,
        TYPEFLAG_FDUAL          = 0x0040,
        TYPEFLAG_FNONEXTENSIBLE = 0x0080,
        TYPEFLAG_FOLEAUTOMATION = 0x0100,
        TYPEFLAG_FRESTRICTED    = 0x0200,
        TYPEFLAG_FAGGREGATABLE  = 0x0400,
        TYPEFLAG_FREPLACEABLE   = 0x0800,
        TYPEFLAG_FDISPATCHABLE  = 0x1000,
        TYPEFLAG_FREVERSEBIND   = 0x2000,
        TYPEFLAG_FPROXY         = 0x4000

}; // enum TYPEFLAGS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TYPEKIND.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TYPEKIND" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
public enum TYPEKIND
{
        TKIND_ENUM      = 0,
        TKIND_RECORD    = 1,
        TKIND_MODULE    = 2,
        TKIND_INTERFACE = 3,
        TKIND_DISPATCH  = 4,
        TKIND_COCLASS   = 5,
        TKIND_ALIAS     = 6,
        TKIND_UNION     = 7,
        TKIND_MAX       = 8

}; // enum TYPEKIND

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TYPELIBATTR.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TYPELIBATTR" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct TYPELIBATTR
{
        // Accessible state.
        public Guid guid;
        public int lcid;
        public SYSKIND syskind;
        public short wMajorVerNum;
        public short wMinorVerNum;
        public LIBFLAGS wLibFlags;

}; // struct TYPELIBATTR

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibConverter.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibConverter" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

using System.Reflection;
using System.Reflection.Emit;

// We don't support COM type library conversion in this implementation.

[ClassInterface(ClassInterfaceType.None)]
[Guid("")]
public class TypeLibConverter : ITypeLibConverter
{

        // Constructor.
        public TypeLibConverter() {}

        // Convert an assembly into a type library.
        public Object ConvertAssemblyToTypeLib
                                (Assembly assembly, String typeLibName,
                                 TypeLibExporterFlags flags,
                                 ITypeLibExporterNotifySink notifySink)
                        {
                                throw new NotImplementedException();
                        }

        // Convert a type library into an emitted assembly.
        public AssemblyBuilder ConvertTypeLibToAssembly
                                (Object typeLib, String asmFileName,
                                 int flags, ITypeLibImporterNotifySink 
notifySink,
                                 byte[] publicKey, StrongNameKeyPair keyPair,
                                 bool unsafeInterfaces)
                        {
                                throw new NotImplementedException();
                        }
        public AssemblyBuilder ConvertTypeLibToAssembly
                                (Object typeLib, String asmFileName,
                                 TypeLibImporterFlags flags,
                                 ITypeLibImporterNotifySink notifySink,
                                 byte[] publicKey, StrongNameKeyPair keyPair,
                                 String asmNamespace, Version asmVersion)
                        {
                                throw new NotImplementedException();
                        }

        // Get a primary interoperability assembly.
        public bool GetPrimaryInteropAssembly
                                (Guid g, int major, int minor, int lcid,
                                 out String asmName, out String asmCodeBase)
                        {
                                throw new NotImplementedException();
                        }

}; // class TypeLibConverter

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibExporterFlags.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibExporterFlags" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Flags]
[Serializable]
public enum TypeLibExporterFlags
{
        OnlyReferenceRegistered = 1

}; // enum TypeLibExporterFlags

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibFuncAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibFuncAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Method)]
public sealed class TypeLibFuncAttribute : Attribute
{
        // Internal state.
        private TypeLibFuncFlags flags;

        // Constructor.
        public TypeLibFuncAttribute(TypeLibFuncFlags flags)
                        {
                                this.flags = flags;
                        }
        public TypeLibFuncAttribute(short flags)
                        {
                                this.flags = (TypeLibFuncFlags)flags;
                        }

        // Get this attribute's value.
        public TypeLibFuncFlags Value
                        {
                                get
                                {
                                        return flags;
                                }
                        }

}; // class TypeLibFuncAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibFuncFlags.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibFuncFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
[Flags]
public enum TypeLibFuncFlags
{
        FRestricted       = 0x0001,
        FSource           = 0x0002,
        FBindable         = 0x0004,
        FRequestEdit      = 0x0008,
        FDisplayBind      = 0x0010,
        FDefaultBind      = 0x0020,
        FHidden           = 0x0040,
        FUsesGetLastError = 0x0080,
        FDefaultCollelem  = 0x0100,
        FUiDefault        = 0x0200,
        FNonBrowsable     = 0x0400,
        FReplaceable      = 0x0800,
        FImmediateBind    = 0x1000

}; // enum TypeLibFuncFlags

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibImporterFlags.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibImporterFlags" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Flags]
[Serializable]
public enum TypeLibImporterFlags
{
        PrimaryInteropAssembly = 0x0001,
        UnsafeInterfaces       = 0x0002,
        SafeArrayAsSystemArray = 0x0004

}; // enum TypeLibImporterFlags

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibTypeAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibTypeAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Class |
                                AttributeTargets.Struct |
                                AttributeTargets.Enum |
                                AttributeTargets.Interface)]
public sealed class TypeLibTypeAttribute : Attribute
{
        // Internal state.
        private TypeLibTypeFlags flags;

        // Constructor.
        public TypeLibTypeAttribute(TypeLibTypeFlags flags)
                        {
                                this.flags = flags;
                        }
        public TypeLibTypeAttribute(short flags)
                        {
                                this.flags = (TypeLibTypeFlags)flags;
                        }

        // Get this attribute's value.
        public TypeLibTypeFlags Value
                        {
                                get
                                {
                                        return flags;
                                }
                        }

}; // class TypeLibTypeAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibTypeFlags.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibTypeFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
[Flags]
public enum TypeLibTypeFlags
{
        FAppObject     = 0x0001,
        FCanCreate     = 0x0002,
        FLicensed      = 0x0004,
        FPreDeclId     = 0x0008,
        FHidden        = 0x0010,
        FControl       = 0x0020,
        FDual          = 0x0040,
        FNonExtensible = 0x0080,
        FOleAutomation = 0x0100,
        FRestricted    = 0x0200,
        FAggregatable  = 0x0400,
        FReplaceable   = 0x0800,
        FDispatchable  = 0x1000,
        FReverseBind   = 0x2000

}; // enum TypeLibTypeFlags

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibVarAttribute.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibVarAttribute" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[AttributeUsage(AttributeTargets.Field)]
public sealed class TypeLibVarAttribute : Attribute
{
        // Internal state.
        private TypeLibVarFlags flags;

        // Constructor.
        public TypeLibVarAttribute(TypeLibVarFlags flags)
                        {
                                this.flags = flags;
                        }
        public TypeLibVarAttribute(short flags)
                        {
                                this.flags = (TypeLibVarFlags)flags;
                        }

        // Get this attribute's value.
        public TypeLibVarFlags Value
                        {
                                get
                                {
                                        return flags;
                                }
                        }

}; // class TypeLibVarAttribute

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * TypeLibVarFlags.cs - Implementation of the
 *                      "System.Runtime.InteropServices.TypeLibVarFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
[Flags]
public enum TypeLibVarFlags
{
        FReadOnly         = 0x0001,
        FSource           = 0x0002,
        FBindable         = 0x0004,
        FRequestEdit      = 0x0008,
        FDisplayBind      = 0x0010,
        FDefaultBind      = 0x0020,
        FHidden           = 0x0040,
        FUsesGetLastError = 0x0080,
        FDefaultCollelem  = 0x0100,
        FUiDefault        = 0x0200,
        FNonBrowsable     = 0x0400,
        FReplaceable      = 0x0800,
        FImmediateBind    = 0x1000

}; // enum TypeLibVarFlags

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIBindCtx.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UCOMIBindCtx" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIBindCtx
{
        void EnumObjectParam(out UCOMIEnumString ppenum);
        void GetBindOptions(ref BIND_OPTS pbindopts);
        void GetObjectParam(String pszKey, out Object ppunk);
        void GetRunningObjectTable(out UCOMIRunningObjectTable pprot);
        void RegisterObjectBound(Object punk);
        void RegisterObjectParam(String pszKey, Object punk);
        void ReleaseBoundObjects();
        void RevokeObjectBound(Object punk);
        void RevokeObjectParam(String pszKey);
        void SetBindOptions(ref BIND_OPTS pbindopts);

}; // class UCOMIBindCtx

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIConnectionPoint.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UCOMIConnectionPoint" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIConnectionPoint
{
        void Advise(Object pUnkSink, out int pdwCookie);
        void EnumConnections(out UCOMIEnumConnections ppEnum);
        void GetConnectionInterface(out Guid pIID);
        void GetConnectionPointContainer(out UCOMIConnectionPointContainer 
ppCPC);
        void Unadvise(int dwCookie);

}; // class UCOMIConnectionPoint

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIConnectionPointContainer.cs - Implementation of the
 *      "System.Runtime.InteropServices.UCOMIConnectionPointContainer" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIConnectionPointContainer
{
        void EnumConnectionPoints(out UCOMIEnumConnectionPoints ppEnum);
        void FindConnectionPoint(ref Guid riid, out UCOMIConnectionPoint ppCP);

}; // class UCOMIConnectionPointContainer

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIEnumConnectionPoints.cs - Implementation of the
 *              "System.Runtime.InteropServices.UCOMIEnumConnectionPoints" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIEnumConnectionPoints
{
        void Clone(out UCOMIEnumConnectionPoints ppenum);
        int Next(int celt, UCOMIConnectionPoint[] rgelt, out int pceltFetched);
        int Reset();
        int Skip(int celt);

}; // class UCOMIEnumConnectionPoints

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIEnumConnections.cs - Implementation of the
 *              "System.Runtime.InteropServices.UCOMIEnumConnections" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIEnumConnections
{
        void Clone(out UCOMIEnumConnections ppenum);
        int Next(int celt, CONNECTDATA[] rgelt, out int pceltFetched);
        void Reset();
        int Skip(int celt);

}; // class UCOMIEnumConnections

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIEnumMoniker.cs - Implementation of the
 *              "System.Runtime.InteropServices.UCOMIEnumMoniker" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIEnumMoniker
{
        void Clone(out UCOMIEnumMoniker ppenum);
        int Next(int celt, UCOMIMoniker[] rgelt, out int pceltFetched);
        int Reset();
        int Skip(int celt);

}; // class UCOMIEnumMoniker

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIEnumString.cs - Implementation of the
 *              "System.Runtime.InteropServices.UCOMIEnumString" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIEnumString
{
        void Clone(out UCOMIEnumString ppenum);
        int Next(int celt, String[] rgelt, out int pceltFetched);
        int Reset();
        int Skip(int celt);

}; // class UCOMIEnumString

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIEnumVARIANT.cs - Implementation of the
 *              "System.Runtime.InteropServices.UCOMIEnumVARIANT" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIEnumVARIANT
{
        void Clone(out UCOMIEnumVARIANT ppenum);
        int Next(int celt, int rgvar, out int pceltFetched);
        int Reset();
        int Skip(int celt);

}; // class UCOMIEnumVARIANT

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIMoniker.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UCOMIMoniker" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIMoniker
{
        void BindToObject(UCOMIBindCtx pbc, UCOMIMoniker pmkToLeft,
                                          ref Guid riidResult, out Object 
ppvResult);
        void BindToStorage(UCOMIBindCtx pbc, UCOMIMoniker pmkToLeft,
                                           ref Guid riidResult, out Object 
ppvResult);
        void CommonPrefixWith(UCOMIMoniker pmkOther, out UCOMIMoniker 
ppmkPrefix);
        void ComposeWith(UCOMIMoniker pmkRight, bool fOnlyIfNotGeneric,
                                         out UCOMIMoniker ppmkComposite);
        void Enum(bool fForward, out UCOMIEnumMoniker ppenumMoniker);
        void GetClassID(out Guid pClassID);
        void GetDisplayName(UCOMIBindCtx pbc, UCOMIMoniker pmkToLeft,
                                                out String ppszDisplayName);
        void GetSizeMax(out long pcbSize);
        void GetTimeOfLastChange(UCOMIBindCtx pbc, UCOMIMoniker pmkToLeft,
                                                         out FILETIME 
pFileTime);
        void Hash(out int pdwHash);
        void Inverse(out UCOMIMoniker ppmk);
        int IsDirty();
        void IsEqual(UCOMIMoniker pmkOtherMoniker);
        void IsRunning(UCOMIBindCtx pbc, UCOMIMoniker pmkToLeft,
                                   UCOMIMoniker pmkNewlyRunning);
        void IsSystemMoniker(out int pdwMksys);
        void Load(UCOMIStream pStm);
        void ParseDisplayName(UCOMIBindCtx pbc, UCOMIMoniker pmkToLeft,
                                                  String pszDisplayName, out 
int pcbEaten,
                                                  out UCOMIMoniker ppmkOut);
        void Reduce(UCOMIBindCtx pbc, int dwReduceHowFar,
                                ref UCOMIMoniker ppmkToLeft, out UCOMIMoniker 
ppmkReduced);
        void RelativePathTo(UCOMIMoniker pmkOther, out UCOMIMoniker 
ppmkRelPath);
        void Save(UCOMIStream pStm, bool fClearDirty);

}; // class UCOMIMoniker

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIPersistFile.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UCOMIPersistFile" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIPersistFile
{
        void GetClassID(out Guid pClassID);
        void GetCurFile(out String ppszFileName);
        int IsDirty();
        void Load(String pszFileName, int dwMode);
        void Save(String pszFileName, bool fRemember);
        void SaveCompleted(String pszFileName);

}; // class UCOMIPersistFile

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIRunningObjectTable.cs - Implementation of the
 *                      
"System.Runtime.InteropServices.UCOMIRunningObjectTable" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIRunningObjectTable
{
        void EnumRunning(out UCOMIEnumMoniker ppenumMoniker);
        void GetObject(UCOMIMoniker pmkObjectName, out Object ppunkObject);
        void GetTimeOfLastChange(UCOMIMoniker pmkObjectName,
                                                         out FILETIME 
pfiletime);
        void IsRunning(UCOMIMoniker pmkObjectName);
        void NoteChangeTime(int dwRegister, ref FILETIME pfiletime);
        void Register(int grfFlags, Object punkObject, UCOMIMoniker 
pmkObjectName,
                                  out int pdwRegister);
        void Revoke(int dwRegister);

}; // class UCOMIRunningObjectTable

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMIStream.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UCOMIStream" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMIStream
{
        void Clone(out UCOMIStream ppstm);
        void Commit(int grfCommitFlags);
        void CopyTo(UCOMIStream pstm, long cb, IntPtr pcbRead, IntPtr 
pcbWritten);
        void LockRegion(long libOffset, long cb, int dwLockType);
        void Read(byte[] pv, int cb, IntPtr pcbRead);
        void Revert();
        void Seek(long dlibMove, int dwOrigin, IntPtr plibNewPosition);
        void SetSize(long libNewSize);
        void Stat(out STATSTG pstatstg, int grfStatFlag);
        void UnlockRegion(long libOffset, long cb, int dwLockType);
        void Write(byte[] pv, int cb, IntPtr pcbWritten);

}; // class UCOMIStream

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UCOMITypeComp.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UCOMITypeComp" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Guid("")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface UCOMITypeComp
{
        void Bind(String szName, int lHashVal, short wFlags,
                          out UCOMITypeInfo ppTInfo, out DESCKIND pDescKind,
                          out BINDPTR pBindPtr);
        void BindType(String szName, int lHashVal, out UCOMITypeInfo ppTInfo,
                                  out UCOMITypeComp ppTComp);

}; // class UCOMITypeComp

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * UnknownWrapper.cs - Implementation of the
 *                      "System.Runtime.InteropServices.UnknownWrapper" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

public sealed class UnknownWrapper
{
        // Internal state.
        private Object value;

        // Constructors.
        public UnknownWrapper(Object obj)
                        {
                                value = obj;
                        }

        // Get the wrapped dispatch object value.
        public Object WrappedObject
                        {
                                get
                                {
                                        return value;
                                }
                        }

}; // class UnknownWrapper

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * VARDESC.cs - Implementation of the
 *                      "System.Runtime.InteropServices.VARDESC" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
public struct VARDESC
{
        [StructLayout(LayoutKind.Explicit)]
        [ComVisible(false)]
        public struct DESCUNION
        {
                [FieldOffset(0)] public int oInst;
                [FieldOffset(0)] public IntPtr lpvarValue;

        }; // struct DESCUNION

        public int memid;
        public String lpstrSchema;
        public ELEMDESC elemdescVar;
        public short wVarFlags;
        public VarEnum varkind;

}; // struct VARDESC

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * VARFLAGS.cs - Implementation of the
 *                      "System.Runtime.InteropServices.VARFLAGS" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[ComVisible(false)]
[Serializable]
[Flags]
public enum VARFLAGS
{
        VARFLAG_FREADONLY                   = 0x0001,
        VARFLAG_FSOURCE                         = 0x0002,
        VARFLAG_FBINDABLE                       = 0x0004,
        VARFLAG_FREQUESTEDIT            = 0x0008,
        VARFLAG_FDISPLAYBIND            = 0x0010,
        VARFLAG_FDEFAULTBIND            = 0x0020,
        VARFLAG_FHIDDEN                         = 0x0040,
        VARFLAG_FUSESGETLASTERROR       = 0x0080,
        VARFLAG_FDEFAULTCOLLELEM        = 0x0100,
        VARFLAG_FUIDEFAULT                      = 0x0200,
        VARFLAG_FNONBROWSABLE           = 0x0400,
        VARFLAG_FREPLACEABLE            = 0x0800,
        VARFLAG_FIMMEDIATEBIND          = 0x1000

}; // enum VARFLAGS

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

--- NEW FILE ---
/*
 * VarEnum.cs - Implementation of the
 *                      "System.Runtime.InteropServices.VarEnum" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Runtime.InteropServices
{

#if !ECMA_COMPAT

[Serializable]
public enum VarEnum
{
        VT_EMPTY           = 0,
        VT_NULL            = 1,
        VT_I2              = 2,
        VT_I4              = 3,
        VT_R4              = 4,
        VT_R8              = 5,
        VT_CY              = 6,
        VT_DATE            = 7,
        VT_BSTR            = 8,
        VT_DISPATCH        = 9,
        VT_ERROR           = 10,
        VT_BOOL            = 11,
        VT_VARIANT         = 12,
        VT_UNKNOWN         = 13,
        VT_DECIMAL         = 14,
        VT_I1              = 16,
        VT_UI1             = 17,
        VT_UI2             = 18,
        VT_UI4             = 19,
        VT_I8              = 20,
        VT_UI8             = 21,
        VT_INT             = 22,
        VT_UINT            = 23,
        VT_VOID            = 24,
        VT_HRESULT         = 25,
        VT_PTR             = 26,
        VT_SAFEARRAY       = 27,
        VT_CARRAY          = 28,
        VT_USERDEFINED     = 29,
        VT_LPSTR           = 30,
        VT_LPWSTR          = 31,
        VT_RECORD          = 36,
        VT_FILETIME        = 64,
        VT_BLOB            = 65,
        VT_STREAM          = 66,
        VT_STORAGE         = 67,
        VT_STREAMED_OBJECT = 68,
        VT_STORED_OBJECT   = 69,
        VT_BLOB_OBJECT     = 70,
        VT_CF              = 71,
        VT_CLSID           = 72,
        VT_VECTOR          = 0x1000,
        VT_ARRAY           = 0x2000,
        VT_BYREF           = 0x4000

}; // enum VarEnum

#endif // !ECMA_COMPAT

}; // namespace System.Runtime.InteropServices

Index: ComImportAttribute.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/ComImportAttribute.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** ComImportAttribute.cs       20 Dec 2001 10:11:39 -0000      1.2
--- ComImportAttribute.cs       4 Apr 2003 21:53:53 -0000       1.3
***************
*** 3,7 ****
   *                    "System.Runtime.InteropServices.ComImportAttribute" 
class.
   *
!  * Copyright (C) 2001  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
--- 3,7 ----
   *                    "System.Runtime.InteropServices.ComImportAttribute" 
class.
   *
!  * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
***************
*** 23,33 ****
  {
  
! [TODO]
! public class ComImportAttribute : Attribute
! {
  
! // TODO
  
  }; // class ComImportAttribute
  
  }; // namespace System.Runtime.InteropServices
--- 23,37 ----
  {
  
! #if !ECMA_COMPAT
  
! [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
! public sealed class ComImportAttribute : Attribute
! {
!       // Constructor.
!       public ComImportAttribute() {}
  
  }; // class ComImportAttribute
+ 
+ #endif // !ECMA_COMPAT
  
  }; // namespace System.Runtime.InteropServices

Index: ComInterfaceType.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/ComInterfaceType.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ComInterfaceType.cs 26 Dec 2002 10:40:37 -0000      1.1
--- ComInterfaceType.cs 4 Apr 2003 21:53:53 -0000       1.2
***************
*** 3,7 ****
   *                    "System.Runtime.InteropServices.ComInterfaceType" enum.
   *
!  * Copyright (C) 2001  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
--- 3,7 ----
   *                    "System.Runtime.InteropServices.ComInterfaceType" enum.
   *
!  * Copyright (C) 2001, 2003  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
***************
*** 22,32 ****
  namespace System.Runtime.InteropServices
  {
  #if !ECMA_COMPAT
!       public enum ComInterfaceType
!       {
!               InterfaceIsDual = 0x00,
!               InterfaceIsIUnknown = 0x01,
!               InterfaceIsIDispatch = 0x02             
!       }
! #endif
! }
--- 22,38 ----
  namespace System.Runtime.InteropServices
  {
+ 
  #if !ECMA_COMPAT
! 
! [Serializable]
! public enum ComInterfaceType
! {
!       InterfaceIsDual                 = 0,
!       InterfaceIsIUnknown             = 1,
!       InterfaceIsIDispatch    = 2
! 
! }; // enum ComInterfaceType
! 
! #endif // !ECMA_COMPAT
! 
! }; // namespace System.Runtime.InteropServices

Index: ComMemberType.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/ComMemberType.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ComMemberType.cs    28 Jun 2002 04:38:48 -0000      1.1
--- ComMemberType.cs    4 Apr 2003 21:53:53 -0000       1.2
***************
*** 3,7 ****
   *                    "System.Runtime.InteropServices.ComMemberType" class.
   *
!  * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
--- 3,7 ----
   *                    "System.Runtime.InteropServices.ComMemberType" class.
   *
!  * Copyright (C) 2002, 2003  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
***************
*** 23,33 ****
  {
  
  public enum ComMemberType
  {
!       Method,
!       PropGet,
!       PropSet
  
  }; // enum ComMemberType
  
  }; // namespace System.Runtime.InteropServices
--- 23,37 ----
  {
  
+ #if !ECMA_COMPAT
+ 
  public enum ComMemberType
  {
!       Method     = 0,
!       PropGet    = 1,
!       PropSet    = 2
  
  }; // enum ComMemberType
+ 
+ #endif // !ECMA_COMPAT
  
  }; // namespace System.Runtime.InteropServices

Index: DispIdAttribute.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/DispIdAttribute.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** DispIdAttribute.cs  20 Dec 2001 10:11:39 -0000      1.2
--- DispIdAttribute.cs  4 Apr 2003 21:53:53 -0000       1.3
***************
*** 3,7 ****
   *                    "System.Runtime.InteropServices.DispIdAttribute" class.
   *
!  * Copyright (C) 2001  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
--- 3,7 ----
   *                    "System.Runtime.InteropServices.DispIdAttribute" class.
   *
!  * Copyright (C) 2001, 2003  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
***************
*** 23,33 ****
  {
  
! [TODO]
! public class DispIdAttribute : Attribute
  {
  
! // TODO
  
  }; // class DispIdAttribute
  
  }; // namespace System.Runtime.InteropServices
--- 23,55 ----
  {
  
! #if !ECMA_COMPAT
! 
! [AttributeUsage(AttributeTargets.Method |
!                               AttributeTargets.Field |
!                               AttributeTargets.Property |
!                               AttributeTargets.Event)]
! public sealed class DispIdAttribute : Attribute
  {
+       // Internal state.
+       private int dispId;
+ 
+       // Constructor.
+       public DispIdAttribute(int dispId)
+                       {
+                               this.dispId = dispId;
+                       }
  
!       // Get this attribute's value.
!       public int Value
!                       {
!                               get
!                               {
!                                       return dispId;
!                               }
!                       }
  
  }; // class DispIdAttribute
+ 
+ #endif // !ECMA_COMPAT
  
  }; // namespace System.Runtime.InteropServices

Index: ExternalException.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/ExternalException.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** ExternalException.cs        25 Dec 2002 06:11:38 -0000      1.1
--- ExternalException.cs        4 Apr 2003 21:53:53 -0000       1.2
***************
*** 22,25 ****
--- 22,30 ----
  {
  
+ #if !ECMA_COMPAT
+ 
+ using System.Runtime.Serialization;
+ 
+ [Serializable]
  public class ExternalException : SystemException
  {
***************
*** 29,42 ****
        // Constructors.
        public ExternalException()
!               : base(_("Exception_System")) {}
        public ExternalException(String msg)
!               : base(msg) {}
        public ExternalException(String msg, Exception inner)
!               : base(msg, inner) {}
        public ExternalException(String msg, int errorCode)
!               : base(msg)
!       {
!               this.errorCode=errorCode;
!       }
  
        public virtual int ErrorCode
--- 34,50 ----
        // Constructors.
        public ExternalException()
!                       : base(_("Exception_System")) {}
        public ExternalException(String msg)
!                       : base(msg) {}
        public ExternalException(String msg, Exception inner)
!                       : base(msg, inner) {}
        public ExternalException(String msg, int errorCode)
!                       : base(msg)
!                       {
!                               this.errorCode = errorCode;
!                       }
!       protected ExternalException(SerializationInfo info,
!                                                               
StreamingContext context)
!                       : base(info, context) {}
  
        public virtual int ErrorCode
***************
*** 48,52 ****
--- 56,71 ----
        }
  
+       // Get the default message to use for this exception type.
+       protected internal override String MessageDefault
+                       {
+                               get
+                               {
+                                       return _("Exception_System");
+                               }
+                       }
+ 
  }; // class ExternalException
+ 
+ #endif // !ECMA_COMPAT
  
  }; // namespace System.Runtime.InteropServices

Index: InterfaceTypeAttribute.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/InterfaceTypeAttribute.cs,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** InterfaceTypeAttribute.cs   29 Dec 2002 08:32:47 -0000      1.4
--- InterfaceTypeAttribute.cs   4 Apr 2003 21:53:53 -0000       1.5
***************
*** 25,28 ****
--- 25,29 ----
  #if !ECMA_COMPAT
  
+ [AttributeUsage(AttributeTargets.Interface)]
  public sealed class InterfaceTypeAttribute : Attribute
  {

Index: Marshal.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/Marshal.cs,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** Marshal.cs  8 Dec 2002 06:24:40 -0000       1.4
--- Marshal.cs  4 Apr 2003 21:53:53 -0000       1.5
***************
*** 34,39 ****
  {
        // Character size information.
!       public static readonly int SystemDefaultCharSize = 1;   // TODO
!       public static readonly int SystemMaxDBCSCharSize = 6;   // TODO
  
        // Allocate memory from the global (malloc) heap.
--- 34,39 ----
  {
        // Character size information.
!       public static readonly int SystemDefaultCharSize = 1;
!       public static readonly int SystemMaxDBCSCharSize = 6;
  
        // Allocate memory from the global (malloc) heap.
***************
*** 378,381 ****
--- 378,382 ----
                                throw new NotImplementedException();
                        }
+ #if !ECMA_COMPAT
        public static MemberInfo GetMethodInfoForComSlot
                                (Type t, int slot, ref ComMemberType memberType)
***************
*** 383,386 ****
--- 384,388 ----
                                throw new NotImplementedException();
                        }
+ #endif
        public static Object GetObjectForIUnknown(IntPtr pUnk)
                        {

Index: UCOMITypeInfo.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/UCOMITypeInfo.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** UCOMITypeInfo.cs    28 Jun 2002 04:38:48 -0000      1.1
--- UCOMITypeInfo.cs    4 Apr 2003 21:53:54 -0000       1.2
***************
*** 1,7 ****
  /*
   * UCOMITypeInfo.cs - Implementation of the
!  *                    "System.Runtime.InteropServices.UCOMITypeInfo" 
interface.
   *
!  * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
--- 1,7 ----
  /*
   * UCOMITypeInfo.cs - Implementation of the
!  *                    "System.Runtime.InteropServices.UCOMITypeInfo" class.
   *
!  * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
***************
*** 25,33 ****
  #if !ECMA_COMPAT
  
! using System;
! 
  public interface UCOMITypeInfo
  {
!       // TODO
  
  }; // class UCOMITypeInfo
--- 25,56 ----
  #if !ECMA_COMPAT
  
! [Guid("")]
! [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  public interface UCOMITypeInfo
  {
!       void AddressOfMember(int memid, INVOKEKIND invKind, out IntPtr ppv);
!       void CreateInstance(Object pUnkOuter, ref Guid riid, out Object ppvObj);
!       void GetContainingTypeLib(out UCOMITypeLib ppTLB, out int pIndex);
!       void GetDllEntry(int memid, INVOKEKIND invKind, out String pBstrDllName,
!                                        out String pBstrName, out short 
pwOrdinal);
!       void GetDocumentation(int index, out String strName,
!                                                 out String strDocString, out 
int dwHelpContext,
!                                                 out String strHelpFile);
!       void GetFuncDesc(int index, out IntPtr ppFuncDesc);
!       void GetIDsOfNames(String[] rgszNames, int cNames, int[] pMemId);
!       void GetImplTypeFlags(int index, out int pImplTypeFlags);
!       void GetMops(int memid, out String pBstrMops);
!       void GetNames(int memid, String[] rgBstrNames, int cMaxNames,
!                                 out int pcNames);
!       void GetRefTypeInfo(int hRef, out UCOMITypeInfo ppTI);
!       void GetTypeAttr(out IntPtr ppTypeAttr);
!       void GetTypeComp(out UCOMITypeComp ppTComp);
!       void GetVarDesc(int index, out IntPtr ppVarDesc);
!       void Invoke(Object pvInstance, int memid, short wFlags,
!                               ref DISPPARAMS pDispParams, out Object 
pVarResult,
!                               out EXCEPINFO pExcepInfo, out int puArgErr);
!       void ReleaseFuncDesc(IntPtr pFuncDesc);
!       void ReleaseTypeAttr(IntPtr pTypeAttr);
!       void ReleaseVarDesc(IntPtr pVarDesc);
  
  }; // class UCOMITypeInfo

Index: UCOMITypeLib.cs
===================================================================
RCS file: 
/cvsroot/dotgnu-pnet/pnetlib/runtime/System/Runtime/InteropServices/UCOMITypeLib.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** UCOMITypeLib.cs     28 Jun 2002 04:38:48 -0000      1.1
--- UCOMITypeLib.cs     4 Apr 2003 21:53:54 -0000       1.2
***************
*** 1,7 ****
  /*
   * UCOMITypeLib.cs - Implementation of the
!  *                    "System.Runtime.InteropServices.UCOMITypeLib" interface.
   *
!  * Copyright (C) 2002  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
--- 1,7 ----
  /*
   * UCOMITypeLib.cs - Implementation of the
!  *                    "System.Runtime.InteropServices.UCOMITypeLib" class.
   *
!  * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
   *
   * This program is free software; you can redistribute it and/or modify
***************
*** 25,33 ****
  #if !ECMA_COMPAT
  
! using System;
! 
  public interface UCOMITypeLib
  {
!       // TODO
  
  }; // class UCOMITypeLib
--- 25,45 ----
  #if !ECMA_COMPAT
  
! [Guid("")]
! [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  public interface UCOMITypeLib
  {
!       void FindName(String szNameBuf, int lHashVal, UCOMITypeInfo[] ppTInfo,
!                                 int[] rgMemId, ref short pcFound);
!       void GetDocumentation(int index, out String strName,
!                                                 out String strDocString, out 
int dwHelpContext,
!                                                 out String strHelpFile);
!       void GetLibAttr(out IntPtr ppTLibAttr);
!       void GetTypeComp(out UCOMITypeComp ppTComp);
!       void GetTypeInfo(int index, out UCOMITypeInfo ppTI);
!       int GetTypeInfoCount();
!       void GetTypeInfoOfGuid(ref Guid guid, out UCOMITypeInfo ppTI);
!       void GetTypeInfoType(int index, out TYPEKIND pTKind);
!       bool IsName(String szNameBuf, int lHashVal);
!       void ReleaseTLibAttr(IntPtr pTLibAttr);
  
  }; // class UCOMITypeLib

--- ExposeHResultAttribute.cs DELETED ---





reply via email to

[Prev in Thread] Current Thread [Next in Thread]