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 // Keep this file in sync with entry_kernel.h. | |
6 | |
7 #include "sync/syncable/syncable_enum_conversions.h" | |
8 | |
9 #include "base/logging.h" | |
10 | |
11 namespace syncer { | |
12 namespace syncable { | |
13 | |
14 // We can't tokenize expected_min/expected_max since it can be a | |
15 // general expression. | |
16 #define ASSERT_ENUM_BOUNDS(enum_min, enum_max, expected_min, expected_max) \ | |
17 static_assert(static_cast<int>(enum_min) == \ | |
18 static_cast<int>(expected_min), \ | |
19 #enum_min " not " #expected_min); \ | |
20 static_assert(static_cast<int>(enum_max) == \ | |
21 static_cast<int>(expected_max), \ | |
22 #enum_max " not " #expected_max); | |
23 | |
24 #define ENUM_CASE(enum_value) case enum_value: return #enum_value | |
25 | |
26 const char* GetMetahandleFieldString(MetahandleField metahandle_field) { | |
27 ASSERT_ENUM_BOUNDS(META_HANDLE, META_HANDLE, | |
28 INT64_FIELDS_BEGIN, BASE_VERSION - 1); | |
29 switch (metahandle_field) { | |
30 ENUM_CASE(META_HANDLE); | |
31 } | |
32 NOTREACHED(); | |
33 return ""; | |
34 } | |
35 | |
36 const char* GetBaseVersionString(BaseVersion base_version) { | |
37 ASSERT_ENUM_BOUNDS(BASE_VERSION, BASE_VERSION, | |
38 META_HANDLE + 1, SERVER_VERSION - 1); | |
39 switch (base_version) { | |
40 ENUM_CASE(BASE_VERSION); | |
41 } | |
42 NOTREACHED(); | |
43 return ""; | |
44 } | |
45 | |
46 const char* GetInt64FieldString(Int64Field int64_field) { | |
47 ASSERT_ENUM_BOUNDS(SERVER_VERSION, TRANSACTION_VERSION, | |
48 BASE_VERSION + 1, INT64_FIELDS_END - 1); | |
49 switch (int64_field) { | |
50 ENUM_CASE(SERVER_VERSION); | |
51 ENUM_CASE(LOCAL_EXTERNAL_ID); | |
52 ENUM_CASE(TRANSACTION_VERSION); | |
53 case INT64_FIELDS_END: break; | |
54 } | |
55 NOTREACHED(); | |
56 return ""; | |
57 } | |
58 | |
59 const char* GetTimeFieldString(TimeField time_field) { | |
60 ASSERT_ENUM_BOUNDS(MTIME, SERVER_CTIME, | |
61 TIME_FIELDS_BEGIN, TIME_FIELDS_END - 1); | |
62 switch (time_field) { | |
63 ENUM_CASE(MTIME); | |
64 ENUM_CASE(SERVER_MTIME); | |
65 ENUM_CASE(CTIME); | |
66 ENUM_CASE(SERVER_CTIME); | |
67 case TIME_FIELDS_END: break; | |
68 } | |
69 NOTREACHED(); | |
70 return ""; | |
71 } | |
72 | |
73 const char* GetIdFieldString(IdField id_field) { | |
74 ASSERT_ENUM_BOUNDS(ID, SERVER_PARENT_ID, | |
75 ID_FIELDS_BEGIN, ID_FIELDS_END - 1); | |
76 switch (id_field) { | |
77 ENUM_CASE(ID); | |
78 ENUM_CASE(PARENT_ID); | |
79 ENUM_CASE(SERVER_PARENT_ID); | |
80 case ID_FIELDS_END: break; | |
81 } | |
82 NOTREACHED(); | |
83 return ""; | |
84 } | |
85 | |
86 const char* GetIndexedBitFieldString(IndexedBitField indexed_bit_field) { | |
87 ASSERT_ENUM_BOUNDS(IS_UNSYNCED, IS_UNAPPLIED_UPDATE, | |
88 BIT_FIELDS_BEGIN, INDEXED_BIT_FIELDS_END - 1); | |
89 switch (indexed_bit_field) { | |
90 ENUM_CASE(IS_UNSYNCED); | |
91 ENUM_CASE(IS_UNAPPLIED_UPDATE); | |
92 case INDEXED_BIT_FIELDS_END: break; | |
93 } | |
94 NOTREACHED(); | |
95 return ""; | |
96 } | |
97 | |
98 const char* GetIsDelFieldString(IsDelField is_del_field) { | |
99 ASSERT_ENUM_BOUNDS(IS_DEL, IS_DEL, | |
100 INDEXED_BIT_FIELDS_END, IS_DIR - 1); | |
101 switch (is_del_field) { | |
102 ENUM_CASE(IS_DEL); | |
103 } | |
104 NOTREACHED(); | |
105 return ""; | |
106 } | |
107 | |
108 const char* GetBitFieldString(BitField bit_field) { | |
109 ASSERT_ENUM_BOUNDS(IS_DIR, SERVER_IS_DEL, | |
110 IS_DEL + 1, BIT_FIELDS_END - 1); | |
111 switch (bit_field) { | |
112 ENUM_CASE(IS_DIR); | |
113 ENUM_CASE(SERVER_IS_DIR); | |
114 ENUM_CASE(SERVER_IS_DEL); | |
115 case BIT_FIELDS_END: break; | |
116 } | |
117 NOTREACHED(); | |
118 return ""; | |
119 } | |
120 | |
121 const char* GetStringFieldString(StringField string_field) { | |
122 ASSERT_ENUM_BOUNDS(NON_UNIQUE_NAME, UNIQUE_BOOKMARK_TAG, | |
123 STRING_FIELDS_BEGIN, STRING_FIELDS_END - 1); | |
124 switch (string_field) { | |
125 ENUM_CASE(NON_UNIQUE_NAME); | |
126 ENUM_CASE(SERVER_NON_UNIQUE_NAME); | |
127 ENUM_CASE(UNIQUE_SERVER_TAG); | |
128 ENUM_CASE(UNIQUE_CLIENT_TAG); | |
129 ENUM_CASE(UNIQUE_BOOKMARK_TAG); | |
130 case STRING_FIELDS_END: break; | |
131 } | |
132 NOTREACHED(); | |
133 return ""; | |
134 } | |
135 | |
136 const char* GetProtoFieldString(ProtoField proto_field) { | |
137 ASSERT_ENUM_BOUNDS(SPECIFICS, BASE_SERVER_SPECIFICS, | |
138 PROTO_FIELDS_BEGIN, PROTO_FIELDS_END - 1); | |
139 switch (proto_field) { | |
140 ENUM_CASE(SPECIFICS); | |
141 ENUM_CASE(SERVER_SPECIFICS); | |
142 ENUM_CASE(BASE_SERVER_SPECIFICS); | |
143 case PROTO_FIELDS_END: break; | |
144 } | |
145 NOTREACHED(); | |
146 return ""; | |
147 } | |
148 | |
149 const char* GetUniquePositionFieldString(UniquePositionField position_field) { | |
150 ASSERT_ENUM_BOUNDS(SERVER_UNIQUE_POSITION, UNIQUE_POSITION, | |
151 UNIQUE_POSITION_FIELDS_BEGIN, | |
152 UNIQUE_POSITION_FIELDS_END - 1); | |
153 switch (position_field) { | |
154 ENUM_CASE(SERVER_UNIQUE_POSITION); | |
155 ENUM_CASE(UNIQUE_POSITION); | |
156 case UNIQUE_POSITION_FIELDS_END: break; | |
157 } | |
158 NOTREACHED(); | |
159 return ""; | |
160 } | |
161 | |
162 const char* GetAttachmentMetadataFieldString( | |
163 AttachmentMetadataField attachment_metadata_field) { | |
164 ASSERT_ENUM_BOUNDS(ATTACHMENT_METADATA, | |
165 SERVER_ATTACHMENT_METADATA, | |
166 ATTACHMENT_METADATA_FIELDS_BEGIN, | |
167 ATTACHMENT_METADATA_FIELDS_END - 1); | |
168 switch (attachment_metadata_field) { | |
169 ENUM_CASE(ATTACHMENT_METADATA); | |
170 ENUM_CASE(SERVER_ATTACHMENT_METADATA); | |
171 case ATTACHMENT_METADATA_FIELDS_END: break; | |
172 } | |
173 NOTREACHED(); | |
174 return ""; | |
175 } | |
176 | |
177 const char* GetBitTempString(BitTemp bit_temp) { | |
178 ASSERT_ENUM_BOUNDS(SYNCING, DIRTY_SYNC, | |
179 BIT_TEMPS_BEGIN, BIT_TEMPS_END - 1); | |
180 switch (bit_temp) { | |
181 ENUM_CASE(SYNCING); | |
182 ENUM_CASE(DIRTY_SYNC); | |
183 case BIT_TEMPS_END: break; | |
184 } | |
185 NOTREACHED(); | |
186 return ""; | |
187 } | |
188 | |
189 #undef ENUM_CASE | |
190 #undef ASSERT_ENUM_BOUNDS | |
191 | |
192 } // namespace syncable | |
193 } // namespace syncer | |
OLD | NEW |