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