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.

<if !private>
static c4_Cursor Allocate ();

  <if !private>

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

  <if !private>

static void Release (c4_Cursor);

  <if !private>

c4_Row ();
  Construct a row with no properties

  <if !private>

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

  <if !private>

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

  <if !private>

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

  <if !private>

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

  <if !private>

~c4_Row ();
  Destructor

  <if !private>

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

  <if !private>

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

  <if !private>

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

class c4_Row