// file : odb/relational/sqlite/header.cxx // copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC // license : GNU GPL v3; see accompanying LICENSE file #include #include #include namespace relational { namespace sqlite { namespace header { namespace relational = relational::header; struct image_member: relational::image_member, member_base { image_member (base const& x) : member_base::base (x), // virtual base base (x), member_base (x), member_image_type_ (base::type_override_, base::fq_type_override_, base::key_prefix_) { } virtual bool pre (member_info& mi) { if (container (mi)) return false; image_type = member_image_type_.image_type (mi.m); if (var_override_.empty ()) os << "// " << mi.m.name () << endl << "//" << endl; return true; } virtual void traverse_composite (member_info& mi) { os << image_type << " " << mi.var << "value;" << endl; } virtual void traverse_integer (member_info& mi) { os << image_type << " " << mi.var << "value;" << "bool " << mi.var << "null;" << endl; } virtual void traverse_real (member_info& mi) { os << image_type << " " << mi.var << "value;" << "bool " << mi.var << "null;" << endl; } virtual void traverse_string (member_info& mi) { os << image_type << " " << mi.var << "value;" << "std::size_t " << mi.var << "size;" << "bool " << mi.var << "null;" << endl; } private: string image_type; member_image_type member_image_type_; }; entry image_member_; } } }