# Generated types for C types

## Structure types

Structure are generated by `objc.createStructType()` and represent a C structure, such as NSPoint or CGRect.

Structure types are all separate types, directly inheriting from `object`, and behave like a mutable variant of `collections.namedtuple()`.

The rest of this section describes `StructureType`, which defines the API of the structure types but does not exist as a real type.

class objc.StructureType(\**kwds)

  A structure type.

  _fields
  A tuple with the field names for this structure. Every name
  in *_fields* is present as an attribute of instances of the type.
  __typestr__
  The type encoding for this structure type
  __getitem__(idx)
  Return the *idx*-th element of the object. This also supports
  slices.
  __setitem__(idx, value)
  Set the *idx*-th element of the object. This also supports
  slice, but the assignment is not allowed to change the number
  of elements.
  copy()
  Returns a deep copy of the structure, that is all field values
  that are instances of a structure types are copied as well.
  __pyobjc_copy__()
  An alias for :meth:`copy`, for use by PyObjC.
  _replace(\**kwds)
  First create a copy of the object, then use the keyword arguments
  to replace the values of some attributes.
  _asdict()
  Returns a dictionary where the keys are the values in :data:`_fields`
  and the values are the corresponding attribute values.

## Opaque pointer types

Opaque pointer are created by `objc.createOpaquePointerType()` and represent opaque pointers or handles, such as values of type ‘NSZone*’. Opaque pointers do not have further structure or behavior, they just exist as blobs of data that are returned from and passed to Objective-C functions or methods.

The rest of this section describes `OpaquePointerType`, which defines the API of the opaque pointer types but does not exist as a real type.

class objc.OpaquePointerType(cobject=None, c_void_p=None)

  An opaque pointer type. Values are usually created by the PyObjC bridge, but can be created manually using one of the keyword arguments:

  - cobject: A PyCapsule object with name “objc.__opaque__” that represents an opaque pointer value.

  - c_void_p: An instance of `ctypes.c_void_p` or `int` that represents an opaque pointer value.

  __typestr__
  The type encoding for the opaque pointer type
  __pointer__
  An integer with the raw pointer value
  __c_void_p__()
  Returns a :class:`ctypes.c_void_p` instance with the raw pointer value
  __cobject__()
  Returns a PyCapsule object with name "objc.__opaque__" representing
  the raw pointer value.