================
Comment at: cpp11-migrate/tool/Cpp11Migrate.cpp:210
@@ -208,3 +209,3 @@
     // written to disk for testing purposes.
-    for (HeaderOverrides::const_iterator HeaderI = Overrides.headers_begin(),
+    for (HeaderOverrides::iterator HeaderI = Overrides.headers_begin(),
                                          HeaderE = Overrides.headers_end();
----------------
Tareq A. Siraj wrote:
> Edwin Vane wrote:
> > Tareq A. Siraj wrote:
> > > Guillaume Papin wrote:
> > > > Is this non-const iterator really necessary? Seems to me that the 
> > > > HeaderOverrides is not really modified, just read.
> > > > 
> > > Writing vector<MigratorReplacements> to YAML requires the vector to be 
> > > non-const (not entirely sure why they did it like that) and thus the 
> > > HeaderOverrides need to be non-const.
> > Can we fix the yaml-writing code?
> Not without major refactoring. The internals of the macro 
> `LLVM_YAML_IS_SEQUENCE_VECTOR` has an `element()` which require the vector to 
> be non-const (it allocates an element if it doesn't exist). The docs also 
> mention this: http://llvm.org/docs/YamlIO.html#sequence
Try this:

  # Stop using LLVM_YAML_IS_SEQUENCE_VECTOR
  # Define your own SequenceTraits class where T= const 
std::vector<MigratorReplacement>
  # In element() assert that the incoming i < size of container.

================
Comment at: cpp11-migrate/Core/ReplacementsYaml.h:41
@@ +40,2 @@
+
+#endif // CPP11_MIGRATE_REPLACEMENTS_YAML_H
----------------
Here's something else to try as well. Instead of having this 
MigratorReplacement structure mirror replacements, how about create a struct 
like this:
```
struct TransformReplacements {
  std::string TransformID;
  Replacements GeneratedReplacements;
};
```

Then create a vector of these in HeaderOverrides, one entry for each transform.

Now, you can define MappingTraits for TransformReplacements and Replacements 
and a SequenceTraits for `std::vector<TransformReplacements>` which will result 
in the transform id being written only once for a set of replacements instead 
of for every replacement.



http://llvm-reviews.chandlerc.com/D1142
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to