summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/property_tree/breaking_changes.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/property_tree/breaking_changes.txt')
-rw-r--r--src/boost/libs/property_tree/breaking_changes.txt51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/boost/libs/property_tree/breaking_changes.txt b/src/boost/libs/property_tree/breaking_changes.txt
new file mode 100644
index 000000000..f9044e483
--- /dev/null
+++ b/src/boost/libs/property_tree/breaking_changes.txt
@@ -0,0 +1,51 @@
+Copyright (C) 2009 Sebastian Redl
+Distributed under the Boost Software License, Version 1.0.
+See http://www.boost.org/LICENSE_1_0.txt
+
+
+List all breaking changes done to the interface during the update here.
+
+- Template parameters
+Template parameters have been thoroughly changed.
+Impact: If you were using a custom instantiation of basic_ptree, you have to
+ change your code.
+Rationale: The old order made no sense. It ordered the key comparison predicate
+ before the key, although it could easily be defaulted based on it,
+ and the path before the data type, when the path is something you
+ will very rarely want to change (and it could default, too).
+
+- put*
+The put and put_child functions of basic_ptree had add and add_child split from
+them, by separating along the lines of the do_not_replace parameter.
+Impact: If you were using the third parameter of these functions, you have to
+ change your code.
+Rationale: I'm not fond of using boolean parameters to change function behavior.
+ They're hard to remember and hard to read in code. When projects
+ adopt the convention of passing /*boolean=*/true,
+ /*parameters=*/false, /*like=*/false this, something's wrong.
+ It's even more wrong when the parameter has a negative name, as
+ do_not_replace had.
+
+- Custom paths
+Custom paths have been thoroughly changed.
+Impact: If you were using custom paths, you have to change your code. If you
+ referred to the basic_path template by name, you have to change your
+ code.
+Rationale: The old interface required a huge amount of repeated code for
+ custom paths. The new interface is a lot easier to implement.
+
+- Translators
+Translators have been thoroughly changed.
+Impact: If you were using translators at all, you probably have to change your
+ code.
+Rationale: The new interface makes it easier to pass custom translators to
+ specific get/put operations. It also keeps the translator out of
+ the tree's type.
+
+- find
+find() returns an assoc_iterator.
+Impact: If you use find, you may have to change your code. Most importantly,
+ you need to compare against not_found() instead of end().
+Rationale: equal_range() also returns assoc_iterators. equal_range() cannot
+ return normal iterators, since the conversion would not preserve
+ the equal range or even the range property.