Skip to content

Commit 040fe9c

Browse files
authored
Merge pull request #76 from zauguin/allocators
std::vector allocator support
2 parents cf01458 + 7c9b8ca commit 040fe9c

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

hdr/sqlite_modern_cpp.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,8 @@ namespace sqlite {
207207
|| std::is_same<std::u16string, Type>::value
208208
|| std::is_same<sqlite_int64, Type>::value
209209
> { };
210-
template <typename Type>
211-
struct is_sqlite_value< std::vector<Type> > : public std::integral_constant<
210+
template <typename Type, typename Allocator>
211+
struct is_sqlite_value< std::vector<Type, Allocator> > : public std::integral_constant<
212212
bool,
213213
std::is_floating_point<Type>::value
214214
|| std::is_integral<Type>::value
@@ -218,9 +218,9 @@ namespace sqlite {
218218

219219
template<typename T> friend database_binder& operator <<(database_binder& db, const T& val);
220220
template<typename T> friend void get_col_from_db(database_binder& db, int inx, T& val);
221-
/* for vector<T> support */
222-
template<typename T> friend database_binder& operator <<(database_binder& db, const std::vector<T>& val);
223-
template<typename T> friend void get_col_from_db(database_binder& db, int inx, std::vector<T>& val);
221+
/* for vector<T, A> support */
222+
template<typename T, typename A> friend database_binder& operator <<(database_binder& db, const std::vector<T, A>& val);
223+
template<typename T, typename A> friend void get_col_from_db(database_binder& db, int inx, std::vector<T, A>& val);
224224
/* for nullptr & unique_ptr support */
225225
friend database_binder& operator <<(database_binder& db, std::nullptr_t);
226226
template<typename T> friend database_binder& operator <<(database_binder& db, const std::unique_ptr<T>& val);
@@ -461,8 +461,8 @@ namespace sqlite {
461461
}
462462
}
463463

464-
// vector<T>
465-
template<typename T> inline database_binder& operator<<(database_binder& db, const std::vector<T>& vec) {
464+
// vector<T, A>
465+
template<typename T, typename A> inline database_binder& operator<<(database_binder& db, const std::vector<T, A>& vec) {
466466
void const* buf = reinterpret_cast<void const *>(vec.data());
467467
int bytes = vec.size() * sizeof(T);
468468
int hresult;
@@ -472,13 +472,13 @@ namespace sqlite {
472472
++db._inx;
473473
return db;
474474
}
475-
template<typename T> inline void get_col_from_db(database_binder& db, int inx, std::vector<T>& vec) {
475+
template<typename T, typename A> inline void get_col_from_db(database_binder& db, int inx, std::vector<T, A>& vec) {
476476
if(sqlite3_column_type(db._stmt.get(), inx) == SQLITE_NULL) {
477477
vec.clear();
478478
} else {
479479
int bytes = sqlite3_column_bytes(db._stmt.get(), inx);
480480
T const* buf = reinterpret_cast<T const *>(sqlite3_column_blob(db._stmt.get(), inx));
481-
vec = std::vector<T>(buf, buf + bytes/sizeof(T));
481+
vec = std::vector<T, A>(buf, buf + bytes/sizeof(T));
482482
}
483483
}
484484

0 commit comments

Comments
 (0)