// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Various utilities for dealing with invalidation data types. #ifndef SYNC_NOTIFIER_INVALIDATION_UTIL_H_ #define SYNC_NOTIFIER_INVALIDATION_UTIL_H_ #include <iosfwd> #include <map> #include <set> #include <string> #include "base/memory/scoped_ptr.h" #include "sync/base/sync_export.h" #include "sync/internal_api/public/base/model_type.h" namespace base { class DictionaryValue; } // namespace namespace invalidation { class Invalidation; class ObjectId; // Gmock print helper SYNC_EXPORT_PRIVATE void PrintTo(const invalidation::ObjectId& id, std::ostream* os); } // namespace invalidation namespace syncer { class Invalidation; struct SYNC_EXPORT ObjectIdLessThan { bool operator()(const invalidation::ObjectId& lhs, const invalidation::ObjectId& rhs) const; }; struct SYNC_EXPORT InvalidationVersionLessThan { bool operator()(const syncer::Invalidation& a, const syncer::Invalidation& b) const; }; typedef std::set<invalidation::ObjectId, ObjectIdLessThan> ObjectIdSet; typedef std::map<invalidation::ObjectId, int, ObjectIdLessThan> ObjectIdCountMap; SYNC_EXPORT bool RealModelTypeToObjectId(ModelType model_type, invalidation::ObjectId* object_id); bool ObjectIdToRealModelType(const invalidation::ObjectId& object_id, ModelType* model_type); // Caller owns the returned DictionaryValue. scoped_ptr<base::DictionaryValue> ObjectIdToValue( const invalidation::ObjectId& object_id); bool ObjectIdFromValue(const base::DictionaryValue& value, invalidation::ObjectId* out); SYNC_EXPORT_PRIVATE std::string ObjectIdToString( const invalidation::ObjectId& object_id); SYNC_EXPORT_PRIVATE ObjectIdSet ModelTypeSetToObjectIdSet(ModelTypeSet models); ModelTypeSet ObjectIdSetToModelTypeSet(const ObjectIdSet& ids); std::string InvalidationToString( const invalidation::Invalidation& invalidation); } // namespace syncer #endif // SYNC_NOTIFIER_INVALIDATION_UTIL_H_