36            {
"String Key", 
"Hello"},
 
   39      {
"Int Array", {1, 2, 3}},
 
   40      {
"Double Array", {1.2, 2.3, 3.4}},
 
   41      {
"String Array", {
"Hello1", 
"Hello2", 
"Hello3"}},
 
   42      {
"Large Array", std::array<int, 10>{} },            
 
   43      {
"Large String", std::string(63, 
'\0') },           
 
   44      {
"String Array 10", std::array<std::string, 10>{}}, 
 
   46      {
"Large String Array 10", std::array<std::string, 10>{std::string(63, 
'\0')}}
 
   56   std::cout << 
o2 << std::endl;
 
   60   int i = 
o[
"Int32 Key"];
 
   63   o[
"Int32 Key"] *= 1.3;
 
   64   std::cout << 
"Should be 57: " << 
o[
"Int32 Key"] << std::endl;
 
   67   o[
"Int64 Key"] = -1LL;
 
   69   std::cout << std::hex << 
"0x" << 
i64 << std::dec << std::endl;
 
   71   o[
"UInt64 Key"] = 0x1234567812345678u;
 
   73   std::cout << std::hex << 
"0x" << 
ui64 << std::dec << std::endl;
 
   76   o[
"Bool Key"] = 
false;
 
   77   o[
"Bool Key"] = !
o[
"Bool Key"];
 
   80   o[
"Subdir"][
"Subsub"][
"String Key"] = 
"Hello";
 
   81   std::string s = 
o[
"Subdir"][
"Subsub"][
"String Key"];
 
   83   o[
"Subdir"][
"Subsub"][
"String Key"] = s;
 
   84   s = s + 
o[
"Subdir"][
"Subsub"][
"String Key"].s(); 
 
   85   std::cout << s << std::endl;
 
   88   std::string 
substr(
"Int32 Key");
 
   92   std::vector<int> v = 
o[
"Int Array"]; 
 
   93   std::fill(v.begin(), v.end(), 10);
 
   95   o[
"Int Array"][1] = 2;     
 
   96   i = 
o[
"Int Array"][1];     
 
   97   std::cout << 
i <<std::endl;
 
   98   o[
"Int Array"].resize(5);  
 
  100   std::cout << 
"Arrays size is " << 
o[
"Int Array"].size() << std::endl;
 
  103   o[
"Int Array"][10] = 10;
 
  106   std::vector<std::string> 
sv;
 
  107   sv = 
o[
"String Array"];
 
  108   sv[1] = 
"New String";
 
  109   o[
"String Array"] = 
sv;
 
  110   o[
"String Array"][2] = 
"Another String";
 
  111   o[
"String Array"][3] = std::string(
"One more");
 
  112   s = 
o[
"String Array"][1].s(); 
 
  113   std::cout << s << std::endl;
 
  116   o[
"String Array 2"][0].set_string_size(
"Hello", 64);
 
  117   o[
"String Array 2"][1] = 
"Second string";
 
  118   o[
"String Array 2"][2] = 
"Third string";
 
  121   o[
"Bool Array"] = std::array<bool, 3>{
true, 
false, 
true};
 
  122   o[
"Bool Array from Vector"] = std::vector<bool>{
true, 
false, 
true};
 
  126   for (
int e : 
o[
"Int Array"])
 
  128   std::cout << 
"Sum should be 37: " << sum << std::endl;
 
  135   std::cout << 
oi << std::endl;     
 
  136   oi.set_auto_refresh_read(
false);  
 
  137   std::cout << 
oi << std::endl;     
 
  139   std::cout << 
oi << std::endl;
 
  142   oi.set_auto_refresh_write(
false); 
 
  150   ot[
"Double Key"] = 1.23;
 
  151   ot[
"String Key"] = 
"Hello";
 
  152   ot[
"Int Array"] = std::array<int, 10>{};
 
  153   ot[
"Subdir"][
"Int32 Key"] = 42;
 
  154   ot[
"String Array"] = std::vector<std::string>{
"S1", 
"S2", 
"S3"};
 
  155   ot[
"Other String Array"][0] = 
"OSA0";
 
  156   ot[
"Other String Array"][1] = 
"OSA1";
 
  159   i = 
ot[
"Int32 Key"](123);        
 
  160   std::cout << 
i << std::endl;
 
  161   i = 
ot[
"New Int32 Key"](123);    
 
  162   std::cout << 
i << std::endl;
 
  165   std::cout << 
ot << std::endl;
 
  168   std::cout << 
o.print() << std::endl;
 
  173      std::cout << 
oit.get_name() << 
": " << 
oit << std::endl;
 
  176   std::cout << 
o.print() << std::endl;
 
  179   std::cout << 
o.dump() << std::endl;
 
  185      {
"New Bool Key", 
true},
 
  186      {
"String Array", {
"Hello1", 
"Hello2", 
"Hello3"}},
 
  190               {
"New Sub Bool Key", 
false},
 
  197   std::cout << 
"After changing structure with o3:" << std::endl;
 
  198   std::cout << 
o3.print() << std::endl;
 
  209      std::cout << 
"Value of key \"" + 
o.get_full_path() + 
"\" changed to " << 
o << std::endl;
 
 
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)