39 #define MAX_SMALL_STRING_SIZE 255 40 #define LARGE_STRING_CODE 0xff 45 static void check_range (
const char *ptr,
const char *endptr,
const size_t amount);
50 check_range (
const char *ptr,
const char *endptr,
const size_t amount)
52 assert (ptr + amount <= endptr);
53 if (ptr + amount > endptr)
175 unpack_int (int_val);
176 assert (int_val == 1 || int_val == 0);
177 value = int_val != 0;
227 unpack_short (value);
303 unpack_bigint (value);
309 unpack_bigint (value);
359 const size_t count = array.size ();
398 size_t aligned_size = unaligned_size;
399 return aligned_size + aligned_offset - curr_offset;
449 unpack_db_value (value);
489 std::memcpy (
m_ptr,
string, len);
515 std::memcpy (
string,
m_ptr, len);
558 std::memcpy (
m_ptr,
string, len);
585 str = std::string (
m_ptr, len);
601 size_t len = str.size ();
630 unpack_large_string (str);
636 str = std::string (
m_ptr, len);
646 return unpack_string (str);
713 unpack_string_size (len);
715 if (len >= max_str_size)
722 std::memcpy (str,
m_ptr, len);
735 unpack_string_size (len);
811 return unpack_oid (oid);
853 size_t actual_length = 0;
857 actual_length = length;
877 std::memcpy (
m_ptr, stream, length);
886 return peek_unpack_int (value);
899 size_t actual_len, copy_length;
906 assert (actual_len <= max_length);
907 copy_length =
std::min (actual_len, max_length);
913 memcpy (stream,
m_ptr, copy_length);
size_t get_packed_string_size(const std::string &str, const size_t curr_offset)
virtual size_t get_packed_size(packer &serializator, std::size_t start_offset=0) const =0
#define LARGE_STRING_CODE
#define OR_PUT_OID(ptr, oid)
size_t get_packed_oid_size(const size_t curr_offset)
void peek_unpack_int(int &value)
void set_buffer(const char *storage, const size_t amount)
const char * get_buffer_start(void)
static void check_range(const char *ptr, const char *endptr, const size_t amount)
void pack_int(const int value)
void unpack_bigint(std::int64_t &value)
int or_packed_value_size(const DB_VALUE *value, int collapse_null, int include_domain, int include_domain_classoids)
void pack_int_array(const int *array, const int count)
void pack_large_c_string(const char *string, const size_t str_size)
void pack_small_string(const char *string, const size_t str_size=0)
void align(const size_t req_alignment)
void pack_overloaded(int value)
#define OR_BUF_INIT(buf, data, size)
void pack_buffer_with_length(const char *stream, const std::size_t length)
char * or_pack_value(char *buf, DB_VALUE *value)
void pack_short(const short value)
void unpack_db_value(db_value &value)
void unpack_small_string(char *string, const size_t max_size)
size_t get_packed_size_overloaded(int value, size_t curr_offset)
#define PTR_ALIGN(addr, boundary)
size_t get_packed_c_string_size(const char *str, const size_t str_size, const size_t curr_offset)
virtual void pack(packer &serializator) const =0
void unpack_string_to_memblock(cubmem::extensible_block &blk)
const char * get_buffer_end(void)
size_t get_packed_int_size(size_t curr_offset)
void unpack_string(std::string &str)
size_t get_current_size(void)
std::size_t get_packed_buffer_size(const char *stream, const std::size_t length, const std::size_t curr_offset) const
void delegate_to_or_buf(const size_t size, or_buf &buf)
#define OR_GET_OID(ptr, oid)
void pack_large_string(const std::string &str)
#define MAX_SMALL_STRING_SIZE
size_t get_packed_bool_size(size_t curr_offset)
void pack_db_value(const db_value &value)
void unpack_c_string(char *str, const size_t max_str_size)
void unpack_bool(bool &value)
void unpack_short(short &value)
#define OR_PUT_SHORT(ptr, val)
#define OR_GET_INT64(ptr, val)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
void pack_bool(bool value)
virtual void unpack(unpacker &deserializator)=0
size_t get_packed_db_value_size(const db_value &value, size_t curr_offset)
size_t get_packed_short_size(size_t curr_offset)
void peek_unpack_buffer_length(int &value)
void pack_c_string(const char *str, const size_t str_size)
void unpack_overloaded(int &value)
const char * get_buffer_start(void)
void pack_oid(const OID &oid)
void set_buffer(char *storage, const size_t amount)
void unpack_string_size(size_t &len)
void unpack_int(int &value)
#define DB_ALIGN(offset, align)
#define OR_PUT_INT64(ptr, val)
void pack_bigint(const std::int64_t &value)
#define OR_PUT_INT(ptr, val)
char * or_unpack_value(const char *buf, DB_VALUE *value)
void pack_string(const std::string &str)
const char * get_buffer_end(void)
size_t get_packed_small_string_size(const char *string, const size_t curr_offset)
void unpack_oid(OID &oid)
size_t get_packed_large_string_size(const std::string &str, const size_t curr_offset)
size_t get_packed_int_vector_size(size_t curr_offset, const size_t count)
void extend_to(size_t total_bytes)
void unpack_large_string(std::string &str)
void unpack_buffer_with_length(char *stream, const std::size_t max_length)
const char * get_curr_ptr(void)
void unpack_int_array(int *array, int &count)
const char * get_curr_ptr(void)
void unpack_int_vector(std::vector< int > &array)
void delegate_to_or_buf(const size_t size, or_buf &buf)
size_t get_packed_bigint_size(size_t curr_offset)
size_t get_current_size(void)
#define OR_GET_SHORT(ptr)
#define OR_PUT_BYTE(ptr, val)
void pack_int_vector(const std::vector< int > &array)
void align(const size_t req_alignment)