blob: ea04be59355ffa7f1ff09d267b51ca6804d39644 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
// Copyright 2014 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.
#ifndef COMPONENTS_ENHANCED_BOOKMARKS_ITEM_POSITION_H_
#define COMPONENTS_ENHANCED_BOOKMARKS_ITEM_POSITION_H_
#include <string>
#include <vector>
namespace enhanced_bookmarks {
// Convenience class for generating string based relative ordering between
// bookmark nodes.
class ItemPosition {
public:
~ItemPosition();
// Creates a position suitable to use as a starting point.
static ItemPosition CreateInitialPosition();
// Creates positions relative to other positions.
static ItemPosition CreateBefore(const ItemPosition& other);
static ItemPosition CreateBetween(const ItemPosition& before,
const ItemPosition& after);
static ItemPosition CreateAfter(const ItemPosition& other);
bool IsValid() const;
// Returns a string representation of the position. The string representations
// of two position have the same ordering as the positions themselves when
// compared using ASCII order.
std::string ToString() const;
// Comparison functions.
bool Equals(const ItemPosition& other) const;
bool LessThan(const ItemPosition& other) const;
private:
typedef std::vector<unsigned char> PositionVector;
ItemPosition();
explicit ItemPosition(const PositionVector& position);
static PositionVector CreateBeforeImpl(const PositionVector& before,
size_t from_index);
static PositionVector CreateBetweenImpl(const PositionVector& before,
const PositionVector& after);
static PositionVector CreateAfterImpl(const PositionVector& after,
size_t from_index);
PositionVector position_;
};
} // namespace enhanced_bookmarks
#endif // COMPONENTS_ENHANCED_BOOKMARKS_ITEM_POSITION_H_
|