Compare commits
	
		
			No commits in common. "e724f201fc1ad16ba653d6dc244dd686cc5f7b3d" and "cca34a1ad7656dd0f9a50fddbf79ba390a4822e5" have entirely different histories.
		
	
	
		
			e724f201fc
			...
			cca34a1ad7
		
	
		| 
						 | 
					@ -2,7 +2,6 @@
 | 
				
			||||||
#include <soi>
 | 
					#include <soi>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signed main() {
 | 
					signed main() {
 | 
				
			||||||
  dbg();
 | 
					 | 
				
			||||||
  dbg("hi");
 | 
					  dbg("hi");
 | 
				
			||||||
  string s="world";
 | 
					  string s="world";
 | 
				
			||||||
  dbg(s);
 | 
					  dbg(s);
 | 
				
			||||||
| 
						 | 
					@ -19,4 +18,5 @@ signed main() {
 | 
				
			||||||
  dbg(map<int, string>{{3,"three"},{1,"one"}});
 | 
					  dbg(map<int, string>{{3,"three"},{1,"one"}});
 | 
				
			||||||
  dbg(unordered_map<int, string>{{3,"three"},{1,"one"}});
 | 
					  dbg(unordered_map<int, string>{{3,"three"},{1,"one"}});
 | 
				
			||||||
  dbg(unordered_set<int>{3,1,4});
 | 
					  dbg(unordered_set<int>{3,1,4});
 | 
				
			||||||
 | 
					  dbg();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,6 @@
 | 
				
			||||||
#include <tuple>
 | 
					#include <tuple>
 | 
				
			||||||
#include <type_traits>
 | 
					#include <type_traits>
 | 
				
			||||||
#include <unordered_set>
 | 
					#include <unordered_set>
 | 
				
			||||||
#include <unordered_map>
 | 
					 | 
				
			||||||
#include <utility>
 | 
					#include <utility>
 | 
				
			||||||
#include <valarray>
 | 
					#include <valarray>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,8 +19,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __GNUG__
 | 
					#ifdef __GNUG__
 | 
				
			||||||
#include <cstdlib>
 | 
					#include <cstdlib>
 | 
				
			||||||
#include <cxxabi.h>
 | 
					 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
 | 
					#include <cxxabi.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 | 
					#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
 | 
				
			||||||
| 
						 | 
					@ -36,21 +36,25 @@ namespace detail {
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// pretty printing the type name
 | 
					// pretty printing the type name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct string_view {
 | 
					
 | 
				
			||||||
 | 
					struct string_view
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    char const* data;
 | 
					    char const* data;
 | 
				
			||||||
    std::size_t size;
 | 
					    std::size_t size;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <class T> string_view get_name() {
 | 
					template<class T>
 | 
				
			||||||
 | 
					constexpr string_view get_name()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
    char const* p = __PRETTY_FUNCTION__;
 | 
					    char const* p = __PRETTY_FUNCTION__;
 | 
				
			||||||
  while (*p++ != '=')
 | 
					    while (*p++ != '=');
 | 
				
			||||||
    ;
 | 
					    for (; *p == ' '; ++p);
 | 
				
			||||||
  for (; *p == ' '; ++p)
 | 
					 | 
				
			||||||
    ;
 | 
					 | 
				
			||||||
    char const* p2 = p;
 | 
					    char const* p2 = p;
 | 
				
			||||||
    int count = 1;
 | 
					    int count = 1;
 | 
				
			||||||
  for (;; ++p2) {
 | 
					    for (;;++p2)
 | 
				
			||||||
    switch (*p2) {
 | 
					    {
 | 
				
			||||||
 | 
					        switch (*p2)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
        case '[':
 | 
					        case '[':
 | 
				
			||||||
            ++count;
 | 
					            ++count;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
| 
						 | 
					@ -63,13 +67,11 @@ template <class T> string_view get_name() {
 | 
				
			||||||
    return {};
 | 
					    return {};
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::string replace_all(std::string str, const std::string &from,
 | 
					std::string replace_all(std::string str, const std::string& from, const std::string& to) {
 | 
				
			||||||
                        const std::string &to) {
 | 
					 | 
				
			||||||
    size_t start_pos = 0;
 | 
					    size_t start_pos = 0;
 | 
				
			||||||
    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
 | 
					    while((start_pos = str.find(from, start_pos)) != std::string::npos) {
 | 
				
			||||||
        str.replace(start_pos, from.length(), to);
 | 
					        str.replace(start_pos, from.length(), to);
 | 
				
			||||||
    start_pos +=
 | 
					        start_pos += to.length(); // Handles case where 'to' is a substring of 'from'
 | 
				
			||||||
        to.length(); // Handles case where 'to' is a substring of 'from'
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return str;
 | 
					    return str;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -196,36 +198,16 @@ template <typename T> T &&identity(T &&t) { return std::forward<T>(t); }
 | 
				
			||||||
#define dbg(...) dbg_macro::identity(__VA_ARGS__)
 | 
					#define dbg(...) dbg_macro::identity(__VA_ARGS__)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__clang__)
 | 
					#define SOI_ARG16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, ...) _15
 | 
				
			||||||
 | 
					#define SOI_IS_NONEMPTY(...) SOI_ARG16(1, ##__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
 | 
				
			||||||
#define SOI_ARG16(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13,  \
 | 
					 | 
				
			||||||
                  _14, _15, ...)                                               \
 | 
					 | 
				
			||||||
  _15
 | 
					 | 
				
			||||||
#define SOI_IS_NONEMPTY(...)                                                   \
 | 
					 | 
				
			||||||
  SOI_ARG16(1, ##__VA_ARGS__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SOI_DBG_IMPL_0()                                \
 | 
					#define SOI_DBG_IMPL_0()                                \
 | 
				
			||||||
  soi::detail::dbg_print_status(__FILE__, __LINE__, __func__)
 | 
					  soi::detail::dbg_print_status(__FILE__, __LINE__, __func__)
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SOI_DBG_IMPL_1(...)                                             \
 | 
					#define SOI_DBG_IMPL_1(...)                                             \
 | 
				
			||||||
  soi::detail::dbg_print(                                                      \
 | 
					  soi::detail::dbg_print((__VA_ARGS__),                                 \
 | 
				
			||||||
      (__VA_ARGS__),                                                           \
 | 
					 | 
				
			||||||
                         soi::detail::sanitized_type_name<decltype(__VA_ARGS__)>(), __FILE__, \
 | 
					                         soi::detail::sanitized_type_name<decltype(__VA_ARGS__)>(), __FILE__, \
 | 
				
			||||||
                         __LINE__, __func__, #__VA_ARGS__)
 | 
					                         __LINE__, __func__, #__VA_ARGS__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SOI_IS_NONEMPTY(...) __VA_OPT__(HAS)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SOI_DBG_IMPL_()                                                        \
 | 
					 | 
				
			||||||
  soi::detail::dbg_print_status(__FILE__, __LINE__, __func__)
 | 
					 | 
				
			||||||
#define SOI_DBG_IMPL_HAS(...)                                                  \
 | 
					 | 
				
			||||||
  soi::detail::dbg_print(                                                      \
 | 
					 | 
				
			||||||
      (__VA_ARGS__),                                                           \
 | 
					 | 
				
			||||||
      soi::detail::sanitized_type_name<decltype(__VA_ARGS__)>(), __FILE__,     \
 | 
					 | 
				
			||||||
      __LINE__, __func__, #__VA_ARGS__)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SOI_CAT(a, ...) PRIMITIVE_CAT(a, __VA_ARGS__)
 | 
					#define SOI_CAT(a, ...) PRIMITIVE_CAT(a, __VA_ARGS__)
 | 
				
			||||||
#define SOI_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
 | 
					#define SOI_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
 | 
				
			||||||
| 
						 | 
					@ -233,7 +215,8 @@ template <typename T> T &&identity(T &&t) { return std::forward<T>(t); }
 | 
				
			||||||
#define SOI_DBG_IMPL(is_nonempty, ...)                          \
 | 
					#define SOI_DBG_IMPL(is_nonempty, ...)                          \
 | 
				
			||||||
  SOI_PRIMITIVE_CAT(SOI_DBG_IMPL_, is_nonempty)(__VA_ARGS__)
 | 
					  SOI_PRIMITIVE_CAT(SOI_DBG_IMPL_, is_nonempty)(__VA_ARGS__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define dbg(...) SOI_DBG_IMPL(SOI_IS_NONEMPTY(__VA_ARGS__), __VA_ARGS__)
 | 
					#define dbg(...)                                                       \
 | 
				
			||||||
 | 
					  SOI_DBG_IMPL(SOI_IS_NONEMPTY(__VA_ARGS__), __VA_ARGS__)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // SOI_DBG
 | 
					#endif // SOI_DBG
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue