mirror of https://gitee.com/bigwinds/arangodb
Implement TRI_EXTRACT_SHAPED_JSON_MARKER as static inline.
Also consider WAL.
This commit is contained in:
parent
2cdcd24a59
commit
fdba62a957
|
@ -34,6 +34,7 @@
|
||||||
#include "VocBase/headers.h"
|
#include "VocBase/headers.h"
|
||||||
#include "VocBase/index.h"
|
#include "VocBase/index.h"
|
||||||
#include "VocBase/voc-types.h"
|
#include "VocBase/voc-types.h"
|
||||||
|
#include "Wal/Marker.h"
|
||||||
|
|
||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
|
|
||||||
|
@ -149,24 +150,34 @@ struct TRI_json_s;
|
||||||
/// @brief extracts the shaped JSON pointer from a marker
|
/// @brief extracts the shaped JSON pointer from a marker
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#define TRI_EXTRACT_SHAPED_JSON_MARKER(dst, src) \
|
static inline void TRI_EXTRACT_SHAPED_JSON_MARKER (TRI_shaped_json_t& dst,
|
||||||
do { \
|
void const* src) {
|
||||||
if (((TRI_df_marker_t const*) (src))->_type == TRI_DOC_MARKER_KEY_DOCUMENT) { \
|
if (((TRI_df_marker_t const*) (src))->_type == TRI_DOC_MARKER_KEY_DOCUMENT) {
|
||||||
(dst)._sid = ((TRI_doc_document_key_marker_t*) (src))->_shape; \
|
(dst)._sid = ((TRI_doc_document_key_marker_t*) (src))->_shape;
|
||||||
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((TRI_doc_document_key_marker_t*) (src))->_offsetJson; \
|
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((TRI_doc_document_key_marker_t*) (src))->_offsetJson;
|
||||||
(dst)._data.data = (((char*) (src)) + ((TRI_doc_document_key_marker_t*) (src))->_offsetJson); \
|
(dst)._data.data = (((char*) (src)) + ((TRI_doc_document_key_marker_t*) (src))->_offsetJson);
|
||||||
} \
|
}
|
||||||
else if (((TRI_df_marker_t const*) (src))->_type == TRI_DOC_MARKER_KEY_EDGE) { \
|
else if (((TRI_df_marker_t const*) (src))->_type == TRI_DOC_MARKER_KEY_EDGE) {
|
||||||
(dst)._sid = ((TRI_doc_document_key_marker_t*) (src))->_shape; \
|
(dst)._sid = ((TRI_doc_document_key_marker_t*) (src))->_shape;
|
||||||
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((TRI_doc_document_key_marker_t*) (src))->_offsetJson; \
|
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((TRI_doc_document_key_marker_t*) (src))->_offsetJson;
|
||||||
(dst)._data.data = (((char*) (src)) + ((TRI_doc_document_key_marker_t*) (src))->_offsetJson); \
|
(dst)._data.data = (((char*) (src)) + ((TRI_doc_document_key_marker_t*) (src))->_offsetJson);
|
||||||
} \
|
}
|
||||||
else { \
|
else if (((TRI_df_marker_t const*) (src))->_type == TRI_WAL_MARKER_DOCUMENT) {
|
||||||
(dst)._sid = 0; \
|
(dst)._sid = ((triagens::wal::document_marker_t*) (src))->_shape;
|
||||||
(dst)._data.length = 0; \
|
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((triagens::wal::document_marker_t*) (src))->_offsetJson;
|
||||||
(dst)._data.data = NULL; \
|
(dst)._data.data = (((char*) (src)) + ((triagens::wal::document_marker_t*) (src))->_offsetJson);
|
||||||
} \
|
}
|
||||||
} while (0)
|
else if (((TRI_df_marker_t const*) (src))->_type == TRI_WAL_MARKER_EDGE) {
|
||||||
|
(dst)._sid = ((triagens::wal::edge_marker_t*) (src))->base._shape;
|
||||||
|
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((triagens::wal::edge_marker_t*) (src))->base._offsetJson;
|
||||||
|
(dst)._data.data = (((char*) (src)) + ((triagens::wal::edge_marker_t*) (src))->base._offsetJson);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
(dst)._sid = 0;
|
||||||
|
(dst)._data.length = 0;
|
||||||
|
(dst)._data.data = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @}
|
/// @}
|
||||||
|
|
Loading…
Reference in New Issue