Mana
String.h
Go to the documentation of this file.
1 
8 #pragma once
9 #include "Platform.h"
10 #include <cstring>
11 #include <iostream>
12 #include <string>
13 
14 #if defined(MANA_TARGET_WINDOWS)
15 #define NOMINMAX
16 #include <windows.h>
17 #endif
18 
19 namespace mana
20 {
21  [[nodiscard]] inline std::string Concat(const std::initializer_list<std::string_view>& r)
22  {
23  std::size_t n = 0;
24  for (auto& it : r)
25  n += it.size();
26  std::string l;
27  l.reserve(n);
28  for (auto& it : r)
29  l += it;
30  return l;
31  }
32 
33  inline void Trace(const std::string& message)
34  {
35 #if defined(MANA_TARGET_WINDOWS) && (MANA_BUILD_TARGET == MANA_BUILD_DEBUG)
36  OutputDebugStringA(message.c_str());
37 #endif
38  std::cout << message;
39  }
40 
41  inline void Trace(const std::initializer_list<std::string_view> message)
42  {
43  Trace(Concat(message));
44  }
45 
46  inline void strcpy(char* outBuffer, size_t outBufferSize, const char* inBuffer)
47  {
48 #if defined(MANA_TARGET_WINDOWS)
49  strcpy_s(outBuffer, outBufferSize, inBuffer);
50 #else
51  std::strncpy(outBuffer, inBuffer, outBufferSize);
52 #endif
53  }
54 
55  inline void strcat(char* outBuffer, size_t outBufferSize, const char* inBuffer)
56  {
57 #if defined(MANA_TARGET_WINDOWS)
58  strcat_s(outBuffer, outBufferSize, inBuffer);
59 #else
60  std::strncat(outBuffer, inBuffer, outBufferSize);
61 #endif
62  }
63 
64  inline int strcmp(char const* buffer1, char const* buffer2)
65  {
66  return std::strcmp(buffer1, buffer2);
67  }
68 }
69 
71 #define MANA_PRINT(...) mana::Trace(__VA_ARGS__)
72 #if MANA_BUILD_TARGET == MANA_BUILD_DEBUG
74 #define MANA_TRACE(...) mana::Trace(__VA_ARGS__)
75 #else
77 #define MANA_TRACE(...) ((void)0)
78 #endif
Definition: CodeBuffer.cpp:12
void strcpy(char *outBuffer, size_t outBufferSize, const char *inBuffer)
Definition: String.h:46
std::string Concat(const std::initializer_list< std::string_view > &r)
Definition: String.h:21
void Trace(const std::string &message)
Definition: String.h:33
int strcmp(char const *buffer1, char const *buffer2)
Definition: String.h:64
void strcat(char *outBuffer, size_t outBufferSize, const char *inBuffer)
Definition: String.h:55