================
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