<Type Name="Opaque" FullName="GLib.Opaque">
  <TypeSignature Language="C#" Maintainer="auto" Value="public class Opaque : GLib.IWrapper, IDisposable" />
  <AssemblyInfo>
    <AssemblyName>glib-sharp</AssemblyName>
    <AssemblyPublicKey>
    </AssemblyPublicKey>
    <AssemblyVersion>2.12.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>To be added</summary>
    <remarks>To be added</remarks>
  </Docs>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>GLib.IWrapper</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Members>
    <Member MemberName="GetOpaque">
      <MemberSignature Language="C#" Value="public static GLib.Opaque GetOpaque (IntPtr o);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>GLib.Opaque</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="o" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Used to obtain a CLI typed object associated with a given raw object pointer.</summary>
        <param name="o">an object of type <see cref="T:System.IntPtr" /></param>
        <returns>an object of type <see cref="T:GLib.Opaque" /></returns>
        <remarks>This method is primarily used to wrap object references that are returned by either the signal system or raw class methods that return opaque struct references.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Opaque ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Creates a new <see cref="T:GLib.Opaque" /> instance.</summary>
        <remarks>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Opaque (IntPtr raw);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="raw">Pointer to the C object.</param>
        <remarks>
          <para>This is an internal constructor, and should not be used by user code.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Handle">
      <MemberSignature Language="C#" Value="public IntPtr Handle { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.IntPtr</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The raw Opaque reference associated with this object.</summary>
        <value>an object of type <see cref="T:System.IntPtr" /></value>
        <remarks>Subclasses can use Raw property for read/write access.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Raw">
      <MemberSignature Language="C#" Value="protected IntPtr Raw { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.IntPtr</ReturnType>
      </ReturnValue>
      <Parameters>
      </Parameters>
      <Docs>
        <summary>The raw Opaque reference associated with this wrapper.</summary>
        <value>an object of type <see cref="T:System.IntPtr" /></value>
        <remarks>Only subclasses of Opaque can access this read/write property.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetOpaque">
      <MemberSignature Language="C#" Value="public static GLib.Opaque GetOpaque (IntPtr o, Type type, bool owned);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>GLib.Opaque</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="o" Type="System.IntPtr" />
        <Parameter Name="type" Type="System.Type" />
        <Parameter Name="owned" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <summary>Used to obtain a CLI typed object associated with a given raw pointer.</summary>
        <param name="o">a <see cref="T:System.IntPtr" /></param>
        <param name="type">a <see cref="T:System.Type" /></param>
        <param name="owned">a <see cref="T:System.Boolean" /></param>
        <returns>a <see cref="T:GLib.Object" /></returns>
        <remarks>This method is primarily used to wrap object references that are returned by either the signal system or raw class methods that return opaque type pointers.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="C#" Value="public virtual void Dispose ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Disposes the raw object.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Ref">
      <MemberSignature Language="C#" Value="protected virtual void Ref (IntPtr raw);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <param name="raw">The raw pointer.</param>
        <summary>Overridden in generated subclasses that perform refcounting.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Unref">
      <MemberSignature Language="C#" Value="protected virtual void Unref (IntPtr raw);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <param name="raw">The raw pointer.</param>
        <summary>Overridden in generated subclasses that perform refcounting.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Free">
      <MemberSignature Language="C#" Value="protected virtual void Free (IntPtr raw);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <param name="raw">The raw pointer.</param>
        <summary>Overridden in generated subclasses to free the raw data.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Owned">
      <MemberSignature Language="C#" Value="public bool Owned { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Whether or not this <see cref="T:GLib.Opaque" /> wrapper owns the raw object.</summary>
        <value>
          <see langword="true" /> if the wrapper owns the raw object and will <see cref="M:GLib.Opaque.Unref" /> / <see cref="M:GLib.Opaque.Free" /> it when the wrapper is disposed.</value>
        <remarks>By default, this is set to <see langword="true" /> for opaque objects created with the no-argument constructor, and <see langword="false" /> for opaque objects created with the <see cref="T:System.IntPtr" /> constructor. Methods that return an opaque object can override this by setting the <see cref="M:GLib.Opaque.Owned" /> property accordingly to obey the memory-management conventions of the underlying C code.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Copy">
      <MemberSignature Language="C#" Value="protected virtual GLib.Opaque Copy (IntPtr raw);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>GLib.Opaque</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <param name="raw">Native opaque structure pointer to copy.</param>
        <summary>Copies an existing opaque type.</summary>
        <returns>A copied reference, or the original if the type doesn't support copying.</returns>
        <remarks />
      </Docs>
    </Member>
  </Members>
</Type>
