1#
2# Copyright 2017 The Abseil Authors.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      https://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16load(
17    "//absl:copts/configure_copts.bzl",
18    "ABSL_DEFAULT_COPTS",
19    "ABSL_DEFAULT_LINKOPTS",
20    "ABSL_TEST_COPTS",
21)
22
23package(
24    default_visibility = ["//visibility:public"],
25    features = ["parse_headers"],
26)
27
28licenses(["notice"])
29
30cc_library(
31    name = "strings",
32    srcs = [
33        "ascii.cc",
34        "charconv.cc",
35        "escaping.cc",
36        "internal/charconv_bigint.cc",
37        "internal/charconv_bigint.h",
38        "internal/charconv_parse.cc",
39        "internal/charconv_parse.h",
40        "internal/damerau_levenshtein_distance.cc",
41        "internal/memutil.cc",
42        "internal/memutil.h",
43        "internal/stl_type_traits.h",
44        "internal/str_join_internal.h",
45        "internal/str_split_internal.h",
46        "internal/stringify_sink.cc",
47        "internal/stringify_sink.h",
48        "match.cc",
49        "numbers.cc",
50        "str_cat.cc",
51        "str_replace.cc",
52        "str_split.cc",
53        "string_view.cc",
54        "substitute.cc",
55    ],
56    hdrs = [
57        "ascii.h",
58        "charconv.h",
59        "escaping.h",
60        "internal/damerau_levenshtein_distance.h",
61        "internal/has_absl_stringify.h",
62        "internal/string_constant.h",
63        "match.h",
64        "numbers.h",
65        "str_cat.h",
66        "str_join.h",
67        "str_replace.h",
68        "str_split.h",
69        "string_view.h",
70        "strip.h",
71        "substitute.h",
72    ],
73    copts = ABSL_DEFAULT_COPTS,
74    linkopts = ABSL_DEFAULT_LINKOPTS,
75    deps = [
76        ":internal",
77        "//absl/base",
78        "//absl/base:config",
79        "//absl/base:core_headers",
80        "//absl/base:endian",
81        "//absl/base:raw_logging_internal",
82        "//absl/base:throw_delegate",
83        "//absl/memory",
84        "//absl/meta:type_traits",
85        "//absl/numeric:bits",
86        "//absl/numeric:int128",
87    ],
88)
89
90cc_library(
91    name = "internal",
92    srcs = [
93        "internal/escaping.cc",
94        "internal/ostringstream.cc",
95        "internal/utf8.cc",
96    ],
97    hdrs = [
98        "internal/char_map.h",
99        "internal/escaping.h",
100        "internal/ostringstream.h",
101        "internal/resize_uninitialized.h",
102        "internal/utf8.h",
103    ],
104    copts = ABSL_DEFAULT_COPTS,
105    linkopts = ABSL_DEFAULT_LINKOPTS,
106    deps = [
107        "//absl/base:config",
108        "//absl/base:core_headers",
109        "//absl/base:endian",
110        "//absl/base:raw_logging_internal",
111        "//absl/meta:type_traits",
112    ],
113)
114
115cc_test(
116    name = "match_test",
117    size = "small",
118    srcs = ["match_test.cc"],
119    copts = ABSL_TEST_COPTS,
120    visibility = ["//visibility:private"],
121    deps = [
122        ":strings",
123        "@com_google_googletest//:gtest_main",
124    ],
125)
126
127cc_test(
128    name = "escaping_test",
129    size = "small",
130    srcs = [
131        "escaping_test.cc",
132        "internal/escaping_test_common.h",
133    ],
134    copts = ABSL_TEST_COPTS,
135    visibility = ["//visibility:private"],
136    deps = [
137        ":cord",
138        ":strings",
139        "//absl/base:core_headers",
140        "//absl/container:fixed_array",
141        "@com_google_googletest//:gtest_main",
142    ],
143)
144
145cc_test(
146    name = "escaping_benchmark",
147    srcs = [
148        "escaping_benchmark.cc",
149        "internal/escaping_test_common.h",
150    ],
151    copts = ABSL_TEST_COPTS,
152    tags = ["benchmark"],
153    visibility = ["//visibility:private"],
154    deps = [
155        ":strings",
156        "//absl/base:raw_logging_internal",
157        "@com_github_google_benchmark//:benchmark_main",
158    ],
159)
160
161cc_test(
162    name = "ascii_test",
163    size = "small",
164    srcs = ["ascii_test.cc"],
165    copts = ABSL_TEST_COPTS,
166    visibility = ["//visibility:private"],
167    deps = [
168        ":strings",
169        "//absl/base:core_headers",
170        "@com_google_googletest//:gtest_main",
171    ],
172)
173
174cc_test(
175    name = "ascii_benchmark",
176    srcs = ["ascii_benchmark.cc"],
177    copts = ABSL_TEST_COPTS,
178    tags = ["benchmark"],
179    visibility = ["//visibility:private"],
180    deps = [
181        ":strings",
182        "@com_github_google_benchmark//:benchmark_main",
183    ],
184)
185
186cc_test(
187    name = "damerau_levenshtein_distance_test",
188    size = "small",
189    srcs = [
190        "internal/damerau_levenshtein_distance_test.cc",
191    ],
192    copts = ABSL_TEST_COPTS,
193    deps = [
194        "//absl/strings",
195        "@com_google_googletest//:gtest_main",
196    ],
197)
198
199cc_test(
200    name = "memutil_benchmark",
201    srcs = [
202        "internal/memutil.h",
203        "internal/memutil_benchmark.cc",
204    ],
205    copts = ABSL_TEST_COPTS,
206    tags = ["benchmark"],
207    visibility = ["//visibility:private"],
208    deps = [
209        ":strings",
210        "//absl/base:core_headers",
211        "@com_github_google_benchmark//:benchmark_main",
212    ],
213)
214
215cc_test(
216    name = "memutil_test",
217    size = "small",
218    srcs = [
219        "internal/memutil.h",
220        "internal/memutil_test.cc",
221    ],
222    copts = ABSL_TEST_COPTS,
223    visibility = ["//visibility:private"],
224    deps = [
225        ":strings",
226        "//absl/base:core_headers",
227        "@com_google_googletest//:gtest_main",
228    ],
229)
230
231cc_test(
232    name = "utf8_test",
233    size = "small",
234    srcs = [
235        "internal/utf8_test.cc",
236    ],
237    copts = ABSL_TEST_COPTS,
238    visibility = ["//visibility:private"],
239    deps = [
240        ":internal",
241        "//absl/base:core_headers",
242        "@com_google_googletest//:gtest_main",
243    ],
244)
245
246cc_test(
247    name = "string_constant_test",
248    size = "small",
249    srcs = ["internal/string_constant_test.cc"],
250    copts = ABSL_TEST_COPTS,
251    visibility = ["//visibility:private"],
252    deps = [
253        ":strings",
254        "//absl/meta:type_traits",
255        "@com_google_googletest//:gtest_main",
256    ],
257)
258
259cc_test(
260    name = "string_view_benchmark",
261    srcs = ["string_view_benchmark.cc"],
262    copts = ABSL_TEST_COPTS,
263    tags = ["benchmark"],
264    visibility = ["//visibility:private"],
265    deps = [
266        ":strings",
267        "//absl/base:core_headers",
268        "//absl/base:raw_logging_internal",
269        "@com_github_google_benchmark//:benchmark_main",
270    ],
271)
272
273cc_test(
274    name = "string_view_test",
275    size = "small",
276    srcs = ["string_view_test.cc"],
277    copts = ABSL_TEST_COPTS,
278    visibility = ["//visibility:private"],
279    deps = [
280        ":strings",
281        "//absl/base:config",
282        "//absl/base:core_headers",
283        "//absl/base:dynamic_annotations",
284        "@com_google_googletest//:gtest_main",
285    ],
286)
287
288cc_library(
289    name = "cord_internal",
290    srcs = [
291        "internal/cord_internal.cc",
292        "internal/cord_rep_btree.cc",
293        "internal/cord_rep_btree_navigator.cc",
294        "internal/cord_rep_btree_reader.cc",
295        "internal/cord_rep_consume.cc",
296        "internal/cord_rep_crc.cc",
297        "internal/cord_rep_ring.cc",
298    ],
299    hdrs = [
300        "internal/cord_data_edge.h",
301        "internal/cord_internal.h",
302        "internal/cord_rep_btree.h",
303        "internal/cord_rep_btree_navigator.h",
304        "internal/cord_rep_btree_reader.h",
305        "internal/cord_rep_consume.h",
306        "internal/cord_rep_crc.h",
307        "internal/cord_rep_flat.h",
308        "internal/cord_rep_ring.h",
309        "internal/cord_rep_ring_reader.h",
310    ],
311    copts = ABSL_DEFAULT_COPTS,
312    linkopts = ABSL_DEFAULT_LINKOPTS,
313    visibility = [
314        "//visibility:private",
315    ],
316    deps = [
317        ":strings",
318        "//absl/base:base_internal",
319        "//absl/base:config",
320        "//absl/base:core_headers",
321        "//absl/base:endian",
322        "//absl/base:raw_logging_internal",
323        "//absl/base:throw_delegate",
324        "//absl/container:compressed_tuple",
325        "//absl/container:container_memory",
326        "//absl/container:inlined_vector",
327        "//absl/container:layout",
328        "//absl/crc:crc_cord_state",
329        "//absl/functional:function_ref",
330        "//absl/meta:type_traits",
331        "//absl/types:span",
332    ],
333)
334
335cc_test(
336    name = "cord_data_edge_test",
337    size = "small",
338    srcs = ["internal/cord_data_edge_test.cc"],
339    copts = ABSL_TEST_COPTS,
340    visibility = ["//visibility:private"],
341    deps = [
342        ":cord_internal",
343        ":cord_rep_test_util",
344        ":strings",
345        "//absl/base:config",
346        "@com_google_googletest//:gtest_main",
347    ],
348)
349
350cc_test(
351    name = "cord_rep_btree_test",
352    size = "medium",
353    srcs = ["internal/cord_rep_btree_test.cc"],
354    copts = ABSL_TEST_COPTS,
355    visibility = ["//visibility:private"],
356    deps = [
357        ":cord_internal",
358        ":cord_rep_test_util",
359        ":strings",
360        "//absl/base:config",
361        "//absl/base:raw_logging_internal",
362        "//absl/cleanup",
363        "@com_google_googletest//:gtest_main",
364    ],
365)
366
367cc_test(
368    name = "cord_rep_btree_navigator_test",
369    size = "medium",
370    srcs = ["internal/cord_rep_btree_navigator_test.cc"],
371    copts = ABSL_TEST_COPTS,
372    visibility = ["//visibility:private"],
373    deps = [
374        ":cord_internal",
375        ":cord_rep_test_util",
376        ":strings",
377        "//absl/base:config",
378        "//absl/base:raw_logging_internal",
379        "@com_google_googletest//:gtest_main",
380    ],
381)
382
383cc_test(
384    name = "cord_rep_btree_reader_test",
385    size = "medium",
386    srcs = ["internal/cord_rep_btree_reader_test.cc"],
387    copts = ABSL_TEST_COPTS,
388    visibility = ["//visibility:private"],
389    deps = [
390        ":cord",
391        ":cord_internal",
392        ":cord_rep_test_util",
393        ":strings",
394        "//absl/base:config",
395        "//absl/base:raw_logging_internal",
396        "@com_google_googletest//:gtest_main",
397    ],
398)
399
400cc_test(
401    name = "cord_rep_crc_test",
402    size = "small",
403    srcs = ["internal/cord_rep_crc_test.cc"],
404    copts = ABSL_TEST_COPTS,
405    visibility = ["//visibility:private"],
406    deps = [
407        ":cord_internal",
408        ":cord_rep_test_util",
409        "//absl/base:config",
410        "//absl/crc:crc_cord_state",
411        "@com_google_googletest//:gtest_main",
412    ],
413)
414
415cc_library(
416    name = "cordz_update_tracker",
417    hdrs = ["internal/cordz_update_tracker.h"],
418    copts = ABSL_DEFAULT_COPTS,
419    linkopts = ABSL_DEFAULT_LINKOPTS,
420    visibility = [
421        "//absl:__subpackages__",
422    ],
423    deps = ["//absl/base:config"],
424)
425
426cc_test(
427    name = "cordz_update_tracker_test",
428    srcs = ["internal/cordz_update_tracker_test.cc"],
429    deps = [
430        ":cordz_update_tracker",
431        "//absl/base:config",
432        "//absl/base:core_headers",
433        "//absl/synchronization",
434        "@com_google_googletest//:gtest_main",
435    ],
436)
437
438cc_library(
439    name = "cord",
440    srcs = [
441        "cord.cc",
442        "cord_analysis.cc",
443        "cord_analysis.h",
444        "cord_buffer.cc",
445    ],
446    hdrs = [
447        "cord.h",
448        "cord_buffer.h",
449    ],
450    copts = ABSL_DEFAULT_COPTS,
451    linkopts = ABSL_DEFAULT_LINKOPTS,
452    deps = [
453        ":cord_internal",
454        ":cordz_functions",
455        ":cordz_info",
456        ":cordz_statistics",
457        ":cordz_update_scope",
458        ":cordz_update_tracker",
459        ":internal",
460        ":str_format",
461        ":strings",
462        "//absl/base",
463        "//absl/base:config",
464        "//absl/base:core_headers",
465        "//absl/base:endian",
466        "//absl/base:raw_logging_internal",
467        "//absl/container:fixed_array",
468        "//absl/container:inlined_vector",
469        "//absl/crc:crc_cord_state",
470        "//absl/functional:function_ref",
471        "//absl/meta:type_traits",
472        "//absl/numeric:bits",
473        "//absl/types:optional",
474        "//absl/types:span",
475    ],
476)
477
478cc_library(
479    name = "cordz_handle",
480    srcs = ["internal/cordz_handle.cc"],
481    hdrs = ["internal/cordz_handle.h"],
482    copts = ABSL_DEFAULT_COPTS,
483    linkopts = ABSL_DEFAULT_LINKOPTS,
484    visibility = [
485        "//absl:__subpackages__",
486    ],
487    deps = [
488        "//absl/base",
489        "//absl/base:config",
490        "//absl/base:raw_logging_internal",
491        "//absl/synchronization",
492    ],
493)
494
495cc_library(
496    name = "cordz_info",
497    srcs = ["internal/cordz_info.cc"],
498    hdrs = ["internal/cordz_info.h"],
499    copts = ABSL_DEFAULT_COPTS,
500    linkopts = ABSL_DEFAULT_LINKOPTS,
501    visibility = [
502        "//absl:__subpackages__",
503    ],
504    deps = [
505        ":cord_internal",
506        ":cordz_functions",
507        ":cordz_handle",
508        ":cordz_statistics",
509        ":cordz_update_tracker",
510        "//absl/base",
511        "//absl/base:config",
512        "//absl/base:core_headers",
513        "//absl/base:raw_logging_internal",
514        "//absl/container:inlined_vector",
515        "//absl/debugging:stacktrace",
516        "//absl/synchronization",
517        "//absl/types:span",
518    ],
519)
520
521cc_library(
522    name = "cordz_update_scope",
523    hdrs = ["internal/cordz_update_scope.h"],
524    copts = ABSL_DEFAULT_COPTS,
525    linkopts = ABSL_DEFAULT_LINKOPTS,
526    visibility = [
527        "//absl:__subpackages__",
528    ],
529    deps = [
530        ":cord_internal",
531        ":cordz_info",
532        ":cordz_update_tracker",
533        "//absl/base:config",
534        "//absl/base:core_headers",
535    ],
536)
537
538cc_test(
539    name = "cordz_update_scope_test",
540    srcs = ["internal/cordz_update_scope_test.cc"],
541    copts = ABSL_DEFAULT_COPTS,
542    deps = [
543        ":cord_internal",
544        ":cordz_info",
545        ":cordz_test_helpers",
546        ":cordz_update_scope",
547        ":cordz_update_tracker",
548        "//absl/base:config",
549        "@com_google_googletest//:gtest_main",
550    ],
551)
552
553cc_library(
554    name = "cordz_sample_token",
555    srcs = ["internal/cordz_sample_token.cc"],
556    hdrs = ["internal/cordz_sample_token.h"],
557    copts = ABSL_DEFAULT_COPTS,
558    linkopts = ABSL_DEFAULT_LINKOPTS,
559    visibility = [
560        "//absl:__subpackages__",
561    ],
562    deps = [
563        ":cordz_handle",
564        ":cordz_info",
565        "//absl/base:config",
566    ],
567)
568
569cc_library(
570    name = "cordz_functions",
571    srcs = ["internal/cordz_functions.cc"],
572    hdrs = ["internal/cordz_functions.h"],
573    copts = ABSL_DEFAULT_COPTS,
574    linkopts = ABSL_DEFAULT_LINKOPTS,
575    visibility = [
576        "//absl:__subpackages__",
577    ],
578    deps = [
579        "//absl/base:config",
580        "//absl/base:core_headers",
581        "//absl/base:raw_logging_internal",
582        "//absl/profiling:exponential_biased",
583    ],
584)
585
586cc_library(
587    name = "cordz_statistics",
588    hdrs = ["internal/cordz_statistics.h"],
589    copts = ABSL_DEFAULT_COPTS,
590    linkopts = ABSL_DEFAULT_LINKOPTS,
591    visibility = [
592        "//absl:__subpackages__",
593    ],
594    deps = [
595        ":cordz_update_tracker",
596        "//absl/base:config",
597    ],
598)
599
600cc_test(
601    name = "cordz_functions_test",
602    srcs = [
603        "internal/cordz_functions_test.cc",
604    ],
605    deps = [
606        ":cordz_functions",
607        ":cordz_test_helpers",
608        "//absl/base:config",
609        "@com_google_googletest//:gtest_main",
610    ],
611)
612
613cc_test(
614    name = "cordz_handle_test",
615    srcs = [
616        "internal/cordz_handle_test.cc",
617    ],
618    deps = [
619        ":cordz_handle",
620        "//absl/base:config",
621        "//absl/memory",
622        "//absl/random",
623        "//absl/random:distributions",
624        "//absl/synchronization",
625        "//absl/synchronization:thread_pool",
626        "//absl/time",
627        "@com_google_googletest//:gtest_main",
628    ],
629)
630
631cc_test(
632    name = "cordz_info_test",
633    srcs = [
634        "internal/cordz_info_test.cc",
635    ],
636    deps = [
637        ":cord_internal",
638        ":cordz_handle",
639        ":cordz_info",
640        ":cordz_statistics",
641        ":cordz_test_helpers",
642        ":cordz_update_tracker",
643        ":strings",
644        "//absl/base:config",
645        "//absl/debugging:stacktrace",
646        "//absl/debugging:symbolize",
647        "//absl/types:span",
648        "@com_google_googletest//:gtest_main",
649    ],
650)
651
652cc_test(
653    name = "cordz_info_statistics_test",
654    srcs = [
655        "internal/cordz_info_statistics_test.cc",
656    ],
657    deps = [
658        ":cord",
659        ":cord_internal",
660        ":cordz_info",
661        ":cordz_sample_token",
662        ":cordz_statistics",
663        ":cordz_update_scope",
664        ":cordz_update_tracker",
665        "//absl/base:config",
666        "//absl/crc:crc_cord_state",
667        "//absl/synchronization",
668        "//absl/synchronization:thread_pool",
669        "@com_google_googletest//:gtest_main",
670    ],
671)
672
673cc_test(
674    name = "cordz_sample_token_test",
675    srcs = [
676        "internal/cordz_sample_token_test.cc",
677    ],
678    deps = [
679        ":cord_internal",
680        ":cordz_handle",
681        ":cordz_info",
682        ":cordz_sample_token",
683        ":cordz_test_helpers",
684        "//absl/base:config",
685        "//absl/memory",
686        "//absl/random",
687        "//absl/synchronization",
688        "//absl/synchronization:thread_pool",
689        "//absl/time",
690        "@com_google_googletest//:gtest_main",
691    ],
692)
693
694cc_library(
695    name = "cord_test_helpers",
696    testonly = 1,
697    hdrs = [
698        "cord_test_helpers.h",
699    ],
700    copts = ABSL_DEFAULT_COPTS,
701    linkopts = ABSL_DEFAULT_LINKOPTS,
702    deps = [
703        ":cord",
704        ":cord_internal",
705        ":strings",
706        "//absl/base:config",
707    ],
708)
709
710cc_library(
711    name = "cord_rep_test_util",
712    testonly = 1,
713    hdrs = ["internal/cord_rep_test_util.h"],
714    copts = ABSL_DEFAULT_COPTS,
715    linkopts = ABSL_DEFAULT_LINKOPTS,
716    deps = [
717        ":cord_internal",
718        ":strings",
719        "//absl/base:config",
720        "//absl/base:raw_logging_internal",
721    ],
722)
723
724cc_library(
725    name = "cordz_test_helpers",
726    testonly = 1,
727    hdrs = ["cordz_test_helpers.h"],
728    copts = ABSL_DEFAULT_COPTS,
729    linkopts = ABSL_DEFAULT_LINKOPTS,
730    deps = [
731        ":cord",
732        ":cord_internal",
733        ":cordz_info",
734        ":cordz_sample_token",
735        ":cordz_statistics",
736        ":cordz_update_tracker",
737        ":strings",
738        "//absl/base:config",
739        "//absl/base:core_headers",
740        "@com_google_googletest//:gtest",
741    ],
742)
743
744cc_test(
745    name = "cord_buffer_test",
746    size = "small",
747    srcs = ["cord_buffer_test.cc"],
748    copts = ABSL_TEST_COPTS,
749    visibility = ["//visibility:private"],
750    deps = [
751        ":cord",
752        ":cord_internal",
753        ":cord_rep_test_util",
754        "//absl/base:config",
755        "//absl/types:span",
756        "@com_google_googletest//:gtest_main",
757    ],
758)
759
760cc_test(
761    name = "cord_test",
762    size = "medium",
763    srcs = ["cord_test.cc"],
764    copts = ABSL_TEST_COPTS,
765    visibility = ["//visibility:private"],
766    deps = [
767        ":cord",
768        ":cord_test_helpers",
769        ":cordz_functions",
770        ":cordz_test_helpers",
771        ":str_format",
772        ":strings",
773        "//absl/base:config",
774        "//absl/base:core_headers",
775        "//absl/base:endian",
776        "//absl/base:raw_logging_internal",
777        "//absl/container:fixed_array",
778        "//absl/hash",
779        "//absl/log",
780        "//absl/random",
781        "@com_google_googletest//:gtest_main",
782    ],
783)
784
785cc_test(
786    name = "cordz_test",
787    size = "medium",
788    srcs = ["cordz_test.cc"],
789    copts = ABSL_TEST_COPTS,
790    tags = [
791        "benchmark",
792        "no_test_android_arm",
793        "no_test_android_arm64",
794        "no_test_android_x86",
795        "no_test_ios_x86_64",
796        "no_test_lexan",
797        "no_test_loonix",
798    ],
799    visibility = ["//visibility:private"],
800    deps = [
801        ":cord",
802        ":cord_test_helpers",
803        ":cordz_functions",
804        ":cordz_info",
805        ":cordz_sample_token",
806        ":cordz_statistics",
807        ":cordz_test_helpers",
808        ":cordz_update_tracker",
809        ":strings",
810        "//absl/base:config",
811        "//absl/base:core_headers",
812        "//absl/base:raw_logging_internal",
813        "@com_google_googletest//:gtest_main",
814    ],
815)
816
817cc_test(
818    name = "cord_ring_test",
819    size = "medium",
820    srcs = ["cord_ring_test.cc"],
821    copts = ABSL_TEST_COPTS,
822    visibility = ["//visibility:private"],
823    deps = [
824        ":cord_internal",
825        ":strings",
826        "//absl/base:config",
827        "//absl/base:core_headers",
828        "//absl/base:raw_logging_internal",
829        "//absl/debugging:leak_check",
830        "@com_google_googletest//:gtest_main",
831    ],
832)
833
834cc_test(
835    name = "cord_ring_reader_test",
836    size = "medium",
837    srcs = ["cord_ring_reader_test.cc"],
838    copts = ABSL_TEST_COPTS,
839    visibility = ["//visibility:private"],
840    deps = [
841        ":cord_internal",
842        ":strings",
843        "//absl/base:core_headers",
844        "//absl/debugging:leak_check",
845        "@com_google_googletest//:gtest_main",
846    ],
847)
848
849cc_test(
850    name = "substitute_test",
851    size = "small",
852    srcs = ["substitute_test.cc"],
853    copts = ABSL_TEST_COPTS,
854    visibility = ["//visibility:private"],
855    deps = [
856        ":strings",
857        "//absl/base:core_headers",
858        "@com_google_googletest//:gtest_main",
859    ],
860)
861
862cc_test(
863    name = "str_replace_benchmark",
864    srcs = ["str_replace_benchmark.cc"],
865    copts = ABSL_TEST_COPTS,
866    tags = ["benchmark"],
867    visibility = ["//visibility:private"],
868    deps = [
869        ":strings",
870        "//absl/base:raw_logging_internal",
871        "@com_github_google_benchmark//:benchmark_main",
872    ],
873)
874
875cc_test(
876    name = "str_replace_test",
877    size = "small",
878    srcs = ["str_replace_test.cc"],
879    copts = ABSL_TEST_COPTS,
880    visibility = ["//visibility:private"],
881    deps = [
882        ":strings",
883        "@com_google_googletest//:gtest_main",
884    ],
885)
886
887cc_test(
888    name = "str_split_test",
889    srcs = ["str_split_test.cc"],
890    copts = ABSL_TEST_COPTS,
891    visibility = ["//visibility:private"],
892    deps = [
893        ":strings",
894        "//absl/base:core_headers",
895        "//absl/base:dynamic_annotations",
896        "//absl/container:btree",
897        "//absl/container:flat_hash_map",
898        "//absl/container:node_hash_map",
899        "@com_google_googletest//:gtest_main",
900    ],
901)
902
903cc_test(
904    name = "str_split_benchmark",
905    srcs = ["str_split_benchmark.cc"],
906    copts = ABSL_TEST_COPTS,
907    tags = ["benchmark"],
908    visibility = ["//visibility:private"],
909    deps = [
910        ":strings",
911        "//absl/base:raw_logging_internal",
912        "@com_github_google_benchmark//:benchmark_main",
913    ],
914)
915
916cc_test(
917    name = "ostringstream_test",
918    size = "small",
919    srcs = ["internal/ostringstream_test.cc"],
920    copts = ABSL_TEST_COPTS,
921    visibility = ["//visibility:private"],
922    deps = [
923        ":internal",
924        "@com_google_googletest//:gtest_main",
925    ],
926)
927
928cc_test(
929    name = "ostringstream_benchmark",
930    srcs = ["internal/ostringstream_benchmark.cc"],
931    copts = ABSL_TEST_COPTS,
932    tags = ["benchmark"],
933    visibility = ["//visibility:private"],
934    deps = [
935        ":internal",
936        "@com_github_google_benchmark//:benchmark_main",
937    ],
938)
939
940cc_test(
941    name = "resize_uninitialized_test",
942    size = "small",
943    srcs = [
944        "internal/resize_uninitialized.h",
945        "internal/resize_uninitialized_test.cc",
946    ],
947    copts = ABSL_TEST_COPTS,
948    visibility = ["//visibility:private"],
949    deps = [
950        "//absl/base:core_headers",
951        "//absl/meta:type_traits",
952        "@com_google_googletest//:gtest_main",
953    ],
954)
955
956cc_test(
957    name = "str_join_test",
958    size = "small",
959    srcs = ["str_join_test.cc"],
960    copts = ABSL_TEST_COPTS,
961    visibility = ["//visibility:private"],
962    deps = [
963        ":strings",
964        "//absl/base:core_headers",
965        "//absl/memory",
966        "@com_google_googletest//:gtest_main",
967    ],
968)
969
970cc_test(
971    name = "str_join_benchmark",
972    srcs = ["str_join_benchmark.cc"],
973    copts = ABSL_TEST_COPTS,
974    tags = ["benchmark"],
975    visibility = ["//visibility:private"],
976    deps = [
977        ":strings",
978        "@com_github_google_benchmark//:benchmark_main",
979    ],
980)
981
982cc_test(
983    name = "str_cat_test",
984    size = "small",
985    srcs = ["str_cat_test.cc"],
986    copts = ABSL_TEST_COPTS,
987    visibility = ["//visibility:private"],
988    deps = [
989        ":str_format",
990        ":strings",
991        "@com_google_googletest//:gtest_main",
992    ],
993)
994
995cc_test(
996    name = "str_cat_benchmark",
997    srcs = ["str_cat_benchmark.cc"],
998    copts = ABSL_TEST_COPTS,
999    tags = ["benchmark"],
1000    visibility = ["//visibility:private"],
1001    deps = [
1002        ":strings",
1003        "@com_github_google_benchmark//:benchmark_main",
1004    ],
1005)
1006
1007cc_test(
1008    name = "numbers_test",
1009    size = "medium",
1010    srcs = [
1011        "internal/numbers_test_common.h",
1012        "numbers_test.cc",
1013    ],
1014    copts = ABSL_TEST_COPTS,
1015    visibility = ["//visibility:private"],
1016    deps = [
1017        ":internal",
1018        ":pow10_helper",
1019        ":strings",
1020        "//absl/base:config",
1021        "//absl/base:raw_logging_internal",
1022        "//absl/random",
1023        "//absl/random:distributions",
1024        "@com_google_googletest//:gtest_main",
1025    ],
1026)
1027
1028cc_test(
1029    name = "numbers_benchmark",
1030    srcs = ["numbers_benchmark.cc"],
1031    copts = ABSL_TEST_COPTS,
1032    tags = ["benchmark"],
1033    visibility = ["//visibility:private"],
1034    deps = [
1035        ":strings",
1036        "//absl/base:raw_logging_internal",
1037        "//absl/random",
1038        "//absl/random:distributions",
1039        "@com_github_google_benchmark//:benchmark_main",
1040    ],
1041)
1042
1043cc_test(
1044    name = "strip_test",
1045    size = "small",
1046    srcs = ["strip_test.cc"],
1047    copts = ABSL_TEST_COPTS,
1048    visibility = ["//visibility:private"],
1049    deps = [
1050        ":strings",
1051        "@com_google_googletest//:gtest_main",
1052    ],
1053)
1054
1055cc_test(
1056    name = "char_map_test",
1057    srcs = ["internal/char_map_test.cc"],
1058    copts = ABSL_TEST_COPTS,
1059    deps = [
1060        ":internal",
1061        "@com_google_googletest//:gtest_main",
1062    ],
1063)
1064
1065cc_test(
1066    name = "char_map_benchmark",
1067    srcs = ["internal/char_map_benchmark.cc"],
1068    copts = ABSL_TEST_COPTS,
1069    tags = ["benchmark"],
1070    deps = [
1071        ":internal",
1072        "@com_github_google_benchmark//:benchmark_main",
1073    ],
1074)
1075
1076cc_test(
1077    name = "charconv_test",
1078    srcs = ["charconv_test.cc"],
1079    copts = ABSL_TEST_COPTS,
1080    deps = [
1081        ":pow10_helper",
1082        ":str_format",
1083        ":strings",
1084        "@com_google_googletest//:gtest_main",
1085    ],
1086)
1087
1088cc_test(
1089    name = "charconv_parse_test",
1090    srcs = [
1091        "internal/charconv_parse.h",
1092        "internal/charconv_parse_test.cc",
1093    ],
1094    copts = ABSL_TEST_COPTS,
1095    deps = [
1096        ":strings",
1097        "//absl/base:config",
1098        "//absl/base:raw_logging_internal",
1099        "@com_google_googletest//:gtest_main",
1100    ],
1101)
1102
1103cc_test(
1104    name = "charconv_bigint_test",
1105    srcs = [
1106        "internal/charconv_bigint.h",
1107        "internal/charconv_bigint_test.cc",
1108        "internal/charconv_parse.h",
1109    ],
1110    copts = ABSL_TEST_COPTS,
1111    deps = [
1112        ":strings",
1113        "//absl/base:config",
1114        "@com_google_googletest//:gtest_main",
1115    ],
1116)
1117
1118cc_test(
1119    name = "charconv_benchmark",
1120    srcs = [
1121        "charconv_benchmark.cc",
1122    ],
1123    tags = [
1124        "benchmark",
1125    ],
1126    deps = [
1127        ":strings",
1128        "@com_github_google_benchmark//:benchmark_main",
1129    ],
1130)
1131
1132cc_library(
1133    name = "str_format",
1134    hdrs = [
1135        "str_format.h",
1136    ],
1137    copts = ABSL_DEFAULT_COPTS,
1138    linkopts = ABSL_DEFAULT_LINKOPTS,
1139    deps = [
1140        ":str_format_internal",
1141    ],
1142)
1143
1144cc_library(
1145    name = "str_format_internal",
1146    srcs = [
1147        "internal/str_format/arg.cc",
1148        "internal/str_format/bind.cc",
1149        "internal/str_format/extension.cc",
1150        "internal/str_format/float_conversion.cc",
1151        "internal/str_format/output.cc",
1152        "internal/str_format/parser.cc",
1153    ],
1154    hdrs = [
1155        "internal/str_format/arg.h",
1156        "internal/str_format/bind.h",
1157        "internal/str_format/checker.h",
1158        "internal/str_format/constexpr_parser.h",
1159        "internal/str_format/extension.h",
1160        "internal/str_format/float_conversion.h",
1161        "internal/str_format/output.h",
1162        "internal/str_format/parser.h",
1163    ],
1164    copts = ABSL_DEFAULT_COPTS,
1165    linkopts = ABSL_DEFAULT_LINKOPTS,
1166    visibility = ["//visibility:private"],
1167    deps = [
1168        ":strings",
1169        "//absl/base:config",
1170        "//absl/base:core_headers",
1171        "//absl/functional:function_ref",
1172        "//absl/meta:type_traits",
1173        "//absl/numeric:bits",
1174        "//absl/numeric:int128",
1175        "//absl/numeric:representation",
1176        "//absl/types:optional",
1177        "//absl/types:span",
1178        "//absl/utility",
1179    ],
1180)
1181
1182cc_test(
1183    name = "str_format_test",
1184    srcs = ["str_format_test.cc"],
1185    copts = ABSL_TEST_COPTS,
1186    visibility = ["//visibility:private"],
1187    deps = [
1188        ":cord",
1189        ":str_format",
1190        ":strings",
1191        "@com_google_googletest//:gtest_main",
1192    ],
1193)
1194
1195cc_test(
1196    name = "str_format_extension_test",
1197    srcs = [
1198        "internal/str_format/extension_test.cc",
1199    ],
1200    copts = ABSL_TEST_COPTS,
1201    visibility = ["//visibility:private"],
1202    deps = [
1203        ":str_format",
1204        ":str_format_internal",
1205        ":strings",
1206        "@com_google_googletest//:gtest_main",
1207    ],
1208)
1209
1210cc_test(
1211    name = "str_format_arg_test",
1212    srcs = ["internal/str_format/arg_test.cc"],
1213    copts = ABSL_TEST_COPTS,
1214    visibility = ["//visibility:private"],
1215    deps = [
1216        ":str_format",
1217        ":str_format_internal",
1218        "@com_google_googletest//:gtest_main",
1219    ],
1220)
1221
1222cc_test(
1223    name = "str_format_bind_test",
1224    srcs = ["internal/str_format/bind_test.cc"],
1225    copts = ABSL_TEST_COPTS,
1226    visibility = ["//visibility:private"],
1227    deps = [
1228        ":str_format_internal",
1229        "@com_google_googletest//:gtest_main",
1230    ],
1231)
1232
1233cc_test(
1234    name = "str_format_checker_test",
1235    srcs = ["internal/str_format/checker_test.cc"],
1236    copts = ABSL_TEST_COPTS,
1237    visibility = ["//visibility:private"],
1238    deps = [
1239        ":str_format",
1240        "@com_google_googletest//:gtest_main",
1241    ],
1242)
1243
1244cc_test(
1245    name = "str_format_convert_test",
1246    size = "medium",
1247    srcs = ["internal/str_format/convert_test.cc"],
1248    copts = ABSL_TEST_COPTS,
1249    visibility = ["//visibility:private"],
1250    deps = [
1251        ":str_format_internal",
1252        ":strings",
1253        "//absl/base:core_headers",
1254        "//absl/base:raw_logging_internal",
1255        "//absl/types:optional",
1256        "@com_google_googletest//:gtest_main",
1257    ],
1258)
1259
1260cc_test(
1261    name = "str_format_output_test",
1262    srcs = ["internal/str_format/output_test.cc"],
1263    copts = ABSL_TEST_COPTS,
1264    visibility = ["//visibility:private"],
1265    deps = [
1266        ":cord",
1267        ":str_format_internal",
1268        "@com_google_googletest//:gtest_main",
1269    ],
1270)
1271
1272cc_test(
1273    name = "str_format_parser_test",
1274    srcs = ["internal/str_format/parser_test.cc"],
1275    copts = ABSL_TEST_COPTS,
1276    visibility = ["//visibility:private"],
1277    deps = [
1278        ":str_format_internal",
1279        "//absl/base:core_headers",
1280        "@com_google_googletest//:gtest_main",
1281    ],
1282)
1283
1284cc_library(
1285    name = "pow10_helper",
1286    testonly = True,
1287    srcs = ["internal/pow10_helper.cc"],
1288    hdrs = ["internal/pow10_helper.h"],
1289    linkopts = ABSL_DEFAULT_LINKOPTS,
1290    visibility = ["//visibility:private"],
1291    deps = ["//absl/base:config"],
1292)
1293
1294cc_test(
1295    name = "pow10_helper_test",
1296    srcs = ["internal/pow10_helper_test.cc"],
1297    copts = ABSL_TEST_COPTS,
1298    visibility = ["//visibility:private"],
1299    deps = [
1300        ":pow10_helper",
1301        ":str_format",
1302        "@com_google_googletest//:gtest_main",
1303    ],
1304)
1305
1306cc_binary(
1307    name = "atod_manual_test",
1308    testonly = 1,
1309    srcs = ["atod_manual_test.cc"],
1310    copts = ABSL_TEST_COPTS,
1311    linkopts = ABSL_DEFAULT_LINKOPTS,
1312    visibility = ["//visibility:private"],
1313    deps = [
1314        ":str_format",
1315        ":strings",
1316        "//absl/base",
1317        "//absl/types:optional",
1318    ],
1319)
1320