Chromium Code Reviews| Index: ppapi/shared_impl/id_assignment.h |
| =================================================================== |
| --- ppapi/shared_impl/id_assignment.h (revision 0) |
| +++ ppapi/shared_impl/id_assignment.h (revision 0) |
| @@ -0,0 +1,40 @@ |
| +// Copyright (c) 2011 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 PPAPI_SHARED_IMPL_ID_ASSIGNMENT_H_ |
| +#define PPAPI_SHARED_IMPL_ID_ASSIGNMENT_H_ |
| + |
| +#include <limits> |
| + |
| +#include "base/basictypes.h" |
| + |
| +namespace ppapi { |
| + |
| +enum PPIdType { |
| + PP_ID_TYPE_MODULE, |
| + PP_ID_TYPE_INSTANCE, |
| + PP_ID_TYPE_RESOURCE, |
| + PP_ID_TYPE_VAR, |
| + PP_ID_TYPE_COUNT |
|
dmichael (off chromium)
2011/08/08 22:13:59
Can you comment a little about COUNT not being a r
|
| +}; |
| + |
| +extern const unsigned int kPPIdTypeBits; |
| + |
| +extern const int32 kMaxPPIdType; |
|
dmichael (off chromium)
2011/08/08 22:13:59
Why does this assume int32, but the functions are
brettw
2011/08/09 17:08:09
I think this is because this is old code and resou
|
| + |
| +template <typename T> inline T MakeTypedId(T value, PPIdType type) { |
| + return (value << kPPIdTypeBits) | static_cast<T>(type); |
|
dmichael (off chromium)
2011/08/08 22:13:59
So you use the least-significant bits for the type
|
| +} |
| + |
| +template <typename T> inline bool CheckIdType(T id, PPIdType type) { |
| + // 0 is a valid resource. |
|
dmichael (off chromium)
2011/08/08 22:13:59
Apparently, 0 is also a valid Var, Instance, and M
|
| + if (!id) |
| + return true; |
| + const T mask = (static_cast<T>(1) << kPPIdTypeBits) - 1; |
| + return (id & mask) == type; |
| +} |
| + |
| +} // namespace ppapi |
| + |
| +#endif // PPAPI_SHARED_IMPL_ID_ASSIGNMENT_H_ |
| Property changes on: ppapi/shared_impl/id_assignment.h |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |