-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbase.h
85 lines (68 loc) · 2.08 KB
/
base.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/* Copyright 2024 The Kingsoft's modern-string Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
#pragma once
#include <cstddef>
#include <cstdint>
#include <type_traits>
#include "ks_type_traits.h"
using uint = unsigned int;
using char8_t = unsigned char; //needed until c++20
using WCHAR = std::conditional<sizeof(wchar_t) == 2, wchar_t, unsigned short>::type;
// #ifndef __X
// # define __X(str) ((const WCHAR*)(u##str))
// #endif
// #ifndef __Xc
// # define __Xc(ch) ((WCHAR)(u##ch))
// #endif
#ifndef _DEBUG
# if !defined(NDEBUG)
# define _DEBUG
# endif
#endif
#ifndef ASSERT
# ifdef _DEBUG
# if defined(_MSC_VER)
# include <crtdbg.h>
# define ASSERT _ASSERT
# else
# include <assert.h>
# define ASSERT assert
# endif
# else
# define ASSERT(x) ((void)(0))
# endif
#endif
#ifndef _DECL_EXPORT
# if defined(_MSC_VER)
# define _DECL_EXPORT __declspec(dllexport)
# elif defined(__GNUC__)
# define _DECL_EXPORT __attribute__((visibility("default")))
# else
# error how to decl-export?
# endif
#endif
#ifndef _DECL_IMPORT
# if defined(_MSC_VER)
# define _DECL_IMPORT __declspec(dllimport)
# elif defined(__GNUC__)
# define _DECL_IMPORT __attribute__((visibility("default")))
# else
# error how to decl-import?
# endif
#endif
//MODERN_STRING_API定义
//#ifdef MODERN_STRING_EXPORTS
//# define MODERN_STRING_API _DECL_EXPORT
//#else
//# define MODERN_STRING_API _DECL_IMPORT
//#endif
#define MODERN_STRING_API