]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/textwriter.cpp
Use C++11 features to manipulate containers
[libs/datafile.git] / source / textwriter.cpp
index 921842279f133eabf555d57d97e609d563dacb72..04fccff5afaf43ae30f708be0870b1427dd67309 100644 (file)
@@ -30,20 +30,20 @@ void TextWriter::write_(const Statement &st, unsigned level)
        string indent(level, '\t');
 
        out.write(format("%s%s", indent, st.keyword));
-       for(vector<Value>::const_iterator i = st.args.begin(); i!=st.args.end(); ++i)
+       for(const Value &v: st.args)
        {
                out.put(' ');
-               if(i->get_signature()==StringType::signature)
-                       out.write(format("\"%s\"", c_escape(i->get<StringType::Store>(), false)));
-               else if(i->get_signature()==BoolType::signature)
-                       out.write(i->get<BoolType::Store>() ? "true" : "false");
-               else if(i->get_signature()==IntType::signature)
-                       out.write(lexical_cast<string>(i->get<IntType::Store>()));
-               else if(i->get_signature()==FloatType::signature)
-                       out.write(lexical_cast<string>(i->get<FloatType::Store>(), float_format));
-               else if(i->get_signature()==SymbolType::signature)
+               if(v.get_signature()==StringType::signature)
+                       out.write(format("\"%s\"", c_escape(v.get<StringType::Store>(), false)));
+               else if(v.get_signature()==BoolType::signature)
+                       out.write(v.get<BoolType::Store>() ? "true" : "false");
+               else if(v.get_signature()==IntType::signature)
+                       out.write(lexical_cast<string>(v.get<IntType::Store>()));
+               else if(v.get_signature()==FloatType::signature)
+                       out.write(lexical_cast<string>(v.get<FloatType::Store>(), float_format));
+               else if(v.get_signature()==SymbolType::signature)
                {
-                       string name = i->get<SymbolType::Store>().name;
+                       string name = v.get<SymbolType::Store>().name;
                        if(isdigit(name[0]))
                                out.write("\\"+name);
                        else
@@ -53,8 +53,8 @@ void TextWriter::write_(const Statement &st, unsigned level)
        if(!st.sub.empty())
        {
                out.write(format("\n%s{\n", indent));
-               for(list<Statement>::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i)
-                       write_(*i, level+1);
+               for(const Statement &s: st.sub)
+                       write_(s, level+1);
                out.write(format("%s}", indent));
        }
        out.write(";\n");