make headers C++ safe
This commit is contained in:
parent
05685ed792
commit
90c6c37628
52
.vscode/settings.json
vendored
52
.vscode/settings.json
vendored
@ -1,6 +1,56 @@
|
|||||||
{
|
{
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"zmalloc.h": "c",
|
"zmalloc.h": "c",
|
||||||
"stat.h": "c"
|
"stat.h": "c",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"future": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"scoped_allocator": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"utility": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -31,6 +31,10 @@
|
|||||||
#ifndef __ADLIST_H__
|
#ifndef __ADLIST_H__
|
||||||
#define __ADLIST_H__
|
#define __ADLIST_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Node, List, and Iterator are the only data structures used currently. */
|
/* Node, List, and Iterator are the only data structures used currently. */
|
||||||
|
|
||||||
typedef struct listNode {
|
typedef struct listNode {
|
||||||
@ -92,4 +96,8 @@ void listJoin(list *l, list *o);
|
|||||||
#define AL_START_HEAD 0
|
#define AL_START_HEAD 0
|
||||||
#define AL_START_TAIL 1
|
#define AL_START_TAIL 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ADLIST_H__ */
|
#endif /* __ADLIST_H__ */
|
||||||
|
23
src/ae.cpp
23
src/ae.cpp
@ -73,6 +73,7 @@ thread_local aeEventLoop *g_eventLoopThisThread = NULL;
|
|||||||
enum class AE_ASYNC_OP
|
enum class AE_ASYNC_OP
|
||||||
{
|
{
|
||||||
PostFunction,
|
PostFunction,
|
||||||
|
PostCppFunction,
|
||||||
DeleteFileEvent,
|
DeleteFileEvent,
|
||||||
};
|
};
|
||||||
typedef struct aeCommand
|
typedef struct aeCommand
|
||||||
@ -80,7 +81,10 @@ typedef struct aeCommand
|
|||||||
AE_ASYNC_OP op;
|
AE_ASYNC_OP op;
|
||||||
int fd;
|
int fd;
|
||||||
int mask;
|
int mask;
|
||||||
aePostFunctionProc *proc;
|
union {
|
||||||
|
aePostFunctionProc *proc;
|
||||||
|
std::function<void()> *pfn;
|
||||||
|
};
|
||||||
void *clientData;
|
void *clientData;
|
||||||
} aeCommand;
|
} aeCommand;
|
||||||
|
|
||||||
@ -108,6 +112,13 @@ void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int )
|
|||||||
((aePostFunctionProc*)cmd.proc)(cmd.clientData);
|
((aePostFunctionProc*)cmd.proc)(cmd.clientData);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case AE_ASYNC_OP::PostCppFunction:
|
||||||
|
{
|
||||||
|
std::unique_lock<decltype(g_lock)> ulock(g_lock);
|
||||||
|
(*cmd.pfn)();
|
||||||
|
delete cmd.pfn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -123,6 +134,16 @@ int aePostFunction(aeEventLoop *eventLoop, aePostFunctionProc *proc, void *arg)
|
|||||||
return AE_OK;
|
return AE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int aePostFunction(aeEventLoop *eventLoop, std::function<void()> fn)
|
||||||
|
{
|
||||||
|
aeCommand cmd;
|
||||||
|
cmd.op = AE_ASYNC_OP::PostCppFunction;
|
||||||
|
cmd.pfn = new std::function<void()>(fn);
|
||||||
|
auto size = write(eventLoop->fdCmdWrite, &cmd, sizeof(cmd));
|
||||||
|
AE_ASSERT(size == sizeof(cmd));
|
||||||
|
return AE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
aeEventLoop *aeCreateEventLoop(int setsize) {
|
aeEventLoop *aeCreateEventLoop(int setsize) {
|
||||||
aeEventLoop *eventLoop;
|
aeEventLoop *eventLoop;
|
||||||
int i;
|
int i;
|
||||||
|
8
src/ae.h
8
src/ae.h
@ -33,6 +33,9 @@
|
|||||||
#ifndef __AE_H__
|
#ifndef __AE_H__
|
||||||
#define __AE_H__
|
#define __AE_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#include <functional>
|
||||||
|
#endif
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "fastlock.h"
|
#include "fastlock.h"
|
||||||
|
|
||||||
@ -126,6 +129,11 @@ typedef struct aeEventLoop {
|
|||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
aeEventLoop *aeCreateEventLoop(int setsize);
|
aeEventLoop *aeCreateEventLoop(int setsize);
|
||||||
int aePostFunction(aeEventLoop *eventLoop, aePostFunctionProc *proc, void *arg);
|
int aePostFunction(aeEventLoop *eventLoop, aePostFunctionProc *proc, void *arg);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} // EXTERN C
|
||||||
|
int aePostFunction(aeEventLoop *eventLoop, std::function<void()> fn);
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
void aeDeleteEventLoop(aeEventLoop *eventLoop);
|
void aeDeleteEventLoop(aeEventLoop *eventLoop);
|
||||||
void aeStop(aeEventLoop *eventLoop);
|
void aeStop(aeEventLoop *eventLoop);
|
||||||
int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask,
|
int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask,
|
||||||
|
@ -33,6 +33,10 @@
|
|||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ANET_OK 0
|
#define ANET_OK 0
|
||||||
#define ANET_ERR -1
|
#define ANET_ERR -1
|
||||||
#define ANET_ERR_LEN 256
|
#define ANET_ERR_LEN 256
|
||||||
@ -77,4 +81,8 @@ int anetFormatAddr(char *fmt, size_t fmt_len, char *ip, int port);
|
|||||||
int anetFormatPeer(int fd, char *fmt, size_t fmt_len);
|
int anetFormatPeer(int fd, char *fmt, size_t fmt_len);
|
||||||
int anetFormatSock(int fd, char *fmt, size_t fmt_len);
|
int anetFormatSock(int fd, char *fmt, size_t fmt_len);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3,10 +3,18 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
uint64_t crc64(uint64_t crc, const unsigned char *s, uint64_t l);
|
uint64_t crc64(uint64_t crc, const unsigned char *s, uint64_t l);
|
||||||
|
|
||||||
#ifdef REDIS_TEST
|
#ifdef REDIS_TEST
|
||||||
int crc64Test(int argc, char *argv[]);
|
int crc64Test(int argc, char *argv[]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -35,6 +35,10 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __DICT_H
|
#ifndef __DICT_H
|
||||||
#define __DICT_H
|
#define __DICT_H
|
||||||
|
|
||||||
@ -186,4 +190,8 @@ extern dictType dictTypeHeapStringCopyKey;
|
|||||||
extern dictType dictTypeHeapStrings;
|
extern dictType dictTypeHeapStrings;
|
||||||
extern dictType dictTypeHeapStringCopyKeyValue;
|
extern dictType dictTypeHeapStringCopyKeyValue;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __DICT_H */
|
#endif /* __DICT_H */
|
||||||
|
@ -36,6 +36,10 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
void memrev16(void *p);
|
void memrev16(void *p);
|
||||||
void memrev32(void *p);
|
void memrev32(void *p);
|
||||||
void memrev64(void *p);
|
void memrev64(void *p);
|
||||||
@ -75,4 +79,8 @@ uint64_t intrev64(uint64_t v);
|
|||||||
int endianconvTest(int argc, char *argv[]);
|
int endianconvTest(int argc, char *argv[]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,11 +27,8 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include "atomicvar.h"
|
#include "atomicvar.h"
|
||||||
}
|
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -33,6 +33,10 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Representation of a radix tree as implemented in this file, that contains
|
/* Representation of a radix tree as implemented in this file, that contains
|
||||||
* the strings "foo", "foobar" and "footer" after the insertion of each
|
* the strings "foo", "foobar" and "footer" after the insertion of each
|
||||||
* word. When the node represents a key inside the radix tree, we write it
|
* word. When the node represents a key inside the radix tree, we write it
|
||||||
@ -215,4 +219,8 @@ void raxSetDebugMsg(int onoff);
|
|||||||
* in a low level way, so this function is exported as well. */
|
* in a low level way, so this function is exported as well. */
|
||||||
void raxSetData(raxNode *n, void *data);
|
void raxSetData(raxNode *n, void *data);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#include "rio.h"
|
#include "rio.h"
|
||||||
#include "server.h"
|
|
||||||
}
|
}
|
||||||
|
#include "server.h"
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
|
||||||
|
@ -40,6 +40,10 @@ extern const char *SDS_NOINIT;
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef char *sds;
|
typedef char *sds;
|
||||||
|
|
||||||
/* Note: sdshdr5 is never used, we just access the flags byte directly.
|
/* Note: sdshdr5 is never used, we just access the flags byte directly.
|
||||||
@ -288,4 +292,8 @@ void sds_free(void *ptr);
|
|||||||
int sdsTest(int argc, char *argv[]);
|
int sdsTest(int argc, char *argv[]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -74,6 +74,10 @@ typedef long long mstime_t; /* millisecond time type. */
|
|||||||
#include "endianconv.h"
|
#include "endianconv.h"
|
||||||
#include "crc64.h"
|
#include "crc64.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Error codes */
|
/* Error codes */
|
||||||
#define C_OK 0
|
#define C_OK 0
|
||||||
#define C_ERR -1
|
#define C_ERR -1
|
||||||
@ -2307,4 +2311,8 @@ inline int ielFromEventLoop(const aeEventLoop *eventLoop)
|
|||||||
#define redisDebugMark() \
|
#define redisDebugMark() \
|
||||||
printf("-- MARK %s:%d --\n", __FILE__, __LINE__)
|
printf("-- MARK %s:%d --\n", __FILE__, __LINE__)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -33,6 +33,10 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "sds.h"
|
#include "sds.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The maximum number of characters needed to represent a long double
|
/* The maximum number of characters needed to represent a long double
|
||||||
* as a string (long double has a huge range).
|
* as a string (long double has a huge range).
|
||||||
* This should be the size of the buffer given to ld2string */
|
* This should be the size of the buffer given to ld2string */
|
||||||
@ -58,4 +62,8 @@ int pathIsBaseName(char *path);
|
|||||||
int utilTest(int argc, char **argv);
|
int utilTest(int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -86,6 +86,10 @@
|
|||||||
#define HAVE_DEFRAG
|
#define HAVE_DEFRAG
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
void *zmalloc(size_t size, enum MALLOC_CLASS mclass);
|
void *zmalloc(size_t size, enum MALLOC_CLASS mclass);
|
||||||
void *zcalloc(size_t size, enum MALLOC_CLASS mclass);
|
void *zcalloc(size_t size, enum MALLOC_CLASS mclass);
|
||||||
void *zrealloc(void *ptr, size_t size, enum MALLOC_CLASS mclass);
|
void *zrealloc(void *ptr, size_t size, enum MALLOC_CLASS mclass);
|
||||||
@ -116,4 +120,8 @@ size_t zmalloc_usable(void *ptr);
|
|||||||
int zmalloc_test(int argc, char **argv);
|
int zmalloc_test(int argc, char **argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ZMALLOC_H */
|
#endif /* __ZMALLOC_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user