Ads removed from the pastie. \o/
Running costs stayed. :-(
Donations welcome!

Bitcoin: 1QC38uPBSy7WSYz1whM5SYTHAdhqkN6o8V
Ethereum: 0x0855778a6181a69cc7d5d08c71c4f5846010eb67
Verge: D8fo1fszrNmUK4kfQW5owhYMv3osPvgn2g
Recent entries
2020-03-31 19:24:18
film complet en hd
2020-03-31 19:15:43
movie
2020-03-31 19:10:34
Multi Video Full Movie Se...
2020-03-31 19:06:00
No title specified
2020-03-31 18:59:56
No title specified
2020-03-31 18:36:07
movie
2020-03-31 17:55:21
https://medium.com/@jeann...
2020-03-31 17:54:38
chjyjhj
2020-03-31 17:48:25
BERKAHBERSEDEKAH
2020-03-31 17:47:47
https://medium.com/@jeann...
Permanent entries
2019-10-14 13:05:09
Shift-JIS to UTF-8 mappin...
2014-10-14 21:12:28
Boost property tree - Ite...
2013-10-18 08:24:21
Resize images in a folder...
2013-04-29 17:23:35
Find bad words in a text,...
2013-02-12 20:26:45
Merge two boost property ...
2012-12-18 16:21:40
OpenCV: Access/modify ima...
2012-11-19 10:48:40
Reading a boost::property...
2012-04-10 00:11:46
Convert hex to string or ...
2012-02-18 00:12:04
Screw up []-operator for ...
2012-02-16 03:02:24
Merge continuous numbers ...
2012-01-18 22:26:01
(PHP) Generate / Create (...
2011-04-19 16:05:25
Calculate one's age in ye...
2011-04-18 15:26:45
(PHP) Generate / Create r...
2010-08-26 15:18:00
Pick the first element (k...
2010-07-28 10:36:45
Quakenet - Snailbot comma...
2010-06-21 21:30:52
Using the MATLAB profiler...
2010-05-31 06:31:14
PHP truncation function
2010-05-06 20:49:26
Quakenet - Fishbot comman...
Paste ID: # TX2Vm
Date posted: Tue, 12 Feb 2013 20:26:45 +0000
Date of expiration: never (permanent entry)
Description:

Merge two boost property trees (boost::property_tree::ptree)

  1. ´╗┐boost::property_tree::ptree
  2. Dashboard::mergePropertyTrees( const boost::property_tree::ptree& rptFirst, const boost::property_tree::ptree& rptSecond )
  3. {
  4.   // Take over first property tree
  5.   boost::property_tree::ptree ptMerged = rptFirst;
  6.  
  7.   // Keep track of keys and values (subtrees) in second property tree
  8.   queue<string> qKeys;
  9.   queue<boost::property_tree::ptree> qValues;
  10.   qValues.push( rptSecond );
  11.  
  12.   // Iterate over second property tree
  13.   while( !qValues.empty() )
  14.   {
  15.     // Setup keys and corresponding values
  16.     boost::property_tree::ptree ptree = qValues.front();
  17.     qValues.pop();
  18.     string keychain = "";
  19.     if( !qKeys.empty() )
  20.     {
  21.       keychain = qKeys.front();
  22.       qKeys.pop();
  23.     }
  24.  
  25.     // Iterate over keys level-wise
  26.     BOOST_FOREACH( const boost::property_tree::ptree::value_type& child, ptree )
  27.     {
  28.       // Leaf
  29.       if( child.second.size() == 0 )
  30.       {
  31.         // No "." for first level entries
  32.         string s;
  33.         if( keychain != "" )
  34.           s = keychain + "." + child.first.data();
  35.         else
  36.           s = child.first.data();
  37.  
  38.         // Put into combined property tree
  39.         ptMerged.put( s, child.second.data() );
  40.       }
  41.       // Subtree
  42.       else
  43.       {
  44.         // Put keys (identifiers of subtrees) and all of its parents (where present)
  45.         // aside for later iteration. Keys on first level have no parents
  46.         if( keychain != "" )
  47.           qKeys.push( keychain + "." + child.first.data() );
  48.         else
  49.           qKeys.push( child.first.data() );
  50.  
  51.         // Put values (the subtrees) aside, too
  52.         qValues.push( child.second );
  53.       }
  54.     }  // -- End of BOOST_FOREACH
  55.   }  // --- End of while
  56.  
  57.   return ptMerged;
  58. }
You can paste a correction or amendment to the upper paste or a new paste down below.