OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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 #ifndef COMPONENTS_SYNC_API_STRING_ORDINAL_H_ | |
6 #define COMPONENTS_SYNC_API_STRING_ORDINAL_H_ | |
7 | |
8 #include <stddef.h> | |
9 #include <stdint.h> | |
10 | |
11 #include "components/sync/base/ordinal.h" | |
12 | |
13 namespace syncer { | |
14 | |
15 // A StringOrdinal is an Ordinal with range 'a'-'z' for printability | |
16 // of its internal byte string representation. (Think of | |
17 // StringOrdinal as being short for PrintableStringOrdinal.) It | |
18 // should be used for data types that want to maintain one or more | |
19 // orderings for nodes. | |
20 // | |
21 // Since StringOrdinals contain only printable characters, it is safe | |
22 // to store as a string in a protobuf. | |
23 | |
24 struct StringOrdinalTraits { | |
25 static const uint8_t kZeroDigit = 'a'; | |
26 static const uint8_t kMaxDigit = 'z'; | |
27 static const size_t kMinLength = 1; | |
28 }; | |
29 | |
30 typedef Ordinal<StringOrdinalTraits> StringOrdinal; | |
31 | |
32 static_assert(StringOrdinal::kZeroDigit == 'a', | |
33 "StringOrdinal has incorrect zero digit"); | |
34 static_assert(StringOrdinal::kOneDigit == 'b', | |
35 "StringOrdinal has incorrect one digit"); | |
36 static_assert(StringOrdinal::kMidDigit == 'n', | |
37 "StringOrdinal has incorrect mid digit"); | |
38 static_assert(StringOrdinal::kMaxDigit == 'z', | |
39 "StringOrdinal has incorrect max digit"); | |
40 static_assert(StringOrdinal::kMidDigitValue == 13, | |
41 "StringOrdinal has incorrect mid digit value"); | |
42 static_assert(StringOrdinal::kMaxDigitValue == 25, | |
43 "StringOrdinal has incorrect max digit value"); | |
44 static_assert(StringOrdinal::kRadix == 26, "StringOrdinal has incorrect radix"); | |
45 | |
46 } // namespace syncer | |
47 | |
48 #endif // COMPONENTS_SYNC_API_STRING_ORDINAL_H_ | |
OLD | NEW |