Auto merge of #4527 - dannywillems:librustzcash/c-header-compatibility, r=str4d
librustzcash: make the header C compatible The `librustzcash.h` file is compatible with both languages. However, only C++ is supported at the moment. By relying on the preprocessor to include or not the `extern "C"` piece, the interface becomes compatible with both.
This commit is contained in:
commit
8c778c9c0d
|
@ -3,7 +3,13 @@
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
const int ENTRY_SERIALIZED_LENGTH = 180;
|
#ifndef __cplusplus
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdalign.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ENTRY_SERIALIZED_LENGTH 180
|
||||||
|
|
||||||
typedef struct HistoryEntry {
|
typedef struct HistoryEntry {
|
||||||
unsigned char bytes[ENTRY_SERIALIZED_LENGTH];
|
unsigned char bytes[ENTRY_SERIALIZED_LENGTH];
|
||||||
} HistoryEntry;
|
} HistoryEntry;
|
||||||
|
@ -12,7 +18,9 @@ static_assert(
|
||||||
"HistoryEntry struct is not the same size as the underlying byte array");
|
"HistoryEntry struct is not the same size as the underlying byte array");
|
||||||
static_assert(alignof(HistoryEntry) == 1, "HistoryEntry struct alignment is not 1");
|
static_assert(alignof(HistoryEntry) == 1, "HistoryEntry struct alignment is not 1");
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
#endif
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
typedef uint16_t codeunit;
|
typedef uint16_t codeunit;
|
||||||
#else
|
#else
|
||||||
|
@ -343,6 +351,8 @@ extern "C" {
|
||||||
const unsigned char *n_ptr,
|
const unsigned char *n_ptr,
|
||||||
unsigned char *h_ret
|
unsigned char *h_ret
|
||||||
);
|
);
|
||||||
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // LIBRUSTZCASH_INCLUDE_H_
|
#endif // LIBRUSTZCASH_INCLUDE_H_
|
||||||
|
|
Loading…
Reference in New Issue