From b9fe963646367f2da21ba1053bc086bd17b09967 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 24 Apr 2011 11:27:14 +0200 Subject: Implement id_type value type pragma --- odb/pragma.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'odb/pragma.cxx') diff --git a/odb/pragma.cxx b/odb/pragma.cxx index c09c683..8cfc3fa 100644 --- a/odb/pragma.cxx +++ b/odb/pragma.cxx @@ -158,6 +158,17 @@ check_decl_type (tree d, string const& name, string const& p, location_t l) return false; } } + else if (p == "id_type") + { + // Id type can only be used for types. + // + if (!TYPE_P (d)) + { + error_at (l, "name %qs in db pragma %qs does not refer to a type", + name.c_str (), pc); + return false; + } + } else if (p == "type" || p == "value_type" || p == "index_type" || @@ -421,11 +432,13 @@ handle_pragma (cpp_reader* reader, tt = pragma_lex (&t); } else if (p == "type" || + p == "id_type" || p == "value_type" || p == "index_type" || p == "key_type") { // type ("") + // id_type ("") // value_type ("") // index_type ("") // key_type ("") @@ -812,6 +825,12 @@ handle_pragma_db_type (cpp_reader* reader) } extern "C" void +handle_pragma_db_id_type (cpp_reader* reader) +{ + handle_pragma_qualifier (reader, "id_type"); +} + +extern "C" void handle_pragma_db_vtype (cpp_reader* reader) { handle_pragma_qualifier (reader, "value_type"); @@ -873,6 +892,7 @@ register_odb_pragmas (void*, void*) c_register_pragma_with_expansion ("db", "key_column", handle_pragma_db_kcolumn); c_register_pragma_with_expansion ("db", "id_column", handle_pragma_db_idcolumn); c_register_pragma_with_expansion ("db", "type", handle_pragma_db_type); + c_register_pragma_with_expansion ("db", "id_type", handle_pragma_db_id_type); c_register_pragma_with_expansion ("db", "value_type", handle_pragma_db_vtype); c_register_pragma_with_expansion ("db", "index_type", handle_pragma_db_itype); c_register_pragma_with_expansion ("db", "key_type", handle_pragma_db_ktype); -- cgit v1.1