## ICalObject ICalObject |

## Synopsis

    struct              ICalObject;
    struct              ICalObjectClass;
    void                i_cal_object_construct              (ICalObject *iobject,
                                                             gpointer native,
                                                             GDestroyNotify native_destroy_func,
                                                             gboolean is_global_memory,
                                                             GObject *owner);
    gpointer            i_cal_object_get_native             (ICalObject *iobject);
    gpointer            i_cal_object_steal_native           (ICalObject *iobject);
    gboolean            i_cal_object_get_is_global_memory   (ICalObject *iobject);
    GDestroyNotify      i_cal_object_get_native_destroy_func
                                                            (ICalObject *iobject);
    void                i_cal_object_set_native_destroy_func
                                                            (ICalObject *iobject,
                                                             GDestroyNotify native_destroy_func);
    void                i_cal_object_set_owner              (ICalObject *iobject,
                                                             GObject *owner);
    GObject *           i_cal_object_ref_owner              (ICalObject *iobject);
    void                i_cal_object_remove_owner           (ICalObject *iobject);
    void                i_cal_object_add_depender           (ICalObject *iobject,
                                                             GObject *depender);
    void                i_cal_object_remove_depender        (ICalObject *iobject,
                                                             GObject *depender);

## Object Hierarchy

      GObject
       +----ICalObject
             +----ICalArray
             +----ICalAttach
             +----ICalCompIter
             +----ICalComponent
             +----ICalDatetimeperiodType
             +----ICalDurationType
             +----ICalGeoType
             +----ICalParameter
             +----ICalParser
             +----ICalPeriodType
             +----ICalProperty
             +----ICalRecurIterator
             +----ICalRecurrenceType
             +----ICalReqstatType
             +----ICalTimeSpan
             +----ICalTimetype
             +----ICalTimezone
             +----ICalTimezonePhase
             +----ICalTimezonetype
             +----ICalTriggerType
             +----ICalValue

## Properties

      "is-global-memory"         gboolean              : Read / Write / Construct Only
      "native"                   gpointer              : Read / Write / Construct Only
      "native-destroy-func"      gpointer              : Read / Write
      "owner"                    GObject*              : Read / Write

## Description

## Details

### struct ICalObject

    struct ICalObject;

This is an ICalObject instance struct.

### struct ICalObjectClass

    struct ICalObjectClass {
    };

This is an ICalObject class struct.

### i_cal_object_construct ()

    void                i_cal_object_construct              (ICalObject *iobject,
                                                             gpointer native,
                                                             GDestroyNotify native_destroy_func,
                                                             gboolean is_global_memory,
                                                             GObject *owner);

Initialize private members of iobject at once. The descendants should call this function in their `_new()` function, or use corresponding properties during the construction time. This should not be mixed, either use properties or this function.

`iobject` : | an ICalObject
`native` : | a native libical structure
`native_destroy_func` : | a function to be called on `native` when it should be freed
`is_global_memory` : | whether `native` is a global shared memory structure
`owner` : | an owner of `native`. [allow-none]

Since 1.0

### i_cal_object_get_native ()

    gpointer            i_cal_object_get_native             (ICalObject *iobject);

Obtain native libical structure pointer associated with this `iobject`.

`iobject` : | an ICalObject
Returns : | Native libical structure pointer associated with this `iobject`. [transfer none]

Since 1.0

### i_cal_object_steal_native ()

    gpointer            i_cal_object_steal_native           (ICalObject *iobject);

Obtain native libical structure pointer associated with this `iobject` and sets the one at `iobject` to NULL, thus it's invalid since now on.

`iobject` : | an ICalObject
Returns : | Native libical structure pointer associated with this `iobject`. [transfer full]

Since 1.0

### i_cal_object_get_is_global_memory ()

    gboolean            i_cal_object_get_is_global_memory   (ICalObject *iobject);

Obtains whether the native libical structure is a global shared memory, thus should not be destroyed. This can be set only during contruction time.

`iobject` : | an ICalObject
Returns : | Whether the native libical structure is a global shared memory.

Since 1.0

### i_cal_object_get_native_destroy_func ()

    GDestroyNotify      i_cal_object_get_native_destroy_func
                                                            (ICalObject *iobject);

Obtain a pointer to a function responsible to free the libical native structure.

`iobject` : | an ICalObject
Returns : | Pointer to a function responsible to free the libical native structure. [transfer none]

Since 1.0

### i_cal_object_set_native_destroy_func ()

    void                i_cal_object_set_native_destroy_func
                                                            (ICalObject *iobject,
                                                             GDestroyNotify native_destroy_func);

Sets a function to be used to destroy the native libical structure.

`iobject` : | an ICalObject
`native_destroy_func` : | Function to be used to destroy the native libical structure

Since 1.0

### i_cal_object_set_owner ()

    void                i_cal_object_set_owner              (ICalObject *iobject,
                                                             GObject *owner);

Sets an owner of the native libical structure, that is an object responsible for a destroy of the native libical structure.

`iobject` : | an ICalObject
`owner` : | Owner of the native libical structure

Since 1.0

### i_cal_object_ref_owner ()

    GObject *           i_cal_object_ref_owner              (ICalObject *iobject);

Obtain current owner of the native libical structure. The returned pointer, if not NULL, is referenced for thread safety. Unref it with g_object_unref when done with it.

`iobject` : | an ICalObject
Returns : | Current owner of the libical native structure. returns NULL, when there is no owner. [transfer full][allow-none]

Since 1.0

### i_cal_object_remove_owner ()

    void                i_cal_object_remove_owner           (ICalObject *iobject);

Unref and remove the owner.

`iobject` : | an ICalObject

Since 1.0

### i_cal_object_add_depender ()

    void                i_cal_object_add_depender           (ICalObject *iobject,
                                                             GObject *depender);

Adds a `depender` into the list of objects which should not be destroyed before this `iobject`. It's usually used for cases where the `iobject` uses native libical structure from the `depender`. The `depender` is referenced. It's illegal to try to add one `depender` multiple times.

`iobject` : | an ICalObject
`depender` : | a GObject depender

Since 1.0

### i_cal_object_remove_depender ()

    void                i_cal_object_remove_depender        (ICalObject *iobject,
                                                             GObject *depender);

Removes a `depender` from the list of objects which should not be destroyed before this `iobject`, previously added with `i_cal_object_add_depender()`. It's illegal to try to remove the `depender` which is not in the internal list.

`iobject` : | an ICalObject
`depender` : | a GObject depender

Since 1.0

## Property Details

### The `"is-global-memory"` property

      "is-global-memory"         gboolean              : Read / Write / Construct Only

Whether the native libical structure is from a global shared memory. If TRUE, then it is not freed on ICalObject's finalize.

Default value: FALSE

### The `"native"` property

      "native"                   gpointer              : Read / Write / Construct Only

The native libical structure for this ICalObject.

### The `"native-destroy-func"` property

      "native-destroy-func"      gpointer              : Read / Write

GDestroyNotify function to use to destroy the native libical pointer.

### The `"owner"` property

      "owner"                    GObject*              : Read / Write

Owner of the native libical structure. If set, then it is responsible for a free of the native libical structure.