aboutsummaryrefslogtreecommitdiff
path: root/odb/result.cxx
blob: e9393ca3d1d16adde177838df3c60a69c7a8cc7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// file      : odb/result.cxx
// license   : GNU GPL v2; see accompanying LICENSE file

#include <odb/result.hxx>
#include <odb/connection.hxx>

namespace odb
{
  result_impl::
  ~result_impl ()
  {
    if (next_ != this)
      list_remove ();
  }

  result_impl::
  result_impl (connection& c)
      : db_ (c.database ()), conn_ (c), prev_ (0), next_ (this)
  {
    // Add to the list.
    //
    next_ = conn_.results_;
    conn_.results_ = this;

    if (next_ != 0)
      next_->prev_ = this;
  }

  void result_impl::
  list_remove ()
  {
    (prev_ == 0 ? conn_.results_ : prev_->next_) = next_;

    if (next_ != 0)
      next_->prev_ = prev_;

    prev_ = 0;
    next_ = this;
  }
}