Patch level : 12.0 no-patch

Files correlati     : include
Commento            : Tolta funzione get_tmp_var() da TRecordset e messa in TVariant, inoltre aggiornata l'implementazione come quella di get_tmp_string (creato array da 1024 celle, messo un controllo diverso per tornare alla prima posizione)
This commit is contained in:
Mattia Tollari 2019-06-12 17:26:14 +02:00
parent dd33d88b34
commit 751102232e
4 changed files with 29 additions and 1 deletions

View File

@ -494,6 +494,7 @@ int TRecordset::find_column(const char* column_name) const
return i; return i;
} }
/*
TVariant& TRecordset::get_tmp_var() const TVariant& TRecordset::get_tmp_var() const
{ {
static TArray _page; // Variants to be returned by get static TArray _page; // Variants to be returned by get
@ -510,6 +511,7 @@ TVariant& TRecordset::get_tmp_var() const
_next_var++; _next_var++;
return *var; return *var;
} }
*/
const TVariant& TRecordset::get(const char* column_name) const const TVariant& TRecordset::get(const char* column_name) const
{ {

View File

@ -75,7 +75,7 @@ protected:
void find_and_reset_vars(); void find_and_reset_vars();
void parsed_text(TString& sql) const; void parsed_text(TString& sql) const;
TVariant& get_tmp_var() const; //TVariant& get_tmp_var() const;
bool export_dbf(int logicnum); bool export_dbf(int logicnum);
public: // Absolutely needed methods public: // Absolutely needed methods

View File

@ -396,3 +396,27 @@ bool TVariant_stack::overflow() const
{ {
return _sp > 2048; 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<TVariant*>(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;
}

View File

@ -113,6 +113,8 @@ public:
TVariant_stack() : _sp(0) { } TVariant_stack() : _sp(0) { }
}; };
TVariant& get_tmp_var();
#endif #endif