@@ -32,7 +32,7 @@ namespace hyperparameter
3232 {
3333 return finalize ((len >= 32 ? h32bytes (p, len, seed) : seed + PRIME5) + len, p + (len & ~0x1F ), len & 0x1F );
3434 }
35-
35+
3636 private:
3737 static constexpr uint64_t PRIME1 = 11400714785074694791ULL ;
3838 static constexpr uint64_t PRIME2 = 14029467366897019727ULL ;
@@ -98,114 +98,116 @@ namespace hyperparameter
9898 Hyperparameter () : _storage(hyper_create_storage()) {}
9999 ~Hyperparameter () { hyper_destory_storage (_storage); }
100100
101- void enter () { storage_enter (_storage); }
102- void exit () { storage_exit (_storage); }
101+ inline void enter () { storage_enter (_storage); }
102+ inline void exit () { storage_exit (_storage); }
103103
104104 template <typename T>
105- T get (uint64_t key, T def);
105+ inline T get (uint64_t key, T def);
106106
107107 template <typename T>
108- T get (const std::string &key, T def) { return get (key.c_str (), key.size (), def); }
108+ inline T get (const std::string &key, T def) { return get (key.c_str (), key.size (), def); }
109109
110110 template <typename T>
111- T get (const char *key, int keylen, T def) { return get (xxhash (key, keylen), def); }
111+ inline T get (const char *key, int keylen, T def) { return get (xxhash (key, keylen), def); }
112112
113113 template <typename T>
114- void put (const std::string &key, T val) { put (key.c_str (), val); }
114+ inline void put (const std::string &key, T val) { put (key.c_str (), val); }
115115
116116 template <typename T>
117- void put (const char *key, T val);
117+ inline void put (const char *key, T val);
118118 };
119119
120- Hyperparameter *create () { return new Hyperparameter (); }
121- std::shared_ptr<Hyperparameter> create_shared () { return std::make_shared<Hyperparameter>(); }
120+ inline Hyperparameter *create () { return new Hyperparameter (); }
121+ inline std::shared_ptr<Hyperparameter> create_shared () { return std::make_shared<Hyperparameter>(); }
122122
123123 template <>
124- int64_t Hyperparameter::get<int64_t >(uint64_t key, int64_t def)
124+ inline int64_t Hyperparameter::get<int64_t >(uint64_t key, int64_t def)
125125 {
126126 return storage_hget_or_i64 (_storage, key, def);
127127 }
128128
129129 template <>
130- int32_t Hyperparameter::get<int32_t >(uint64_t key, int32_t def)
130+ inline int32_t Hyperparameter::get<int32_t >(uint64_t key, int32_t def)
131131 {
132132 return storage_hget_or_i64 (_storage, key, def);
133133 }
134134
135135 template <>
136- double Hyperparameter::get<double >(uint64_t key, double def)
136+ inline double Hyperparameter::get<double >(uint64_t key, double def)
137137 {
138138 return storage_hget_or_f64 (_storage, key, def);
139139 }
140140
141141 template <>
142- bool Hyperparameter::get<bool >(uint64_t key, bool def)
142+ inline bool Hyperparameter::get<bool >(uint64_t key, bool def)
143143 {
144144 return storage_hget_or_bool (_storage, key, def);
145145 }
146146
147147 template <>
148- std::string Hyperparameter::get<std::string>(uint64_t key, std::string def)
148+ inline std::string Hyperparameter::get<std::string>(uint64_t key, std::string def)
149149 {
150150 return std::string (storage_hget_or_str (_storage, key, def.c_str ()));
151151 }
152152
153153 template <>
154- const char *Hyperparameter::get<const char *>(uint64_t key, const char *def)
154+ inline const char *Hyperparameter::get<const char *>(uint64_t key, const char *def)
155155 {
156156 return storage_hget_or_str (_storage, key, def);
157157 }
158158
159159 template <>
160- void Hyperparameter::put<int64_t >(const char *key, int64_t val)
160+ inline void Hyperparameter::put<int64_t >(const char *key, int64_t val)
161161 {
162162 return storage_put_i64 (_storage, key, val);
163163 }
164164
165165 template <>
166- void Hyperparameter::put<int32_t >(const char *key, int32_t val)
166+ inline void Hyperparameter::put<int32_t >(const char *key, int32_t val)
167167 {
168168 return storage_put_i64 (_storage, key, val);
169169 }
170170
171171 template <>
172- void Hyperparameter::put<double >(const char *key, double val)
172+ inline void Hyperparameter::put<double >(const char *key, double val)
173173 {
174174 return storage_put_f64 (_storage, key, val);
175175 }
176176
177177 template <>
178- void Hyperparameter::put<bool >(const char *key, bool val)
178+ inline void Hyperparameter::put<bool >(const char *key, bool val)
179179 {
180180 return storage_put_bool (_storage, key, val);
181181 }
182182
183183 template <>
184- void Hyperparameter::put<const std::string &>(const char *key, const std::string &val)
184+ inline void Hyperparameter::put<const std::string &>(const char *key, const std::string &val)
185185 {
186186 return storage_put_str (_storage, key, val.c_str ());
187187 }
188188
189189 template <>
190- void Hyperparameter::put<const char *>(const char *key, const char *val)
190+ inline void Hyperparameter::put<const char *>(const char *key, const char *val)
191191 {
192192 return storage_put_str (_storage, key, val);
193193 }
194194
195- std::shared_ptr<hyperparameter::Hyperparameter> get_hp () {
196- static std::shared_ptr<Hyperparameter> hp;
197- if (!hp) {
198- hp = hyperparameter::create_shared ();
199- }
200- return hp;
195+ inline std::shared_ptr<hyperparameter::Hyperparameter> get_hp ()
196+ {
197+ static std::shared_ptr<Hyperparameter> hp;
198+ if (!hp)
199+ {
200+ hp = hyperparameter::create_shared ();
201+ }
202+ return hp;
201203 }
202204}
203205
204- #define GETHP hyperparameter::get_hp ()
206+ #define GETHP hyperparameter::get_hp ()
205207
206208// Implicit create hyperparameter object
207- #define GETPARAM (p, default_val ) \
208- (GETHP->get (([](){ constexpr uint64_t x = hyperparameter::xxhash (#p,sizeof (#p)-1 ); return x;})(), default_val))
209+ #define GETPARAM (p, default_val ) \
210+ (GETHP->get (([]() { constexpr uint64_t x = hyperparameter::xxhash (#p,sizeof (#p)-1 ); return x; })(), default_val))
209211#define PUTPARAM (p, default_val ) (GETHP->put (#p, default_val))
210212
211213#endif
0 commit comments