1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// Various utilities for dealing with invalidation data types.
6
7#ifndef COMPONENTS_INVALIDATION_INVALIDATION_UTIL_H_
8#define COMPONENTS_INVALIDATION_INVALIDATION_UTIL_H_
9
10#include <map>
11#include <set>
12#include <string>
13
14#include "base/memory/scoped_ptr.h"
15#include "components/invalidation/invalidation_export.h"
16
17namespace base {
18class DictionaryValue;
19}  // namespace
20
21namespace invalidation {
22class Invalidation;
23class ObjectId;
24}  // namespace invalidation
25
26namespace syncer {
27
28class Invalidation;
29
30struct INVALIDATION_EXPORT ObjectIdLessThan {
31  bool operator()(const invalidation::ObjectId& lhs,
32                  const invalidation::ObjectId& rhs) const;
33};
34
35struct INVALIDATION_EXPORT InvalidationVersionLessThan {
36  bool operator()(const syncer::Invalidation& a,
37                  const syncer::Invalidation& b) const;
38};
39
40typedef std::set<invalidation::ObjectId, ObjectIdLessThan> ObjectIdSet;
41
42typedef std::map<invalidation::ObjectId, int, ObjectIdLessThan>
43    ObjectIdCountMap;
44
45// Caller owns the returned DictionaryValue.
46scoped_ptr<base::DictionaryValue> ObjectIdToValue(
47    const invalidation::ObjectId& object_id);
48
49bool ObjectIdFromValue(const base::DictionaryValue& value,
50                       invalidation::ObjectId* out);
51
52INVALIDATION_EXPORT std::string ObjectIdToString(
53    const invalidation::ObjectId& object_id);
54
55}  // namespace syncer
56
57#endif  // COMPONENTS_INVALIDATION_INVALIDATION_UTIL_H_
58