## MrpTask

MrpTask — represents a task in the project.

## Functions

MrpTask * | mrp_task_new ()
void | mrp_task_set_name ()
const gchar * | mrp_task_get_name ()
MrpRelation * | mrp_task_add_predecessor ()
void | mrp_task_remove_predecessor ()
MrpRelation * | mrp_task_get_relation ()
MrpRelation * | mrp_task_get_predecessor_relation ()
MrpRelation * | mrp_task_get_successor_relation ()
GList * | mrp_task_get_predecessor_relations ()
GList * | mrp_task_get_successor_relations ()
gboolean | mrp_task_has_relation_to ()
gboolean | mrp_task_has_relation ()
MrpTask * | mrp_task_get_parent ()
MrpTask * | mrp_task_get_first_child ()
MrpTask * | mrp_task_get_next_sibling ()
guint | mrp_task_get_n_children ()
MrpTask * | mrp_task_get_nth_child ()
gint | mrp_task_get_position ()
mrptime | mrp_task_get_start ()
mrptime | mrp_task_get_work_start ()
mrptime | mrp_task_get_finish ()
mrptime | mrp_task_get_latest_start ()
mrptime | mrp_task_get_latest_finish ()
gint | mrp_task_get_duration ()
gint | mrp_task_get_work ()
GList * | mrp_task_get_assignments ()
MrpAssignment * | mrp_task_get_assignment ()
void | mrp_task_reset_constraint ()
gfloat | mrp_task_get_cost ()
GList * | mrp_task_get_assigned_resources ()
gint | mrp_task_compare ()

## Properties

MrpConstraint * | constraint | Read / Write
gboolean | critical | Read / Write
gint | duration | Read / Write
glong | finish | Read
glong | latest-finish | Read
glong | latest-start | Read
gchar * | name | Read / Write
gchar * | note | Read / Write
gint | percent-complete | Read / Write
gint | priority | Read / Write
MrpTaskSched | sched | Read / Write
glong | start | Read
MrpTaskType | type | Read / Write
gint | work | Read / Write

## Signals

void | assignment-added | Run Last
void | assignment-removed | Run Last
void | child-added | Run Last
void | child-removed | Run Last
void | relation-added | Run Last
void | relation-removed | Run Last
void | task-moved | Run Last

## Types and Values

| MrpTaskPriv
| MrpTask
| MrpConstraint
enum | MrpConstraintType

## Object Hierarchy

        GObject
        ╰── MrpObject
            ╰── MrpTask

## Includes

    #include <libplanner/planner.h>

## Description

## Functions

### mrp_task_new ()

    MrpTask *
    mrp_task_new (void);

Create a new task.

#### Returns

the newly created MrpTask.

### mrp_task_set_name ()

    void
    mrp_task_set_name (MrpTask *task,
                       const gchar *name);

Sets the name of `task` .

#### Parameters

task | an MrpResource |
name | new name of `task` |

### mrp_task_get_name ()

    const gchar *
    mrp_task_get_name (MrpTask *task);

Retrives the name of `task` .

#### Parameters

task | an MrpTask |

#### Returns

the name

### mrp_task_add_predecessor ()

    MrpRelation *
    mrp_task_add_predecessor (MrpTask *task,
                              MrpTask *predecessor,
                              MrpRelationType type,
                              glong lag,
                              GError **error);

Adds a predecessor task to a task. Depending on type, the predecessor must be started or finished before task can be started or finished, with an optional lag/lead time.

#### Parameters

task | an MrpTask |
predecessor | the predecessor |
type | type of relation |
lag | lag time, if negative, it means lead time |
error | location to store error, or `NULL` |

#### Returns

the relation that represents the predecessor/successor link.

### mrp_task_remove_predecessor ()

    void
    mrp_task_remove_predecessor (MrpTask *task,
                                 MrpTask *predecessor);

Removes a predecessor previously added to task.

#### Parameters

task | an MrpTask |
predecessor | the predecessor to remove |

### mrp_task_get_relation ()

    MrpRelation *
    mrp_task_get_relation (MrpTask *task_a,
                           MrpTask *task_b);

Fetches a relation between two tasks if it exists.

#### Parameters

task_a | an MrpTask |
task_b | an MrpTask |

#### Returns

a MrpRelation representing the relation between `task_a` and `task_b` or `NULL` if they don't have any relation.

### mrp_task_get_predecessor_relation ()

    MrpRelation *
    mrp_task_get_predecessor_relation (MrpTask *task,
                                       MrpTask *predecessor);

Fetches a predecessor relation between task and it's predecessor.

#### Parameters

task | an MrpTask |
predecessor | an MrpTask |

#### Returns

the MrpRelation if it exists, otherwise `NULL`

### mrp_task_get_successor_relation ()

    MrpRelation *
    mrp_task_get_successor_relation (MrpTask *task,
                                     MrpTask *successor);

Fetches a successor relation between task and it's successor.

#### Parameters

task | an MrpTask |
successor | an MrpTask |

#### Returns

the MrpRelation if it exists, otherwise `NULL`

