cppjieba_rb 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +26 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +81 -0
  8. data/Rakefile +20 -0
  9. data/cppjieba_rb.gemspec +50 -0
  10. data/ext/cppjieba/.gitignore +17 -0
  11. data/ext/cppjieba/.travis.yml +22 -0
  12. data/ext/cppjieba/CMakeLists.txt +28 -0
  13. data/ext/cppjieba/ChangeLog.md +236 -0
  14. data/ext/cppjieba/README.md +285 -0
  15. data/ext/cppjieba/README_EN.md +111 -0
  16. data/ext/cppjieba/appveyor.yml +32 -0
  17. data/ext/cppjieba/deps/CMakeLists.txt +1 -0
  18. data/ext/cppjieba/deps/gtest/CMakeLists.txt +5 -0
  19. data/ext/cppjieba/deps/gtest/include/gtest/gtest-death-test.h +283 -0
  20. data/ext/cppjieba/deps/gtest/include/gtest/gtest-message.h +230 -0
  21. data/ext/cppjieba/deps/gtest/include/gtest/gtest-param-test.h +1421 -0
  22. data/ext/cppjieba/deps/gtest/include/gtest/gtest-param-test.h.pump +487 -0
  23. data/ext/cppjieba/deps/gtest/include/gtest/gtest-printers.h +796 -0
  24. data/ext/cppjieba/deps/gtest/include/gtest/gtest-spi.h +232 -0
  25. data/ext/cppjieba/deps/gtest/include/gtest/gtest-test-part.h +176 -0
  26. data/ext/cppjieba/deps/gtest/include/gtest/gtest-typed-test.h +259 -0
  27. data/ext/cppjieba/deps/gtest/include/gtest/gtest.h +2155 -0
  28. data/ext/cppjieba/deps/gtest/include/gtest/gtest_pred_impl.h +358 -0
  29. data/ext/cppjieba/deps/gtest/include/gtest/gtest_prod.h +58 -0
  30. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-death-test-internal.h +308 -0
  31. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-filepath.h +210 -0
  32. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-internal.h +1226 -0
  33. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-linked_ptr.h +233 -0
  34. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-param-util-generated.h +4822 -0
  35. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
  36. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-param-util.h +619 -0
  37. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-port.h +1788 -0
  38. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-string.h +350 -0
  39. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-tuple.h +968 -0
  40. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-tuple.h.pump +336 -0
  41. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-type-util.h +3330 -0
  42. data/ext/cppjieba/deps/gtest/include/gtest/internal/gtest-type-util.h.pump +296 -0
  43. data/ext/cppjieba/deps/gtest/src/.deps/.dirstamp +0 -0
  44. data/ext/cppjieba/deps/gtest/src/.deps/gtest-all.Plo +681 -0
  45. data/ext/cppjieba/deps/gtest/src/.deps/gtest_main.Plo +509 -0
  46. data/ext/cppjieba/deps/gtest/src/.dirstamp +0 -0
  47. data/ext/cppjieba/deps/gtest/src/gtest-all.cc +48 -0
  48. data/ext/cppjieba/deps/gtest/src/gtest-death-test.cc +1234 -0
  49. data/ext/cppjieba/deps/gtest/src/gtest-filepath.cc +380 -0
  50. data/ext/cppjieba/deps/gtest/src/gtest-internal-inl.h +1038 -0
  51. data/ext/cppjieba/deps/gtest/src/gtest-port.cc +746 -0
  52. data/ext/cppjieba/deps/gtest/src/gtest-printers.cc +356 -0
  53. data/ext/cppjieba/deps/gtest/src/gtest-test-part.cc +110 -0
  54. data/ext/cppjieba/deps/gtest/src/gtest-typed-test.cc +110 -0
  55. data/ext/cppjieba/deps/gtest/src/gtest.cc +4898 -0
  56. data/ext/cppjieba/deps/gtest/src/gtest_main.cc +39 -0
  57. data/ext/cppjieba/deps/limonp/ArgvContext.hpp +70 -0
  58. data/ext/cppjieba/deps/limonp/BlockingQueue.hpp +49 -0
  59. data/ext/cppjieba/deps/limonp/BoundedBlockingQueue.hpp +67 -0
  60. data/ext/cppjieba/deps/limonp/BoundedQueue.hpp +65 -0
  61. data/ext/cppjieba/deps/limonp/Closure.hpp +206 -0
  62. data/ext/cppjieba/deps/limonp/Colors.hpp +31 -0
  63. data/ext/cppjieba/deps/limonp/Condition.hpp +38 -0
  64. data/ext/cppjieba/deps/limonp/Config.hpp +103 -0
  65. data/ext/cppjieba/deps/limonp/FileLock.hpp +74 -0
  66. data/ext/cppjieba/deps/limonp/ForcePublic.hpp +7 -0
  67. data/ext/cppjieba/deps/limonp/LocalVector.hpp +139 -0
  68. data/ext/cppjieba/deps/limonp/Logging.hpp +76 -0
  69. data/ext/cppjieba/deps/limonp/Md5.hpp +411 -0
  70. data/ext/cppjieba/deps/limonp/MutexLock.hpp +51 -0
  71. data/ext/cppjieba/deps/limonp/NonCopyable.hpp +21 -0
  72. data/ext/cppjieba/deps/limonp/StdExtension.hpp +159 -0
  73. data/ext/cppjieba/deps/limonp/StringUtil.hpp +365 -0
  74. data/ext/cppjieba/deps/limonp/Thread.hpp +44 -0
  75. data/ext/cppjieba/deps/limonp/ThreadPool.hpp +86 -0
  76. data/ext/cppjieba/dict/README.md +31 -0
  77. data/ext/cppjieba/dict/hmm_model.utf8 +34 -0
  78. data/ext/cppjieba/dict/idf.utf8 +258826 -0
  79. data/ext/cppjieba/dict/jieba.dict.utf8 +348982 -0
  80. data/ext/cppjieba/dict/pos_dict/char_state_tab.utf8 +6653 -0
  81. data/ext/cppjieba/dict/pos_dict/prob_emit.utf8 +166 -0
  82. data/ext/cppjieba/dict/pos_dict/prob_start.utf8 +259 -0
  83. data/ext/cppjieba/dict/pos_dict/prob_trans.utf8 +5222 -0
  84. data/ext/cppjieba/dict/stop_words.utf8 +1534 -0
  85. data/ext/cppjieba/dict/user.dict.utf8 +4 -0
  86. data/ext/cppjieba/include/cppjieba/DictTrie.hpp +227 -0
  87. data/ext/cppjieba/include/cppjieba/FullSegment.hpp +93 -0
  88. data/ext/cppjieba/include/cppjieba/HMMModel.hpp +129 -0
  89. data/ext/cppjieba/include/cppjieba/HMMSegment.hpp +190 -0
  90. data/ext/cppjieba/include/cppjieba/Jieba.hpp +108 -0
  91. data/ext/cppjieba/include/cppjieba/KeywordExtractor.hpp +153 -0
  92. data/ext/cppjieba/include/cppjieba/MPSegment.hpp +137 -0
  93. data/ext/cppjieba/include/cppjieba/MixSegment.hpp +109 -0
  94. data/ext/cppjieba/include/cppjieba/PosTagger.hpp +77 -0
  95. data/ext/cppjieba/include/cppjieba/PreFilter.hpp +54 -0
  96. data/ext/cppjieba/include/cppjieba/QuerySegment.hpp +90 -0
  97. data/ext/cppjieba/include/cppjieba/SegmentBase.hpp +46 -0
  98. data/ext/cppjieba/include/cppjieba/SegmentTagged.hpp +23 -0
  99. data/ext/cppjieba/include/cppjieba/TextRankExtractor.hpp +190 -0
  100. data/ext/cppjieba/include/cppjieba/Trie.hpp +174 -0
  101. data/ext/cppjieba/include/cppjieba/Unicode.hpp +215 -0
  102. data/ext/cppjieba/test/CMakeLists.txt +5 -0
  103. data/ext/cppjieba/test/demo.cpp +80 -0
  104. data/ext/cppjieba/test/load_test.cpp +54 -0
  105. data/ext/cppjieba/test/testdata/curl.res +1 -0
  106. data/ext/cppjieba/test/testdata/extra_dict/jieba.dict.small.utf8 +109750 -0
  107. data/ext/cppjieba/test/testdata/gbk_dict/hmm_model.gbk +34 -0
  108. data/ext/cppjieba/test/testdata/gbk_dict/jieba.dict.gbk +348982 -0
  109. data/ext/cppjieba/test/testdata/jieba.dict.0.1.utf8 +93 -0
  110. data/ext/cppjieba/test/testdata/jieba.dict.0.utf8 +93 -0
  111. data/ext/cppjieba/test/testdata/jieba.dict.1.utf8 +67 -0
  112. data/ext/cppjieba/test/testdata/jieba.dict.2.utf8 +64 -0
  113. data/ext/cppjieba/test/testdata/load_test.urls +2 -0
  114. data/ext/cppjieba/test/testdata/review.100 +100 -0
  115. data/ext/cppjieba/test/testdata/review.100.res +200 -0
  116. data/ext/cppjieba/test/testdata/server.conf +19 -0
  117. data/ext/cppjieba/test/testdata/testlines.gbk +9 -0
  118. data/ext/cppjieba/test/testdata/testlines.utf8 +8 -0
  119. data/ext/cppjieba/test/testdata/userdict.2.utf8 +1 -0
  120. data/ext/cppjieba/test/testdata/userdict.english +2 -0
  121. data/ext/cppjieba/test/testdata/userdict.utf8 +8 -0
  122. data/ext/cppjieba/test/testdata/weicheng.utf8 +247 -0
  123. data/ext/cppjieba/test/unittest/CMakeLists.txt +24 -0
  124. data/ext/cppjieba/test/unittest/gtest_main.cpp +39 -0
  125. data/ext/cppjieba/test/unittest/jieba_test.cpp +133 -0
  126. data/ext/cppjieba/test/unittest/keyword_extractor_test.cpp +79 -0
  127. data/ext/cppjieba/test/unittest/pos_tagger_test.cpp +41 -0
  128. data/ext/cppjieba/test/unittest/pre_filter_test.cpp +43 -0
  129. data/ext/cppjieba/test/unittest/segments_test.cpp +256 -0
  130. data/ext/cppjieba/test/unittest/textrank_test.cpp +86 -0
  131. data/ext/cppjieba/test/unittest/trie_test.cpp +177 -0
  132. data/ext/cppjieba/test/unittest/unicode_test.cpp +43 -0
  133. data/ext/cppjieba_rb/cppjieba_rb.c +10 -0
  134. data/ext/cppjieba_rb/extconf.rb +26 -0
  135. data/ext/cppjieba_rb/internal.cc +148 -0
  136. data/lib/cppjieba_rb/segment.rb +20 -0
  137. data/lib/cppjieba_rb/version.rb +3 -0
  138. data/lib/cppjieba_rb.rb +34 -0
  139. data/test/test_keyword.rb +17 -0
  140. data/test/test_segment.rb +24 -0
  141. data/test/test_tagging.rb +19 -0
  142. metadata +244 -0
