diff options
author | rfevang <rfevang@chromium.org> | 2014-09-07 19:03:54 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-08 02:09:21 +0000 |
commit | a3db1c4f5c38b56b7aa7bd7bf8ff48e54e24587a (patch) | |
tree | 16f0ed4a764c734f9a8d3bb68c0d0d7574451aac /components/enhanced_bookmarks/item_position.h | |
parent | 2014111cdd73689c693d3b74069919d2d973edfa (diff) | |
download | chromium_src-a3db1c4f5c38b56b7aa7bd7bf8ff48e54e24587a.zip chromium_src-a3db1c4f5c38b56b7aa7bd7bf8ff48e54e24587a.tar.gz chromium_src-a3db1c4f5c38b56b7aa7bd7bf8ff48e54e24587a.tar.bz2 |
Introduce ItemPosition class for enhanced bookmarks.
This class will be used for setting/reading the string positions
used by the enhanced bookmarks.
BUG=411412
Review URL: https://codereview.chromium.org/510543002
Cr-Commit-Position: refs/heads/master@{#293674}
Diffstat (limited to 'components/enhanced_bookmarks/item_position.h')
-rw-r--r-- | components/enhanced_bookmarks/item_position.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/components/enhanced_bookmarks/item_position.h b/components/enhanced_bookmarks/item_position.h new file mode 100644 index 0000000..ea04be5 --- /dev/null +++ b/components/enhanced_bookmarks/item_position.h @@ -0,0 +1,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_ |