| From c5bea9562929c6b55ca208a530ae80033eeb1614 Mon Sep 17 00:00:00 2001 |
| From: Boris Kolpackov <boris@codesynthesis.com> |
| Date: Tue, 7 Nov 2017 10:37:53 +0200 |
| Subject: [PATCH] Switch to C++11, get rid of auto_ptr use |
| |
| [Upstream: 6e374de9ae2f2978f2fca3390aba4ea3f72bfade] |
| Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com> |
| --- |
| odb/Makefile.am | 5 +++++ |
| odb/context.cxx | 4 ++-- |
| odb/context.hxx | 4 ++-- |
| odb/generator.cxx | 18 +++++++++--------- |
| odb/options.cli | 4 ++-- |
| odb/parser.cxx | 14 ++++++++++---- |
| odb/parser.hxx | 7 ++++--- |
| odb/plugin.cxx | 10 +++++----- |
| odb/processor.cxx | 6 +++--- |
| odb/validator.cxx | 2 +- |
| 10 files changed, 43 insertions(+), 31 deletions(-) |
| |
| diff --git a/odb/Makefile.am b/odb/Makefile.am |
| index 2f01398..d9e83d7 100644 |
| --- a/odb/Makefile.am |
| +++ b/odb/Makefile.am |
| @@ -9,6 +9,11 @@ plugin_LTLIBRARIES = odb.la |
| |
| AM_CPPFLAGS = -I'$(top_builddir)' -I'$(top_srcdir)' |
| |
| +# Note: not passed by libtool when linking odb.so. Seems to be harmless for |
| +# now. |
| +# |
| +AM_CXXFLAGS = -std=c++0x |
| + |
| EXTRA_DIST = common-query.hxx common.hxx context.hxx context.ixx cxx-lexer.hxx cxx-token.hxx diagnostics.hxx emitter.hxx features.hxx gcc-fwd.hxx gcc.hxx generate.hxx generator.hxx instance.hxx location.hxx lookup.hxx option-functions.hxx option-parsers.hxx option-types.hxx options.hxx options.ixx parser.hxx pragma.hxx processor.hxx profile.hxx relational/common-query.hxx relational/common.hxx relational/common.txx relational/context.hxx relational/context.ixx relational/generate.hxx relational/header.hxx relational/inline.hxx relational/model.hxx relational/mssql/common.hxx relational/mssql/context.hxx relational/mysql/common.hxx relational/mysql/context.hxx relational/oracle/common.hxx relational/oracle/context.hxx relational/pgsql/common.hxx relational/pgsql/context.hxx relational/processor.hxx relational/schema-source.hxx relational/schema.hxx relational/source.hxx relational/sqlite/common.hxx relational/sqlite/context.hxx relational/validator.hxx semantics.hxx semantics/class-template.hxx semantics/class.hxx semantics/derived.hxx semantics/elements.hxx semantics/elements.ixx semantics/enum.hxx semantics/fundamental.hxx semantics/namespace.hxx semantics/relational.hxx semantics/relational/changelog.hxx semantics/relational/changeset.hxx semantics/relational/column.hxx semantics/relational/deferrable.hxx semantics/relational/elements.hxx semantics/relational/elements.txx semantics/relational/foreign-key.hxx semantics/relational/index.hxx semantics/relational/key.hxx semantics/relational/model.hxx semantics/relational/name.hxx semantics/relational/primary-key.hxx semantics/relational/table.hxx semantics/template.hxx semantics/union-template.hxx semantics/union.hxx semantics/unit.hxx sql-lexer.hxx sql-lexer.ixx sql-token.hxx sql-token.ixx traversal.hxx traversal/class-template.hxx traversal/class.hxx traversal/derived.hxx traversal/elements.hxx traversal/enum.hxx traversal/fundamental.hxx traversal/namespace.hxx traversal/relational.hxx traversal/relational/changelog.hxx traversal/relational/changeset.hxx traversal/relational/column.hxx traversal/relational/elements.hxx traversal/relational/foreign-key.hxx traversal/relational/index.hxx traversal/relational/key.hxx traversal/relational/model.hxx traversal/relational/primary-key.hxx traversal/relational/table.hxx traversal/template.hxx traversal/union-template.hxx traversal/union.hxx traversal/unit.hxx validator.hxx version.hxx options.cli |
| |
| # Plugin. |
| diff --git a/odb/context.cxx b/odb/context.cxx |
| index d62fa88..87f1c32 100644 |
| --- a/odb/context.cxx |
| +++ b/odb/context.cxx |
| @@ -564,14 +564,14 @@ namespace |
| }; |
| } |
| |
| -auto_ptr<context> |
| +unique_ptr<context> |
| create_context (ostream& os, |
| semantics::unit& unit, |
| options const& ops, |
| features& f, |
| semantics::relational::model* m) |
| { |
| - auto_ptr<context> r; |
| + unique_ptr<context> r; |
| |
| switch (ops.database ()[0]) |
| { |
| diff --git a/odb/context.hxx b/odb/context.hxx |
| index 351bc61..10de237 100644 |
| --- a/odb/context.hxx |
| +++ b/odb/context.hxx |
| @@ -13,7 +13,7 @@ |
| #include <stack> |
| #include <vector> |
| #include <string> |
| -#include <memory> // std::auto_ptr |
| +#include <memory> // std::unique_ptr |
| #include <ostream> |
| #include <cstddef> // std::size_t |
| #include <iostream> |
| @@ -1691,7 +1691,7 @@ private: |
| |
| // Create concrete database context. |
| // |
| -std::auto_ptr<context> |
| +std::unique_ptr<context> |
| create_context (std::ostream&, |
| semantics::unit&, |
| options const&, |
| diff --git a/odb/generator.cxx b/odb/generator.cxx |
| index 6aa5151..266b75f 100644 |
| --- a/odb/generator.cxx |
| +++ b/odb/generator.cxx |
| @@ -4,7 +4,7 @@ |
| |
| #include <cctype> // std::toupper, std::is{alpha,upper,lower} |
| #include <string> |
| -#include <memory> // std::auto_ptr |
| +#include <memory> // std::unique_ptr |
| #include <iomanip> |
| #include <fstream> |
| #include <sstream> |
| @@ -141,7 +141,7 @@ generate (options const& ops, |
| |
| if (gen_schema) |
| { |
| - auto_ptr<context> ctx (create_context (cerr, unit, ops, fts, 0)); |
| + unique_ptr<context> ctx (create_context (cerr, unit, ops, fts, 0)); |
| |
| switch (db) |
| { |
| @@ -471,7 +471,7 @@ generate (options const& ops, |
| // |
| if (gen_cxx) |
| { |
| - auto_ptr<context> ctx ( |
| + unique_ptr<context> ctx ( |
| create_context (hxx, unit, ops, fts, model.get ())); |
| |
| sloc_filter sloc (ctx->os); |
| @@ -581,7 +581,7 @@ generate (options const& ops, |
| // |
| if (gen_cxx) |
| { |
| - auto_ptr<context> ctx ( |
| + unique_ptr<context> ctx ( |
| create_context (ixx, unit, ops, fts, model.get ())); |
| |
| sloc_filter sloc (ctx->os); |
| @@ -641,7 +641,7 @@ generate (options const& ops, |
| // |
| if (gen_cxx && (db != database::common || md == multi_database::dynamic)) |
| { |
| - auto_ptr<context> ctx ( |
| + unique_ptr<context> ctx ( |
| create_context (cxx, unit, ops, fts, model.get ())); |
| |
| sloc_filter sloc (ctx->os); |
| @@ -734,7 +734,7 @@ generate (options const& ops, |
| // |
| if (gen_sep_schema) |
| { |
| - auto_ptr<context> ctx ( |
| + unique_ptr<context> ctx ( |
| create_context (sch, unit, ops, fts, model.get ())); |
| |
| sloc_filter sloc (ctx->os); |
| @@ -799,7 +799,7 @@ generate (options const& ops, |
| // |
| if (gen_sql_schema) |
| { |
| - auto_ptr<context> ctx ( |
| + unique_ptr<context> ctx ( |
| create_context (sql, unit, ops, fts, model.get ())); |
| |
| switch (db) |
| @@ -865,7 +865,7 @@ generate (options const& ops, |
| // |
| { |
| ofstream& mig (*mig_pre[i]); |
| - auto_ptr<context> ctx (create_context (mig, unit, ops, fts, 0)); |
| + unique_ptr<context> ctx (create_context (mig, unit, ops, fts, 0)); |
| |
| switch (db) |
| { |
| @@ -908,7 +908,7 @@ generate (options const& ops, |
| // |
| { |
| ofstream& mig (*mig_post[i]); |
| - auto_ptr<context> ctx (create_context (mig, unit, ops, fts, 0)); |
| + unique_ptr<context> ctx (create_context (mig, unit, ops, fts, 0)); |
| |
| switch (db) |
| { |
| diff --git a/odb/options.cli b/odb/options.cli |
| index cf278cb..c994975 100644 |
| --- a/odb/options.cli |
| +++ b/odb/options.cli |
| @@ -211,10 +211,10 @@ class options |
| \cb{db pointer} pragma will use this pointer by default. The value |
| of this option can be \cb{*} which denotes the raw pointer and is |
| the default, or qualified name of a smart pointer class template, |
| - for example, \cb{std::auto_ptr}. In the latter case, the ODB compiler |
| + for example, \cb{std::shared_ptr}. In the latter case, the ODB compiler |
| constructs the object or view pointer by adding a single template |
| argument of the object or view type to the qualified name, for example |
| - \cb{std::auto_ptr<object>}. The ODB runtime uses object and view |
| + \cb{std::shared_ptr<object>}. The ODB runtime uses object and view |
| pointers to return, and, in case of objects, pass and cache |
| dynamically allocated instances of object and view types. |
| |
| diff --git a/odb/parser.cxx b/odb/parser.cxx |
| index 927063b..30e45af 100644 |
| --- a/odb/parser.cxx |
| +++ b/odb/parser.cxx |
| @@ -26,7 +26,7 @@ public: |
| |
| impl (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&); |
| |
| - auto_ptr<unit> |
| + unique_ptr<unit> |
| parse (tree global_scope, path const& main_file); |
| |
| private: |
| @@ -728,10 +728,10 @@ impl (options const& ops, |
| { |
| } |
| |
| -auto_ptr<unit> parser::impl:: |
| +unique_ptr<unit> parser::impl:: |
| parse (tree global_scope, path const& main_file) |
| { |
| - auto_ptr<unit> u (new unit (main_file)); |
| + unique_ptr<unit> u (new unit (main_file)); |
| u->insert (global_namespace, *u); |
| process_named_pragmas (global_namespace, *u); |
| |
| @@ -2263,6 +2263,12 @@ fq_scope (tree decl) |
| // parser |
| // |
| |
| +parser:: |
| +~parser () |
| +{ |
| + // Needs parser::impl definition. |
| +} |
| + |
| parser:: |
| parser (options const& ops, |
| loc_pragmas& lp, |
| @@ -2272,7 +2278,7 @@ parser (options const& ops, |
| { |
| } |
| |
| -auto_ptr<unit> parser:: |
| +unique_ptr<unit> parser:: |
| parse (tree global_scope, path const& main_file) |
| { |
| return impl_->parse (global_scope, main_file); |
| diff --git a/odb/parser.hxx b/odb/parser.hxx |
| index 80e4aa4..648337f 100644 |
| --- a/odb/parser.hxx |
| +++ b/odb/parser.hxx |
| @@ -7,7 +7,7 @@ |
| |
| #include <odb/gcc.hxx> |
| |
| -#include <memory> // std::auto_ptr |
| +#include <memory> // std::unique_ptr |
| |
| #include <odb/pragma.hxx> |
| #include <odb/options.hxx> |
| @@ -18,9 +18,10 @@ class parser |
| public: |
| class failed {}; |
| |
| + ~parser (); |
| parser (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&); |
| |
| - std::auto_ptr<semantics::unit> |
| + std::unique_ptr<semantics::unit> |
| parse (tree global_scope, semantics::path const& main_file); |
| |
| private: |
| @@ -31,7 +32,7 @@ private: |
| |
| private: |
| class impl; |
| - std::auto_ptr<impl> impl_; |
| + std::unique_ptr<impl> impl_; |
| }; |
| |
| #endif // ODB_PARSER_HXX |
| diff --git a/odb/plugin.cxx b/odb/plugin.cxx |
| index 779faed..0fac632 100644 |
| --- a/odb/plugin.cxx |
| +++ b/odb/plugin.cxx |
| @@ -8,7 +8,7 @@ |
| #include <sys/types.h> // stat |
| #include <sys/stat.h> // stat |
| |
| -#include <memory> // std::auto_ptr |
| +#include <memory> // std::unique_ptr |
| #include <string> |
| #include <vector> |
| #include <cstring> // std::strcpy, std::strstr |
| @@ -39,7 +39,7 @@ using cutl::fs::invalid_path; |
| typedef vector<path> paths; |
| |
| int plugin_is_GPL_compatible; |
| -auto_ptr<options const> options_; |
| +unique_ptr<options const> options_; |
| paths profile_paths_; |
| path file_; // File being compiled. |
| paths inputs_; // List of input files in at-once mode or just file_. |
| @@ -222,7 +222,7 @@ gate_callback (void*, void*) |
| // Parse the GCC tree to semantic graph. |
| // |
| parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_); |
| - auto_ptr<unit> u (p.parse (global_namespace, file_)); |
| + unique_ptr<unit> u (p.parse (global_namespace, file_)); |
| |
| features f; |
| |
| @@ -377,14 +377,14 @@ plugin_init (plugin_name_args* plugin_info, plugin_gcc_version*) |
| oi[2].arg = &pd; |
| |
| cli::argv_file_scanner scan (argc, &argv[0], oi, 3); |
| - auto_ptr<options> ops ( |
| + unique_ptr<options> ops ( |
| new options (scan, cli::unknown_mode::fail, cli::unknown_mode::fail)); |
| |
| // Process options. |
| // |
| process_options (*ops); |
| |
| - options_ = ops; |
| + options_ = move (ops); |
| pragma_db_ = db; |
| pragma_multi_ = options_->multi_database (); |
| } |
| diff --git a/odb/processor.cxx b/odb/processor.cxx |
| index bea3624..c787e0d 100644 |
| --- a/odb/processor.cxx |
| +++ b/odb/processor.cxx |
| @@ -120,8 +120,8 @@ namespace |
| // both the wrapper type and the wrapped type must be const. |
| // To see why, consider these possibilities: |
| // |
| - // auto_ptr<const T> - can modify by setting a new pointer |
| - // const auto_ptr<T> - can modify by changing the pointed-to value |
| + // unique_ptr<const T> - can modify by setting a new pointer |
| + // const unique_ptr<T> - can modify by changing the pointed-to value |
| // |
| if (const_type (m.type ()) && |
| !(id (m) || version (m) || m.count ("inverse"))) |
| @@ -3086,7 +3086,7 @@ process (options const& ops, |
| { |
| try |
| { |
| - auto_ptr<context> ctx (create_context (cerr, unit, ops, f, 0)); |
| + unique_ptr<context> ctx (create_context (cerr, unit, ops, f, 0)); |
| |
| // Common processing. |
| // |
| diff --git a/odb/validator.cxx b/odb/validator.cxx |
| index aac52e4..196386c 100644 |
| --- a/odb/validator.cxx |
| +++ b/odb/validator.cxx |
| @@ -1516,7 +1516,7 @@ validate (options const& ops, |
| if (!valid) |
| throw validator_failed (); |
| |
| - auto_ptr<context> ctx (create_context (cerr, u, ops, f, 0)); |
| + unique_ptr<context> ctx (create_context (cerr, u, ops, f, 0)); |
| |
| if (pass == 1) |
| { |
| -- |
| 2.25.0 |
| |