VSQLite++  0.3
include/sqlite/result.hpp
Go to the documentation of this file.
00001 /*##############################################################################
00002  VSQLite++ - virtuosic bytes SQLite3 C++ wrapper
00003 
00004  Copyright (c) 2006-2014 Vinzenz Feenstra vinzenz.feenstra@gmail.com
00005  All rights reserved.
00006 
00007  Redistribution and use in source and binary forms, with or without modification,
00008  are permitted provided that the following conditions are met:
00009 
00010  * Redistributions of source code must retain the above copyright notice,
00011    this list of conditions and the following disclaimer.
00012  * Redistributions in binary form must reproduce the above copyright notice,
00013    this list of conditions and the following disclaimer in the documentation
00014    and/or other materials provided with the distribution.
00015  * Neither the name of virtuosic bytes nor the names of its contributors may
00016    be used to endorse or promote products derived from this software without
00017    specific prior written permission.
00018 
00019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00020  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00021  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00022  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00023  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00024  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00025  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00026  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00027  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00028  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00029  POSSIBILITY OF SUCH DAMAGE.
00030 
00031 ##############################################################################*/
00032 #ifndef GUARD_SQLITE_RESULT_HPP_INCLUDED
00033 #define GUARD_SQLITE_RESULT_HPP_INCLUDED
00034 
00035 #include <boost/noncopyable.hpp>
00036 #include <sqlite/ext/variant.hpp>
00037 
00038 namespace sqlite{
00039     struct query;
00040     struct result_construct_params_private;
00041 
00046     struct result : boost::noncopyable{
00047     private:
00048         typedef boost::shared_ptr<result_construct_params_private> construct_params;
00049         friend struct query;
00050         result(construct_params);
00051     public:
00055         ~result();
00056 
00061         bool next_row();
00062 
00066         int get_row_count();
00067 
00071         int get_column_count();
00072 
00077         type get_column_type(int idx);
00078 
00083         std::string get_column_decltype(int idx);
00084 
00089         variant_t get_variant(int index);
00090 
00094         int get_int(int idx);
00095 
00100         boost::int64_t get_int64(int idx);
00101 
00106         std::string get_string(int idx);
00107 
00112         double get_double(int idx);
00113 
00119         size_t get_binary_size(int idx);
00120 
00126         void get_binary(int idx, void * buf, size_t buf_size);
00127 
00133         void get_binary(int idx, std::vector<unsigned char> & vec);
00134 
00139         std::string get_column_name(int idx);
00140     private:
00141         void access_check(int);
00142     private:
00143         construct_params m_params;
00144         int m_columns;
00145         int m_row_count;
00146     };
00147 
00148     typedef boost::shared_ptr<result> result_type;
00149 }
00150 
00151 #endif //GUARD_SQLITE_RESULT_HPP_INCLUDED
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends