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;
}
/*
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
{

View File

@ -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

View File

@ -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<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& get_tmp_var();
#endif