OLD | NEW |
---|---|
(Empty) | |
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 #ifndef MEDIA_CAST_MOD_UTIL_H_ | |
imcheng
2014/09/09 01:04:23
MEDIA_CAST_COMMON_MOD_UTIL_H_
hubbe
2014/09/09 19:06:14
Done.
| |
6 #define MEDIA_CAST_MOD_UTIL_H_ | |
7 | |
8 #include <map> | |
9 #include "base/logging.h" | |
10 | |
11 namespace media { | |
12 namespace cast { | |
13 | |
14 // MAP is a map<uint??, ...> where the unsigned integer is | |
15 // assumed to wrap around, but only a small range is used at a time. | |
16 // Return the oldest entry in the map. | |
17 template<class MAP> | |
18 typename MAP::iterator ModMapOldest(MAP* map) { | |
imcheng
2014/09/09 01:04:23
Can map be a const ref?
hubbe
2014/09/09 19:06:14
It can, but then I must return a MAP::const_iterat
| |
19 typename MAP::iterator ret = map->begin(); | |
20 if (ret != map->end()) { | |
21 typename MAP::key_type lower_quarter = 0; | |
22 lower_quarter--; | |
23 lower_quarter >>= 1; | |
24 if (ret->first < lower_quarter) { | |
25 typename MAP::iterator tmp = map->upper_bound(lower_quarter * 3); | |
26 if (tmp != map->end()) | |
27 ret = tmp; | |
28 } | |
29 } | |
30 return ret; | |
31 } | |
32 | |
33 // MAP is a map<uint??, ...> where the unsigned integer is | |
34 // assumed to wrap around, but only a small range is used at a time. | |
35 // Returns the previous entry in the map. | |
36 template<class MAP> | |
37 typename MAP::iterator ModMapPrevious(MAP* map, typename MAP::iterator i) { | |
imcheng
2014/09/09 01:04:23
Can map be a const ref?
hubbe
2014/09/09 19:06:15
Same argument as above.
| |
38 DCHECK(!map->empty()); | |
39 typename MAP::iterator ret = i; | |
40 if (i == map->begin()) { | |
41 ret = map->end(); | |
42 } | |
43 ret--; | |
44 if (i == ret) | |
45 return map->end(); | |
46 if ((i->first - ret->first) > ((typename MAP::key_type(0) - 1)) >> 1) | |
47 return map->end(); | |
48 return ret; | |
49 } | |
50 | |
51 } // namespace cast | |
52 } // namespace media | |
53 | |
54 #endif | |
OLD | NEW |