Rows can exist by themselves and as contents of views. Row assignment implies that a copy of the contents of the originating row is made.

A row is implemented as an unattached view with exactly one element.

static c4_Cursor Allocate ();

void ConcatRow (const c4_RowRef& row_);
  Add all properties and values into this row

static void Release (c4_Cursor);

c4_Row ();
  Construct a row with no properties

c4_Row (const c4_RowRef& row_);
  Construct a row from another oneConstruct a row copy from a row reference

c4_Row (const c4_RowRef& row_);
  Construct a row from another oneConstruct a row copy from a row reference

c4_Row& operator= (const c4_RowRef& row_);
  Assign a copy of another row to this oneCopy another row to this one

c4_Row& operator= (const c4_RowRef& row_);
  Assign a copy of another row to this oneCopy another row to this one

~c4_Row ();
  Destructor

c4_View c4_RowRef::Container () const;
  Return the underlying container view

c4_Cursor c4_RowRef::operator& () const;
  Return the cursor associated to this row

c4_RowRef c4_RowRef::operator= (const c4_RowRef& row_);
  Assign the value of another row to this one

class c4_Row