X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libhashkit%2Fhashkit.h;h=2d8ad3a2d38aafdaa66737a29921227b96deedc7;hb=f40a312c617295543fb09864a8be80cc027cac79;hp=fe6c148d97f1a1ef4e1909922f605d9646f86503;hpb=dac48f2dbe34915755f8f4f7f88419f47dc9e27f;p=m6w6%2Flibmemcached diff --git a/libhashkit/hashkit.h b/libhashkit/hashkit.h index fe6c148d..2d8ad3a2 100644 --- a/libhashkit/hashkit.h +++ b/libhashkit/hashkit.h @@ -16,17 +16,16 @@ #include #include #include +#include #include #include #include #include #include +#include #include #ifdef __cplusplus - -#include - extern "C" { #endif @@ -45,6 +44,10 @@ void hashkit_free(hashkit_st *hash); #define hashkit_is_allocated(__object) ((__object)->options.is_allocated) #define hashkit_is_initialized(__object) ((__object)->options.is_initialized) +#ifdef __cplusplus +} // extern "C" +#endif + struct hashkit_st { struct hashkit_function_st { @@ -59,68 +62,67 @@ struct hashkit_st struct { bool is_allocated:1; } options; +}; #ifdef __cplusplus - hashkit_st() : - base_hash(), - distribution_hash(), - flags(), - options() +#include + +class Hashkit { + +public: + + Hashkit() { - hashkit_create(this); + hashkit_create(&self); } - hashkit_st(const hashkit_st& source) : - base_hash(), - distribution_hash(), - flags(), - options() + Hashkit(const Hashkit& source) { - hashkit_clone(this, &source); + hashkit_clone(&self, &source.self); } - hashkit_st& operator=(const hashkit_st& source) - { - hashkit_clone(this, &source); + Hashkit& operator=(const Hashkit& source) + { + hashkit_free(&self); + hashkit_clone(&self, &source.self); return *this; } - friend bool operator==(const hashkit_st &left, const hashkit_st &right) + friend bool operator==(const Hashkit &left, const Hashkit &right) { - return hashkit_compare(&left, &right); + return hashkit_compare(&left.self, &right.self); } uint32_t digest(std::string& str) { - return hashkit_digest(this, str.c_str(), str.length()); + return hashkit_digest(&self, str.c_str(), str.length()); } uint32_t digest(const char *key, size_t key_length) { - return hashkit_digest(this, key, key_length); + return hashkit_digest(&self, key, key_length); } hashkit_return_t set_function(hashkit_hash_algorithm_t hash_algorithm) { - return hashkit_set_function(this, hash_algorithm); + return hashkit_set_function(&self, hash_algorithm); } hashkit_return_t set_distribution_function(hashkit_hash_algorithm_t hash_algorithm) { - return hashkit_set_function(this, hash_algorithm); + return hashkit_set_function(&self, hash_algorithm); } - ~hashkit_st() + ~Hashkit() { - hashkit_free(this); + hashkit_free(&self); } -#endif -}; +private: -#ifdef __cplusplus -} // extern "C" + hashkit_st self; +}; #endif