Skip to content

Commit

Permalink
hotplace rev.548 Aho-Corasick
Browse files Browse the repository at this point in the history
  • Loading branch information
princeb612 committed Jul 5, 2024
1 parent ea7054b commit d78d41a
Show file tree
Hide file tree
Showing 20 changed files with 947 additions and 209 deletions.
18 changes: 17 additions & 1 deletion sdk/base/basic/variant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ variant::variant(float value) { set_float(value); }

variant::variant(double value) { set_double(value); }

variant::variant(const datetime_t &value) { set_datetime(value); }

variant::variant(const variant_t &rhs) : _vt(rhs) {}

variant::variant(variant_t &&rhs) : _vt(std::move(rhs)) {}
Expand All @@ -84,7 +86,7 @@ uint16 variant::flag() const { return _vt.flag; }
* @example
* vt.reset().set_bool(true);
*/
variant &variant::reset() {
variant &variant::clear() {
if (variant_flag_t::flag_free & _vt.flag) {
free(_vt.data.p);
}
Expand Down Expand Up @@ -248,6 +250,20 @@ variant &variant::set_fp64(double value) {

variant &variant::set_double(double value) { return set_fp64(value); }

variant &variant::set_datetime(const datetime_t &value) {
_vt.type = TYPE_DATETIME;
_vt.size = sizeof(datetime_t);
_vt.flag = flag_datetime;
datetime_t *p = (datetime_t *)malloc(sizeof(datetime_t));
if (p) {
memcpy(p, &value, sizeof(datetime_t));
_vt.flag |= variant_flag_t::flag_free;
}
_vt.data.dt = p;

return *this;
}

variant &variant::set_str(const char *value) {
_vt.type = TYPE_STRING;
_vt.data.str = (char *)value;
Expand Down
17 changes: 14 additions & 3 deletions sdk/base/basic/variant.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

#include <sdk/base/error.hpp>
#include <sdk/base/syntax.hpp>
#include <sdk/base/system/datetime.hpp>
#include <sdk/base/types.hpp>

namespace hotplace {
Expand Down Expand Up @@ -133,6 +134,7 @@ enum variant_flag_t {
flag_binary = 1 << 5, // binary
flag_pointer = 1 << 6, // pointer
flag_user_type = 1 << 7,
flag_datetime = 1 << 8, // datetime
};

struct variant_t {
Expand Down Expand Up @@ -166,6 +168,7 @@ struct variant_t {
void* p;
char* str;
byte_t* bstr;
datetime_t* dt;
} data;
uint16 size;
uint16 flag;
Expand All @@ -189,6 +192,10 @@ struct variant_t {
case TYPE_STRING:
data.str = strdup(rhs.data.str);
break;
case TYPE_DATETIME:
data.dt = (datetime_t*)malloc(sizeof(datetime_t));
memcpy(data.dt, rhs.data.dt, sizeof(datetime_t));
break;
default:
break;
}
Expand Down Expand Up @@ -256,6 +263,7 @@ class variant {
variant(uint128 value);
variant(float value);
variant(double value);
variant(const datetime_t& value);
variant(const variant_t& rhs);
variant(variant_t&& rhs);
variant(const variant& rhs);
Expand All @@ -268,11 +276,11 @@ class variant {
uint16 flag() const;

/**
* @brief reset
* @brief clear
* @example
* vt.reset().set_bool(true);
* vt.clear().set_bool(true);
*/
variant& reset();
variant& clear();

variant& set_flag(uint8 flag);
variant& unset_flag(uint8 flag);
Expand All @@ -298,6 +306,7 @@ class variant {
variant& set_float(float value);
variant& set_fp64(double value);
variant& set_double(double value);
variant& set_datetime(const datetime_t& value);
variant& set_str(const char* value);
variant& set_nstr(const char* value, size_t n);
variant& set_bstr(const unsigned char* value, size_t n);
Expand All @@ -319,6 +328,8 @@ class variant {

variant& operator=(const variant& source);
variant& operator=(variant&& source);
variant& operator=(const variant_t& source);
variant& operator=(variant_t&& source);

protected:
variant_t _vt;
Expand Down
Loading

0 comments on commit d78d41a

Please sign in to comment.