Index: chrome/browser/sync/syncable/model_type.cc |
diff --git a/chrome/browser/sync/syncable/model_type.cc b/chrome/browser/sync/syncable/model_type.cc |
index f1accf59b7cd32493366bf6b2ea03b2eb64d009d..48b923ed26314870af1ef2e4997b392c981bcd2b 100644 |
--- a/chrome/browser/sync/syncable/model_type.cc |
+++ b/chrome/browser/sync/syncable/model_type.cc |
@@ -363,6 +363,17 @@ std::string ModelTypeBitSetToString(const ModelTypeBitSet& model_types) { |
return result; |
} |
+std::string ModelEnumSetToString(ModelEnumSet model_types) { |
+ std::string result; |
+ for (ModelEnumSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { |
+ if (!result.empty()) { |
+ result += ", "; |
+ } |
+ result += ModelTypeToString(it.Get()); |
+ } |
+ return result; |
+} |
+ |
ModelTypeBitSet ModelTypeBitSetFromSet(const ModelTypeSet& set) { |
ModelTypeBitSet bitset; |
for (ModelTypeSet::const_iterator iter = set.begin(); iter != set.end(); |
@@ -383,6 +394,33 @@ ModelTypeSet ModelTypeBitSetToSet(const ModelTypeBitSet& bit_set) { |
return set; |
} |
+ModelEnumSet ModelTypeBitSetToEnumSet(const ModelTypeBitSet& bitset) { |
+ ModelEnumSet enum_set; |
+ for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { |
+ if (bitset[i]) { |
+ enum_set.Put(syncable::ModelTypeFromInt(i)); |
+ } |
+ } |
+ return enum_set; |
+} |
+ |
+ModelTypeSet ModelEnumSetToSet(ModelEnumSet enum_set) { |
+ ModelTypeSet model_type_set; |
+ for (ModelEnumSet::Iterator it = enum_set.First(); it.Good(); it.Inc()) { |
+ model_type_set.insert(it.Get()); |
+ } |
+ return model_type_set; |
+} |
+ |
+ModelEnumSet ModelTypeSetToEnumSet(const ModelTypeSet& model_type_set) { |
+ ModelEnumSet enum_set; |
+ for (ModelTypeSet::const_iterator it = model_type_set.begin(); |
+ it != model_type_set.end(); ++it) { |
+ enum_set.Put(*it); |
+ } |
+ return enum_set; |
+} |
+ |
ListValue* ModelTypeBitSetToValue(const ModelTypeBitSet& model_types) { |
ListValue* value = new ListValue(); |
for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { |
@@ -394,6 +432,15 @@ ListValue* ModelTypeBitSetToValue(const ModelTypeBitSet& model_types) { |
return value; |
} |
+base::ListValue* ModelEnumSetToValue(ModelEnumSet model_types) { |
+ ListValue* value = new ListValue(); |
+ for (ModelEnumSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { |
+ value->Append( |
+ Value::CreateStringValue(ModelTypeToString(it.Get()))); |
+ } |
+ return value; |
+} |
+ |
ModelTypeBitSet ModelTypeBitSetFromValue(const base::ListValue& value) { |
ModelTypeBitSet result; |
for (ListValue::const_iterator i = value.begin(); i != value.end(); ++i) { |
@@ -419,6 +466,14 @@ ModelTypeSet ModelTypeSetFromValue(const base::ListValue& value) { |
return result; |
} |
+ModelEnumSet ModelEnumSetFromValue(const base::ListValue& value) { |
+ ModelEnumSet result; |
+ for (ListValue::const_iterator i = value.begin(); i != value.end(); ++i) { |
+ result.Put(ModelTypeFromValue(**i)); |
+ } |
+ return result; |
+} |
+ |
// TODO(zea): remove all hardcoded tags in model associators and have them use |
// this instead. |
std::string ModelTypeToRootTag(ModelType type) { |