@@ -0,0 +1,296 @@
1
+ $$ -*- mode: c++; -*-
2
+ $var n = 50 $$ Maximum length of type lists we want to support.
3
+ // Copyright 2008 Google Inc.
4
+ // All Rights Reserved.
5
+ //
6
+ // Redistribution and use in source and binary forms, with or without
7
+ // modification, are permitted provided that the following conditions are
8
+ // met:
9
+ //
10
+ // * Redistributions of source code must retain the above copyright
11
+ // notice, this list of conditions and the following disclaimer.
12
+ // * Redistributions in binary form must reproduce the above
13
+ // copyright notice, this list of conditions and the following disclaimer
14
+ // in the documentation and/or other materials provided with the
15
+ // distribution.
16
+ // * Neither the name of Google Inc. nor the names of its
17
+ // contributors may be used to endorse or promote products derived from
18
+ // this software without specific prior written permission.
19
+ //
20
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+ //
32
+ // Author: wan@google.com (Zhanyong Wan)
33
+
34
+ // Type utilities needed for implementing typed and type-parameterized
35
+ // tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
36
+ //
37
+ // Currently we support at most $n types in a list, and at most $n
38
+ // type-parameterized tests in one type-parameterized test case.
39
+ // Please contact googletestframework@googlegroups.com if you need
40
+ // more.
41
+
42
+ #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
43
+ #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
44
+
45
+ #include "gtest/internal/gtest-port.h"
46
+ #include "gtest/internal/gtest-string.h"
47
+
48
+ // #ifdef __GNUC__ is too general here. It is possible to use gcc without using
49
+ // libstdc++ (which is where cxxabi.h comes from).
50
+ # ifdef __GLIBCXX__
51
+ # include <cxxabi.h>
52
+ # elif defined(__HP_aCC)
53
+ # include <acxx_demangle.h>
54
+ # endif // __GLIBCXX__
55
+
56
+ namespace testing {
57
+ namespace internal {
58
+
59
+ // GetTypeName<T>() returns a human-readable name of type T.
60
+ // NB: This function is also used in Google Mock, so don't move it inside of
61
+ // the typed-test-only section below.
62
+ template <typename T>
63
+ String GetTypeName() {
64
+ # if GTEST_HAS_RTTI
65
+
66
+ const char* const name = typeid(T).name();
67
+ # if defined(__GLIBCXX__) || defined(__HP_aCC)
68
+ int status = 0;
69
+ // gcc's implementation of typeid(T).name() mangles the type name,
70
+ // so we have to demangle it.
71
+ # ifdef __GLIBCXX__
72
+ using abi::__cxa_demangle;
73
+ # endif // __GLIBCXX__
74
+ char* const readable_name = __cxa_demangle(name, 0, 0, &status);
75
+ const String name_str(status == 0 ? readable_name : name);
76
+ free(readable_name);
77
+ return name_str;
78
+ # else
79
+ return name;
80
+ # endif // __GLIBCXX__ || __HP_aCC
81
+
82
+ # else
83
+
84
+ return "<type>";
85
+
86
+ # endif // GTEST_HAS_RTTI
87
+ }
88
+
89
+ #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
90
+
91
+ // AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
92
+ // type. This can be used as a compile-time assertion to ensure that
93
+ // two types are equal.
94
+
95
+ template <typename T1, typename T2>
96
+ struct AssertTypeEq;
97
+
98
+ template <typename T>
99
+ struct AssertTypeEq<T, T> {
100
+ typedef bool type;
101
+ };
102
+
103
+ // A unique type used as the default value for the arguments of class
104
+ // template Types. This allows us to simulate variadic templates
105
+ // (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
106
+ // support directly.
107
+ struct None {};
108
+
109
+ // The following family of struct and struct templates are used to
110
+ // represent type lists. In particular, TypesN<T1, T2, ..., TN>
111
+ // represents a type list with N types (T1, T2, ..., and TN) in it.
112
+ // Except for Types0, every struct in the family has two member types:
113
+ // Head for the first type in the list, and Tail for the rest of the
114
+ // list.
115
+
116
+ // The empty type list.
117
+ struct Types0 {};
118
+
119
+ // Type lists of length 1, 2, 3, and so on.
120
+
121
+ template <typename T1>
122
+ struct Types1 {
123
+ typedef T1 Head;
124
+ typedef Types0 Tail;
125
+ };
126
+
127
+ $range i 2..n
128
+
129
+ $for i [[
130
+ $range j 1..i
131
+ $range k 2..i
132
+ template <$for j, [[typename T$j]]>
133
+ struct Types$i {
134
+ typedef T1 Head;
135
+ typedef Types$(i-1)<$for k, [[T$k]]> Tail;
136
+ };
137
+
138
+
139
+ ]]
140
+
141
+ } // namespace internal
142
+
143
+ // We don't want to require the users to write TypesN<...> directly,
144
+ // as that would require them to count the length. Types<...> is much
145
+ // easier to write, but generates horrible messages when there is a
146
+ // compiler error, as gcc insists on printing out each template
147
+ // argument, even if it has the default value (this means Types<int>
148
+ // will appear as Types<int, None, None, ..., None> in the compiler
149
+ // errors).
150
+ //
151
+ // Our solution is to combine the best part of the two approaches: a
152
+ // user would write Types<T1, ..., TN>, and Google Test will translate
153
+ // that to TypesN<T1, ..., TN> internally to make error messages
154
+ // readable. The translation is done by the 'type' member of the
155
+ // Types template.
156
+
157
+ $range i 1..n
158
+ template <$for i, [[typename T$i = internal::None]]>
159
+ struct Types {
160
+ typedef internal::Types$n<$for i, [[T$i]]> type;
161
+ };
162
+
163
+ template <>
164
+ struct Types<$for i, [[internal::None]]> {
165
+ typedef internal::Types0 type;
166
+ };
167
+
168
+ $range i 1..n-1
169
+ $for i [[
170
+ $range j 1..i
171
+ $range k i+1..n
172
+ template <$for j, [[typename T$j]]>
173
+ struct Types<$for j, [[T$j]]$for k[[, internal::None]]> {
174
+ typedef internal::Types$i<$for j, [[T$j]]> type;
175
+ };
176
+
177
+ ]]
178
+
179
+ namespace internal {
180
+
181
+ # define GTEST_TEMPLATE_ template <typename T> class
182
+
183
+ // The template "selector" struct TemplateSel<Tmpl> is used to
184
+ // represent Tmpl, which must be a class template with one type
185
+ // parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
186
+ // as the type Tmpl<T>. This allows us to actually instantiate the
187
+ // template "selected" by TemplateSel<Tmpl>.
188
+ //
189
+ // This trick is necessary for simulating typedef for class templates,
190
+ // which C++ doesn't support directly.
191
+ template <GTEST_TEMPLATE_ Tmpl>
192
+ struct TemplateSel {
193
+ template <typename T>
194
+ struct Bind {
195
+ typedef Tmpl<T> type;
196
+ };
197
+ };
198
+
199
+ # define GTEST_BIND_(TmplSel, T) \
200
+ TmplSel::template Bind<T>::type
201
+
202
+ // A unique struct template used as the default value for the
203
+ // arguments of class template Templates. This allows us to simulate
204
+ // variadic templates (e.g. Templates<int>, Templates<int, double>,
205
+ // and etc), which C++ doesn't support directly.
206
+ template <typename T>
207
+ struct NoneT {};
208
+
209
+ // The following family of struct and struct templates are used to
210
+ // represent template lists. In particular, TemplatesN<T1, T2, ...,
211
+ // TN> represents a list of N templates (T1, T2, ..., and TN). Except
212
+ // for Templates0, every struct in the family has two member types:
213
+ // Head for the selector of the first template in the list, and Tail
214
+ // for the rest of the list.
215
+
216
+ // The empty template list.
217
+ struct Templates0 {};
218
+
219
+ // Template lists of length 1, 2, 3, and so on.
220
+
221
+ template <GTEST_TEMPLATE_ T1>
222
+ struct Templates1 {
223
+ typedef TemplateSel<T1> Head;
224
+ typedef Templates0 Tail;
225
+ };
226
+
227
+ $range i 2..n
228
+
229
+ $for i [[
230
+ $range j 1..i
231
+ $range k 2..i
232
+ template <$for j, [[GTEST_TEMPLATE_ T$j]]>
233
+ struct Templates$i {
234
+ typedef TemplateSel<T1> Head;
235
+ typedef Templates$(i-1)<$for k, [[T$k]]> Tail;
236
+ };
237
+
238
+
239
+ ]]
240
+
241
+ // We don't want to require the users to write TemplatesN<...> directly,
242
+ // as that would require them to count the length. Templates<...> is much
243
+ // easier to write, but generates horrible messages when there is a
244
+ // compiler error, as gcc insists on printing out each template
245
+ // argument, even if it has the default value (this means Templates<list>
246
+ // will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
247
+ // errors).
248
+ //
249
+ // Our solution is to combine the best part of the two approaches: a
250
+ // user would write Templates<T1, ..., TN>, and Google Test will translate
251
+ // that to TemplatesN<T1, ..., TN> internally to make error messages
252
+ // readable. The translation is done by the 'type' member of the
253
+ // Templates template.
254
+
255
+ $range i 1..n
256
+ template <$for i, [[GTEST_TEMPLATE_ T$i = NoneT]]>
257
+ struct Templates {
258
+ typedef Templates$n<$for i, [[T$i]]> type;
259
+ };
260
+
261
+ template <>
262
+ struct Templates<$for i, [[NoneT]]> {
263
+ typedef Templates0 type;
264
+ };
265
+
266
+ $range i 1..n-1
267
+ $for i [[
268
+ $range j 1..i
269
+ $range k i+1..n
270
+ template <$for j, [[GTEST_TEMPLATE_ T$j]]>
271
+ struct Templates<$for j, [[T$j]]$for k[[, NoneT]]> {
272
+ typedef Templates$i<$for j, [[T$j]]> type;
273
+ };
274
+
275
+ ]]
276
+
277
+ // The TypeList template makes it possible to use either a single type
278
+ // or a Types<...> list in TYPED_TEST_CASE() and
279
+ // INSTANTIATE_TYPED_TEST_CASE_P().
280
+
281
+ template <typename T>
282
+ struct TypeList { typedef Types1<T> type; };
283
+
284
+
285
+ $range i 1..n
286
+ template <$for i, [[typename T$i]]>
287
+ struct TypeList<Types<$for i, [[T$i]]> > {
288
+ typedef typename Types<$for i, [[T$i]]>::type type;
289
+ };
290
+
291
+ #endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
292
+
293
+ } // namespace internal
294
+ } // namespace testing
295
+
296
+ #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
File without changes