### mrp_task_get_predecessor_relations ()

    GList *
    mrp_task_get_predecessor_relations (MrpTask *task);

Fetches a list of predecessor relations to `task` .

#### Parameters

task | an MrpTask |

#### Returns

the list of predecessor relations to `task`

### mrp_task_get_successor_relations ()

    GList *
    mrp_task_get_successor_relations (MrpTask *task);

Fetches a list of successor relations to `task` .

#### Parameters

task | an MrpTask |

#### Returns

a list of successor relations to `task`

### mrp_task_has_relation_to ()

    gboolean
    mrp_task_has_relation_to (MrpTask *task_a,
                              MrpTask *task_b);

Checks if `a` and `b` has a relation, i.e. if a is a predecessor or successor of b.

#### Parameters

task_a | an MrpTask |
task_b | an MrpTask |

#### Returns

`TRUE` if `a` and `b` has a relation

### mrp_task_has_relation ()

    gboolean
    mrp_task_has_relation (MrpTask *task);

Checks if a task has any relations, i.e. predecessors or successors.

#### Parameters

task | an MrpTask |

#### Returns

`TRUE` if there are any relations.

### mrp_task_get_parent ()

    MrpTask *
    mrp_task_get_parent (MrpTask *task);

Fetches the parent of `task` .

#### Parameters

task | an MrpTask |

#### Returns

the parent of `task` , or `NULL` if there is no parent..

### mrp_task_get_first_child ()

    MrpTask *
    mrp_task_get_first_child (MrpTask *task);

Fetches the first child of `task` .

#### Parameters

task | an MrpTask |

#### Returns

the first child of `task` , or `NULL` if there are no children.

### mrp_task_get_next_sibling ()

    MrpTask *
    mrp_task_get_next_sibling (MrpTask *task);

Fetches the next sibling of `task` .

#### Parameters

task | an MrpTask |

#### Returns

the next sibling of `task` , or `NULL` if there is no next sibling.

### mrp_task_get_n_children ()

    guint
    mrp_task_get_n_children (MrpTask *task);

Fetches the number of children `task` has.

#### Parameters

task | an MrpTask |

#### Returns

the number of children `task` has

### mrp_task_get_nth_child ()

    MrpTask *
    mrp_task_get_nth_child (MrpTask *task,
                            guint n);

Fetches the nth child of `task` .

#### Parameters

task | an MrpTask |
n | the index of the child to get |

#### Returns

the nth child of `task` , or `NULL` if there is no such child.

### mrp_task_get_position ()

    gint
    mrp_task_get_position (MrpTask *task);

Fetches the index or position of `task` among its siblings.

#### Parameters

task | an MrpTask |

#### Returns

the position of `task` among its siblings.

### mrp_task_get_start ()

    mrptime
    mrp_task_get_start (MrpTask *task);

Fetches the start time of `task` .

#### Parameters

task | an MrpTask |

#### Returns

the start time of `task` .

### mrp_task_get_work_start ()

    mrptime
    mrp_task_get_work_start (MrpTask *task);

Retrieves the first time where work is performed of `task` . This might be different from the start time, if the start time is during non-working time. In that case, the work start would be right after the non-working interval.

#### Parameters

task | an MrpTask |

#### Returns

The work start time of `task` .

### mrp_task_get_finish ()

    mrptime
    mrp_task_get_finish (MrpTask *task);

Fetches the finish time of `task` .

#### Parameters

task | an MrpTask |

#### Returns

the finish time of `task` .

### mrp_task_get_latest_start ()

    mrptime
    mrp_task_get_latest_start (MrpTask *task);

Retrieves the latest start time of `task` , i.e. the latest time the task can start without delaying the project.

#### Parameters

task | an MrpTask |

#### Returns

The latest start time of `task` .

### mrp_task_get_latest_finish ()

    mrptime
    mrp_task_get_latest_finish (MrpTask *task);

Retrieves the latest finish time of `task` , i.e. the latest time the task can finish without delaying the project.

#### Parameters

task | an MrpTask |

#### Returns

The latest finish time of `task` .

### mrp_task_get_duration ()

    gint
    mrp_task_get_duration (MrpTask *task);

Fetches the duration of `task` . This differs from the calendar duration that is retrieved by (finish - start).

#### Parameters

task | an MrpTask |

#### Returns

The duration of `task` .

### mrp_task_get_work ()

    gint
    mrp_task_get_work (MrpTask *task);

Retrieves the amount of work of `task` .

#### Parameters

task | an MrpTask |

#### Returns

The work of `task` .

### mrp_task_get_assignments ()

    GList *
    mrp_task_get_assignments (MrpTask *task);

Fetches a list of MrpAssignment.

#### Parameters

task | an MrpTask |

#### Returns

the list of assignments.

### mrp_task_get_assignment ()

    MrpAssignment *
    mrp_task_get_assignment (MrpTask *task,
                             MrpResource *resource);

retrieves the MrpAssignment associated with `task` and `resource` if the resource is assigned to `task` , or `NULL` if there is no such assignment.

#### Parameters

task | an MrpTask |
resource | an MrpResource |

#### Returns

The assignment if it exists, otherwise `NULL`.

### mrp_task_reset_constraint ()

    void
    mrp_task_reset_constraint (MrpTask *task);

Sets the contraint type to `MRP_CONTRAINT_ASAP` and notifies listeners.

#### Parameters

task | an MrpTask |

### mrp_task_get_cost ()

    gfloat
    mrp_task_get_cost (MrpTask *task);

Calculates the cost to complete `task` .

#### Parameters

task | an MrpTask |

#### Returns

The cost to complete `task` .

### mrp_task_get_assigned_resources ()

    GList *
    mrp_task_get_assigned_resources (MrpTask *task);

Fetches a list of resources assigned to `task` . The list needs to be freed with `g_list_free()` by caller.

#### Parameters

task | an MrpTask |

#### Returns

A newly created list of MrpResource.

### mrp_task_compare ()

    gint
    mrp_task_compare (gconstpointer a,
                      gconstpointer b);

Compares the name of the tasks, by calling `strcmp()` on the names.

#### Parameters

a | an MrpTask |
b | an MrpTask |

#### Returns

the return value of strcmp (a->name, b->name).

## Types and Values

### MrpTaskPriv

    typedef struct _MrpTaskPriv MrpTaskPriv;

A private struct for internal use only. The definition of this structure is not publically available.

### MrpTask

    typedef struct _MrpTask MrpTask;

Object representing a task in the project.

### MrpConstraint

    typedef struct {
    	MrpConstraintType type;
    	mrptime           time;
    } MrpConstraint;

A struct representing a scheduling constraint on a task.

### enum MrpConstraintType

The type of constraint for the task. The default is `MRP_CONSTRAINT_ASAP`.

#### Members

MRP_CONSTRAINT_ASAP | as soon as possible |
MRP_CONSTRAINT_ALAP | as late as possible (unimplemented) |
MRP_CONSTRAINT_SNET | start no eariler than |
MRP_CONSTRAINT_FNLT | finish no later than (unimplemented) |
MRP_CONSTRAINT_MSO | must start on |

## Property Details

### The `“constraint”` property

      “constraint”               MrpConstraint *

Task scheduling constraint.

Flags: Read / Write

### The `“critical”` property

      “critical”                 gboolean

In critical path.

Flags: Read / Write

Default value: FALSE

### The `“duration”` property

      “duration”                 gint

Duration of the task.

Flags: Read / Write

Allowed values: >= -1

Default value: 0

### The `“finish”` property

      “finish”                   glong

Task finish time.

Flags: Read

Allowed values: [0,2147483647]

Default value: 0

### The `“latest-finish”` property

      “latest-finish”            glong

Latest task finish time.

Flags: Read

Allowed values: [0,2147483647]

Default value: 0

### The `“latest-start”` property

      “latest-start”             glong

Latest task start time.

Flags: Read

Allowed values: [0,2147483647]

Default value: 0

### The `“name”` property

      “name”                     gchar *

Name of the task.

Flags: Read / Write

Default value: ""

### The `“note”` property

      “note”                     gchar *

Note attached to the task.

Flags: Read / Write

Default value: ""

### The `“percent-complete”` property

      “percent-complete”         gint

Percent completed of task.

Flags: Read / Write

Allowed values: [0,100]

Default value: 0

### The `“priority”` property

      “priority”                 gint

Priority of the task.

Flags: Read / Write

Allowed values: [0,9999]

Default value: 0

### The `“sched”` property

      “sched”                    MrpTaskSched

Task scheduling type.

Flags: Read / Write

Default value: MRP_TASK_SCHED_FIXED_WORK

### The `“start”` property

      “start”                    glong

Task Start time.

Flags: Read

Allowed values: [0,2147483647]

Default value: 0

### The `“type”` property

      “type”                     MrpTaskType

Task type.

Flags: Read / Write

Default value: MRP_TASK_TYPE_NORMAL

### The `“work”` property

      “work”                     gint

Task work.

Flags: Read / Write

Allowed values: >= -1

Default value: 0

## Signal Details

### The `“assignment-added”` signal

    void
    user_function (MrpTask       *mrptask,
                   MrpAssignment *arg1,
                   gpointer       user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“assignment-removed”` signal

    void
    user_function (MrpTask       *mrptask,
                   MrpAssignment *arg1,
                   gpointer       user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“child-added”` signal

    void
    user_function (MrpTask *mrptask,
                   gpointer user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“child-removed”` signal

    void
    user_function (MrpTask *mrptask,
                   gpointer user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“relation-added”` signal

    void
    user_function (MrpTask *mrptask,
                   gpointer arg1,
                   gpointer user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“relation-removed”` signal

    void
    user_function (MrpTask *mrptask,
                   gpointer arg1,
                   gpointer user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“task-moved”` signal

    void
    user_function (MrpTask *mrptask,
                   MrpTask *arg1,
                   gint     arg2,
                   gpointer user_data)

#### Parameters

mrptask | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last