protected override GLib.Opaque Copy (IntPtr raw)
{
  return GLib.Opaque.GetOpaque (raw, typeof (Gst.IndexEntry), true);
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_id_description_offset ();

static uint id_description_offset = gstsharp_gst_index_entry_get_id_description_offset ();
public string IdDescription {
  get {
    if (Type != Gst.IndexEntryType.Id)
      throw new Exception ();

    unsafe {
      IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + id_description_offset);
      return GLib.Marshaller.Utf8PtrToString (*raw_ptr);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_assoc_nassocs_offset ();

static uint assoc_nassocs_offset = gstsharp_gst_index_entry_get_assoc_nassocs_offset ();
public int AssocNAssocs {
  get {
    if (Type != Gst.IndexEntryType.Association)
      throw new Exception ();

    unsafe {
      int* raw_ptr = (int*) ( ( (byte*) Handle) + assoc_nassocs_offset);
      return (*raw_ptr);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_assoc_assocs_offset ();

static uint assoc_assocs_offset = gstsharp_gst_index_entry_get_assoc_assocs_offset ();
public Gst.IndexAssociation[] AssocAssocs {
  get {
    if (Type != Gst.IndexEntryType.Association)
      throw new Exception ();

    unsafe {
      IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + assoc_assocs_offset);
      Gst.IndexAssociation[] ret = new Gst.IndexAssociation[AssocNAssocs];
      if (AssocNAssocs == 0)
        return ret;

      int unmanaged_struct_size = Marshal.SizeOf (typeof (Gst.IndexAssociation));

      for (int i = 0; i < AssocNAssocs; i++)
        ret[i] = Gst.IndexAssociation.New (new IntPtr ( (*raw_ptr).ToInt64() + i * unmanaged_struct_size));
      return ret;
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_assoc_flags_offset ();

static uint assoc_flags_offset = gstsharp_gst_index_entry_get_assoc_flags_offset ();
public Gst.AssocFlags AssocFlags {
  get {
    if (Type != Gst.IndexEntryType.Association)
      throw new Exception ();

    unsafe {
      int* raw_ptr = (int*) ( ( (byte*) Handle) + assoc_flags_offset);
      return (Gst.AssocFlags) (*raw_ptr);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_object_key_offset ();

static uint object_key_offset = gstsharp_gst_index_entry_get_object_key_offset ();
public string ObjectKey {
  get {
    if (Type != Gst.IndexEntryType.Object)
      throw new Exception ();

    unsafe {
      IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + object_key_offset);
      return GLib.Marshaller.Utf8PtrToString (*raw_ptr);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_object_type_offset ();

static uint object_type_offset = gstsharp_gst_index_entry_get_object_type_offset ();
public GLib.GType ObjectGType {
  get {
    if (Type != Gst.IndexEntryType.Object)
      throw new Exception ();

    unsafe {
      IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + object_type_offset);
      return new GLib.GType (*raw_ptr);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_object_object_offset ();

static uint object_object_offset = gstsharp_gst_index_entry_get_object_object_offset ();
public object ObjectObject {
  get {
    if (Type != Gst.IndexEntryType.Object)
      throw new Exception ();

    unsafe {
      IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + object_object_offset);
      return GLib.Object.GetObject (*raw_ptr, false);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_format_format_offset ();

static uint format_format_offset = gstsharp_gst_index_entry_get_format_format_offset ();
public Gst.Format FormatFormat {
  get {
    if (Type != Gst.IndexEntryType.Format)
      throw new Exception ();

    unsafe {
      int* raw_ptr = (int*) ( ( (byte*) Handle) + format_format_offset);
      return (Gst.Format) (*raw_ptr);
    }
  }
}

[DllImport ("gstreamersharpglue-0.10") ]
extern static uint gstsharp_gst_index_entry_get_format_key_offset ();

static uint format_key_offset = gstsharp_gst_index_entry_get_format_key_offset ();
public string FormatKey {
  get {
    if (Type != Gst.IndexEntryType.Format)
      throw new Exception ();

    unsafe {
      IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + format_key_offset);
      return GLib.Marshaller.Utf8PtrToString (*raw_ptr);
    }
  }
}