diff --git a/src/include/recset.cpp b/src/include/recset.cpp index 0ccc0d68a..5566ec5c2 100755 --- a/src/include/recset.cpp +++ b/src/include/recset.cpp @@ -494,6 +494,7 @@ int TRecordset::find_column(const char* column_name) const return i; } +/* TVariant& TRecordset::get_tmp_var() const { static TArray _page; // Variants to be returned by get @@ -510,6 +511,7 @@ TVariant& TRecordset::get_tmp_var() const _next_var++; return *var; } +*/ const TVariant& TRecordset::get(const char* column_name) const { diff --git a/src/include/recset.h b/src/include/recset.h index 05ea83e69..0cd475ccf 100755 --- a/src/include/recset.h +++ b/src/include/recset.h @@ -75,7 +75,7 @@ protected: void find_and_reset_vars(); void parsed_text(TString& sql) const; - TVariant& get_tmp_var() const; + //TVariant& get_tmp_var() const; bool export_dbf(int logicnum); public: // Absolutely needed methods diff --git a/src/include/variant.cpp b/src/include/variant.cpp index 31f093c79..23f7d0c9a 100755 --- a/src/include/variant.cpp +++ b/src/include/variant.cpp @@ -396,3 +396,27 @@ bool TVariant_stack::overflow() const { return _sp > 2048; } + + +// Temporary variant generator: a little step for a man, a variant step for campo! + +TVariant& get_tmp_var() +{ + static TArray ararar(1024); + static int next = 0; + + TVariant* var = dynamic_cast(ararar.objptr(next)); + if (var == nullptr) + { + var = new TVariant(NULL_VARIANT); + ararar.add(var, next); + } + else + { + var->set_null(); + } + + if (++next >= ararar.size()) + next = 0; + return *var; +} diff --git a/src/include/variant.h b/src/include/variant.h index 470ef50c8..91c9ac12b 100755 --- a/src/include/variant.h +++ b/src/include/variant.h @@ -113,6 +113,8 @@ public: TVariant_stack() : _sp(0) { } }; +TVariant& get_tmp_var(); + #endif