VSQLite++  0.3
include/sqlite/ext/variant.hpp
Go to the documentation of this file.
00001 /*##############################################################################
00002  VSQLite++ - virtuosic bytes SQLite3 C++ wrapper
00003 
00004  Copyright (c) 2012-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_EXT_VARIANT_HPP_INCLUDED
00033 #define GUARD_SQLITE_EXT_VARIANT_HPP_INCLUDED
00034 
00035 #include <boost/variant.hpp>
00036 #include <boost/shared_ptr.hpp>
00037 #include <boost/cstdint.hpp>
00038 #include <vector>
00039 #include <string>
00040 
00041 namespace sqlite{
00042 
00043     enum type {
00044         unknown,
00045         null,
00046         integer,
00047         real,
00048         text,
00049         blob
00050     };
00051 
00052     struct unknown_t{};
00053     struct null_t{};
00054     typedef std::vector<boost::uint8_t> blob_t;
00055     typedef boost::shared_ptr<blob_t> blob_ref_t;
00056 
00057     typedef boost::variant<
00058             unknown_t,
00059             int,
00060             boost::int64_t,
00061             long double,
00062             std::string,
00063             null_t,
00064             blob_ref_t > variant_t;
00065 }
00066 
00067 #endif //GUARD_SQLITE_EXT_VARIANT_HPP_INCLUDED
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends