\pagebreak \section{The \code{depobj} Construct} \label{sec:depobj} The stand-alone \code{depobj} construct provides a mechanism to create a \plc{depend object} that expresses a dependence to be used subsequently in the \code{depend} clause of another construct. The dependence is created from a dependence type and a storage location, within a \code{depend} clause of an \code{depobj} construct; %just as one would find directly on a \code{task} construct. and it is stored in the depend object. The depend object is represented by a variable of type \code{omp\_depend\_t} in C/C++ (by a scalar variable of integer kind \code{omp\_depend\_kind} in Fortran). In the example below the stand-alone \code{depobj} construct uses the \code{depend}, \code{update} and \code{destroy} clauses to \plc{initialize}, \plc{update} and \plc{uninitialize} a depend object (\code{obj}). The first \code{depobj} construct initializes the \code{obj} depend object with an \code{inout} dependence type with a storage location defined by variable \code{a}. This dependence is passed into the \plc{driver} routine via the \code{obj} depend object. In the first \plc{driver} routine call, \emph{Task 1} uses the dependence of the object (\code{inout}), while \emph{Task 2} uses an \code{in} dependence specified directly in a \code{depend} clause. For these task dependences \emph{Task 1} must execute and complete before \emph{Task 2} begins. Before the second call to \plc{driver}, \code{obj} is updated using the \code{depobj} construct to represent an \code{in} dependence. Hence, in the second call to \plc{driver}, \emph{Task 1} will have an \code{in} dependence; and \emph{Task 1} and \emph{Task 2} can execute simultaneously. Note: in an \code{update} clause, only the dependence type can be (is) updated. The third \code{depobj} construct uses the \code{destroy} clause. It frees resources as it puts the depend object in an uninitialized state-- effectively destroying the depend object. After an object has been uninitialized it can be initialized again with a new dependence type \emph{and} a new variable. \cexample[5.0]{depobj}{1} \ffreeexample[5.0]{depobj}{1}