aboutsummaryrefslogtreecommitdiff
path: root/odb/oracle/exceptions.hxx
blob: 58f4efb2a6ce98d6c0969e2e4572c9b805d22e49 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// file      : odb/oracle/exceptions.hxx
// copyright : Copyright (c) 2005-2015 Code Synthesis Tools CC
// license   : ODB NCUEL; see accompanying LICENSE file

#ifndef ODB_ORACLE_EXCEPTIONS_HXX
#define ODB_ORACLE_EXCEPTIONS_HXX

#include <odb/pre.hxx>

#include <string>
#include <vector>

#include <odb/exceptions.hxx>

#include <odb/oracle/version.hxx>
#include <odb/oracle/forward.hxx>
#include <odb/oracle/oracle-fwd.hxx>
#include <odb/oracle/details/export.hxx>

namespace odb
{
  namespace oracle
  {
    struct LIBODB_ORACLE_EXPORT database_exception: odb::database_exception
    {
      struct record
      {
        record (sb4 error, const std::string& message);

        sb4
        error () const
        {
          return error_;
        }

        const std::string&
        message () const
        {
          return message_;
        }

      private:
        sb4 error_;
        std::string message_;
      };

      typedef std::vector<record> records;

      typedef records::size_type size_type;
      typedef records::const_iterator iterator;

      iterator
      begin () const
      {
        return records_.begin ();
      }

      iterator
      end () const
      {
        return records_.end ();
      }

      size_type
      size () const
      {
        return records_.size ();
      }

    public:
      ~database_exception () throw ();

      database_exception ();
      database_exception (sb4 error, const std::string& message);

      virtual const char*
      what () const throw ();

      virtual database_exception*
      clone () const;

      void
      append (sb4 error, const std::string& message);

    private:
      records records_;
      std::string what_;
    };

    struct LIBODB_ORACLE_EXPORT lob_comparison: odb::exception
    {
      virtual const char*
      what () const throw ();

      virtual lob_comparison*
      clone () const;
    };

    struct LIBODB_ORACLE_EXPORT cli_exception: odb::exception
    {
      cli_exception (const std::string& what);
      ~cli_exception () throw ();

      virtual const char*
      what () const throw ();

      virtual cli_exception*
      clone () const;

    private:
      std::string what_;
    };

    struct LIBODB_ORACLE_EXPORT invalid_oci_handle: odb::exception
    {
      virtual const char*
      what () const throw ();

      virtual invalid_oci_handle*
      clone () const;
    };

    namespace core
    {
      using oracle::database_exception;
      using oracle::lob_comparison;
      using oracle::cli_exception;
      using oracle::invalid_oci_handle;
    }
  }
}

#include <odb/post.hxx>

#endif // ODB_ORACLE_EXCEPTIONS_HXX