check_op.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/check_op.h"
  5. #include <string.h>
  6. #include <cstdio>
  7. #include <sstream>
  8. namespace logging {
  9. char* CheckOpValueStr(int v) {
  10. char buf[50];
  11. snprintf(buf, sizeof(buf), "%d", v);
  12. return strdup(buf);
  13. }
  14. char* CheckOpValueStr(unsigned v) {
  15. char buf[50];
  16. snprintf(buf, sizeof(buf), "%u", v);
  17. return strdup(buf);
  18. }
  19. char* CheckOpValueStr(long v) {
  20. char buf[50];
  21. snprintf(buf, sizeof(buf), "%ld", v);
  22. return strdup(buf);
  23. }
  24. char* CheckOpValueStr(unsigned long v) {
  25. char buf[50];
  26. snprintf(buf, sizeof(buf), "%lu", v);
  27. return strdup(buf);
  28. }
  29. char* CheckOpValueStr(long long v) {
  30. char buf[50];
  31. snprintf(buf, sizeof(buf), "%lld", v);
  32. return strdup(buf);
  33. }
  34. char* CheckOpValueStr(unsigned long long v) {
  35. char buf[50];
  36. snprintf(buf, sizeof(buf), "%llu", v);
  37. return strdup(buf);
  38. }
  39. char* CheckOpValueStr(const void* v) {
  40. char buf[50];
  41. snprintf(buf, sizeof(buf), "%p", v);
  42. return strdup(buf);
  43. }
  44. char* CheckOpValueStr(std::nullptr_t v) {
  45. return strdup("nullptr");
  46. }
  47. char* CheckOpValueStr(const std::string& v) {
  48. return strdup(v.c_str());
  49. }
  50. char* CheckOpValueStr(double v) {
  51. char buf[50];
  52. snprintf(buf, sizeof(buf), "%.6lf", v);
  53. return strdup(buf);
  54. }
  55. char* StreamValToStr(const void* v,
  56. void (*stream_func)(std::ostream&, const void*)) {
  57. std::stringstream ss;
  58. stream_func(ss, v);
  59. return strdup(ss.str().c_str());
  60. }
  61. CheckOpResult::CheckOpResult(const char* expr_str, char* v1_str, char* v2_str) {
  62. std::ostringstream ss;
  63. ss << expr_str << " (" << v1_str << " vs. " << v2_str << ")";
  64. message_ = strdup(ss.str().c_str());
  65. free(v1_str);
  66. free(v2_str);
  67. }
  68. } // namespace logging