From 319def6da0c6d17c29f66c0ea5837a58988a67d7 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sun, 24 Jul 2011 14:56:11 +0200 Subject: Add support for resetting options accumulated with options pragma --- odb/pragma.cxx | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'odb/pragma.cxx') diff --git a/odb/pragma.cxx b/odb/pragma.cxx index 6e1ecfa..23d3fd3 100644 --- a/odb/pragma.cxx +++ b/odb/pragma.cxx @@ -514,11 +514,11 @@ handle_pragma (cpp_reader* reader, p == "key_options" || p == "id_options") { - // options ("") - // value_options ("") - // index_options ("") - // key_options ("") - // id_options ("") + // options ([""]) + // value_options ([""]) + // index_options ([""]) + // key_options ([""]) + // id_options ([""]) // // Make sure we've got the correct declaration type. @@ -534,20 +534,28 @@ handle_pragma (cpp_reader* reader, tt = pragma_lex (&t); - if (tt != CPP_STRING) + // An empty options specifier signals options reset. + // + if (tt == CPP_STRING) + { + val = TREE_STRING_POINTER (t); + tt = pragma_lex (&t); + } + // Empty options specifier signals options reset. + // + else if (tt != CPP_CLOSE_PAREN) { error () << "options string expected in db pragma '" << p << "'" << endl; return; } - val = TREE_STRING_POINTER (t); - - if (pragma_lex (&t) != CPP_CLOSE_PAREN) + if (tt != CPP_CLOSE_PAREN) { error () << "')' expected at the end of db pragma '" << p << "'" << endl; return; } + mode = pragma::accumulate; tt = pragma_lex (&t); } else if (p == "type" || -- cgit v1.1