Index: third_party/re2/re2/variadic_function.h |
diff --git a/third_party/re2/re2/variadic_function.h b/third_party/re2/re2/variadic_function.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8d2b763748aaa23441f893aeaf784d6b4a4e4ace |
--- /dev/null |
+++ b/third_party/re2/re2/variadic_function.h |
@@ -0,0 +1,346 @@ |
+// Copyright 2010 The RE2 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 RE2_VARIADIC_FUNCTION_H_ |
+#define RE2_VARIADIC_FUNCTION_H_ |
+ |
+namespace re2 { |
+ |
+template <typename Result, typename Param0, typename Param1, typename Arg, |
+ Result (*Func)(Param0, Param1, const Arg* const [], int count)> |
+class VariadicFunction2 { |
+ public: |
+ VariadicFunction2() {} |
+ |
+ Result operator()(Param0 p0, Param1 p1) const { |
+ return Func(p0, p1, 0, 0); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0) const { |
+ const Arg* const args[] = { &a0 }; |
+ return Func(p0, p1, args, 1); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1) const { |
+ const Arg* const args[] = { &a0, &a1 }; |
+ return Func(p0, p1, args, 2); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2) const { |
+ const Arg* const args[] = { &a0, &a1, &a2 }; |
+ return Func(p0, p1, args, 3); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3 }; |
+ return Func(p0, p1, args, 4); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4 }; |
+ return Func(p0, p1, args, 5); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5 }; |
+ return Func(p0, p1, args, 6); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6 }; |
+ return Func(p0, p1, args, 7); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7 }; |
+ return Func(p0, p1, args, 8); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8 }; |
+ return Func(p0, p1, args, 9); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9 }; |
+ return Func(p0, p1, args, 10); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10 }; |
+ return Func(p0, p1, args, 11); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11 }; |
+ return Func(p0, p1, args, 12); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12 }; |
+ return Func(p0, p1, args, 13); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13 }; |
+ return Func(p0, p1, args, 14); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14 }; |
+ return Func(p0, p1, args, 15); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15 }; |
+ return Func(p0, p1, args, 16); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16 }; |
+ return Func(p0, p1, args, 17); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17 }; |
+ return Func(p0, p1, args, 18); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18 }; |
+ return Func(p0, p1, args, 19); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19 }; |
+ return Func(p0, p1, args, 20); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, |
+ &a20 }; |
+ return Func(p0, p1, args, 21); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21 }; |
+ return Func(p0, p1, args, 22); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22 }; |
+ return Func(p0, p1, args, 23); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23 }; |
+ return Func(p0, p1, args, 24); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24 }; |
+ return Func(p0, p1, args, 25); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25 }; |
+ return Func(p0, p1, args, 26); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25, |
+ const Arg& a26) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25, &a26 }; |
+ return Func(p0, p1, args, 27); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25, |
+ const Arg& a26, const Arg& a27) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25, &a26, &a27 }; |
+ return Func(p0, p1, args, 28); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25, |
+ const Arg& a26, const Arg& a27, const Arg& a28) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25, &a26, &a27, &a28 }; |
+ return Func(p0, p1, args, 29); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25, |
+ const Arg& a26, const Arg& a27, const Arg& a28, const Arg& a29) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25, &a26, &a27, &a28, &a29 }; |
+ return Func(p0, p1, args, 30); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25, |
+ const Arg& a26, const Arg& a27, const Arg& a28, const Arg& a29, |
+ const Arg& a30) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25, &a26, &a27, &a28, &a29, &a30 }; |
+ return Func(p0, p1, args, 31); |
+ } |
+ |
+ Result operator()(Param0 p0, Param1 p1, const Arg& a0, const Arg& a1, |
+ const Arg& a2, const Arg& a3, const Arg& a4, const Arg& a5, |
+ const Arg& a6, const Arg& a7, const Arg& a8, const Arg& a9, |
+ const Arg& a10, const Arg& a11, const Arg& a12, const Arg& a13, |
+ const Arg& a14, const Arg& a15, const Arg& a16, const Arg& a17, |
+ const Arg& a18, const Arg& a19, const Arg& a20, const Arg& a21, |
+ const Arg& a22, const Arg& a23, const Arg& a24, const Arg& a25, |
+ const Arg& a26, const Arg& a27, const Arg& a28, const Arg& a29, |
+ const Arg& a30, const Arg& a31) const { |
+ const Arg* const args[] = { &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, |
+ &a9, &a10, &a11, &a12, &a13, &a14, &a15, &a16, &a17, &a18, &a19, &a20, |
+ &a21, &a22, &a23, &a24, &a25, &a26, &a27, &a28, &a29, &a30, &a31 }; |
+ return Func(p0, p1, args, 32); |
+ } |
+}; |
+ |
+} // namespace re2 |
+ |
+#endif // RE2_VARIADIC_FUNCTION_H_ |