Index: third_party/woff2/src/port.h |
diff --git a/third_party/woff2/src/port.h b/third_party/woff2/src/port.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fd5498ef8e6c17d59dfd160a384cbc084d62cd6e |
--- /dev/null |
+++ b/third_party/woff2/src/port.h |
@@ -0,0 +1,46 @@ |
+// Copyright 2013 Google Inc. All Rights Reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+// |
+// Helper function for bit twiddling |
+ |
+#ifndef WOFF2_PORT_H_ |
+#define WOFF2_PORT_H_ |
+ |
+namespace woff2 { |
+ |
+typedef unsigned int uint32; |
+ |
+inline int Log2Floor(uint32 n) { |
+#if defined(__GNUC__) |
+ return n == 0 ? -1 : 31 ^ __builtin_clz(n); |
+#else |
+ if (n == 0) |
+ return -1; |
+ int log = 0; |
+ uint32 value = n; |
+ for (int i = 4; i >= 0; --i) { |
+ int shift = (1 << i); |
+ uint32 x = value >> shift; |
+ if (x != 0) { |
+ value = x; |
+ log += shift; |
+ } |
+ } |
+ assert(value == 1); |
+ return log; |
+#endif |
+} |
+ |
+} // namespace woff2 |
+#endif // WOFF2_PORT_H_ |