Popis

Trieda, ktorá reprezentuje variantný typ používaný pre parametre externých funkcií. Variantný typ môže byť buď jednoduchá hodnota (logická hodnota, celé alebo reálne číslo, absolútny alebo relatívny čas, text) alebo štrukturovaná hodnota (matica) jednoduchých hodnôt. Typ hodnoty variantného typu sa automaticky nastavuje podľa typu hodnoty, ktorá sa nastavuje (metódy setValue), no pri pokuse o získanie hodnoty iného typu, aký variant obsahuje, je generovaná výnimka std::logic_error. Každá hodnota variantného typu obsahuje aj atribúty časová značka, stavové príznaky a užívateľské príznaky, podobne ako hodnoty ESL premenných.

Konštruktory

D2Variant (
	const D2Type type = None
);

Predvolený konštruktor. Vytvorí variant jednoduchej hodnoty daného typu.

D2Variant (
	const int rowsCount,
	const int columnsCount
);


Konštruktor, ktorý vytvorí štrukturovaný variant s daným počtom riadkov a stĺpcov.

D2Variant (
	const D2Variant& variant
);

Kopírovací konštruktor. Vytvorí variant ako kópiu zdrojového variantu.

Operátory

D2Variant& operator= (
	const D2Variant& variant
);

Operátor priradenia. Nastaví cieľový variant kópiami hodnôt zdrojového variantu.

Metódy

void copyValue (
	const D2Variant& source,
	const int sourceRow,
	const int sourceColumn,
	const int destinationRow,
	const int destinationColumn
);

Metóda skopíruje hodnotu (bunky) zdrojového variantu do (bunky) cieľového variantu. V prípade použitia nad variantom jednoduchého typu indexy riadku aj stĺpca musia byť 0. Pokus o prácu s bunkami štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

int getColumnsCount () const;

Vracia počet stĺpcov štrukturovaného variantu. Pre jednoduchý variant vracia 0.

bool getFlag (
	const unsigned short flag,
	const int row = 0,
	const int column = 0
) const;

Vracia stav nastavenosti užívateľských príznakov daných bitovou maskou (bunky) variantu. Pokus o vrátenie stavu príznakov bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

unsigned short getFlags (
	const int row = 0,
	const int column = 0
) const;

Vracia všetky užívateľské príznaky (bunky) variantu. Pokus o vrátenie príznakov bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

int getRowsCount () const;

Vracia počet riadkov štrukturovaného variantu. Pre jednoduchý variant vracia 0.

D2Time getTimestamp (
	const int row = 0,
	const int column = 0
) const;

Vracia časovú značku (bunky) variantu. Pokus o vrátenie časovej značky bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

D2Type getType (
	const int row = 0,
	const int column = 0
) const;

Vracia typ (bunky) variantu. Pokus o vrátenie typu bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

bool getValueBoolean (
	const int row = 0,
	const int column = 0)
const;

Vracia hodnotu (bunky) variantu ako c++ typ bool. Typ (bunky) variantu musí byť Boolean, inak je generovaná výnimka std::logic_error. Pokus o vrátenie hodnoty bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range. Ak hodnota nemá nastavený príznak platnosti, je generovaná výnimka std::logic_error.

D2Duration getValueDuration (
	const int row = 0,
	const int column = 0
) const;

Vracia hodnotu (bunky) variantu ako c++ typ D2Duration. Typ (bunky) variantu musí byť Duration, inak je generovaná výnimka std::logic_error. Pokus o vrátenie hodnoty bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range. Ak hodnota nemá nastavený príznak platnosti, je generovaná výnimka std::logic_error.

int getValueInteger (
	const int row = 0,
	const int column = 0
) const;

Vracia hodnotu (bunky) variantu ako c++ typ int. Typ (bunky) variantu musí byť Integer, inak je generovaná výnimka std::logic_error. Pokus o vrátenie hodnoty bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range. Ak hodnota nemá nastavený príznak platnosti, je generovaná výnimka std::logic_error.

double getValueReal (
	const int row = 0,
	const int column = 0
) const;

Vracia hodnotu (bunky) variantu ako c++ typ double. Typ (bunky) variantu musí byť Real, inak je generovaná výnimka std::logic_error. Pokus o vrátenie hodnoty bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range. Ak hodnota nemá nastavený príznak platnosti, je generovaná výnimka std::logic_error.

std::string getValueText (
	const int row = 0,
	const int column = 0
) const;

Vracia hodnotu (bunky) variantu ako c++ typ std::string. Typ (bunky) variantu musí byť Text, inak je generovaná výnimka std::logic_error. Pokus o vrátenie hodnoty bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range. Ak hodnota nemá nastavený príznak platnosti, je generovaná výnimka std::logic_error. Vrátený text je v kódovaní UTF-8.

D2Time getValueTime (
	const int row = 0,
	const int column = 0
) const;

Vracia hodnotu (bunky) variantu ako c++ typ D2Time. Typ (bunky) variantu musí byť Time, inak je generovaná výnimka std::logic_error. Pokus o vrátenie hodnoty bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range. Ak hodnota nemá nastavený príznak platnosti, je generovaná výnimka std::logic_error.

bool isSimple () const;

Vracia príznak či je variant jednoduchého typu (true) alebo štrukturovaný (false). Opak metódy D2Variant::isStructured.

bool isStructured () const;

Vracia príznak či je variant štrukturovaný (true) alebo jednoduchý (false). Opak metódy D2Variant::isSimple.

bool isValid (
	const int row = 0,
	const int column = 0
) const;

Vracia príznak platnosti (bunky) variantu. Pokus o zistenie stavu bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

bool isWeak (
	const int row = 0,
	const int column = 0
) const;

Vracia stav nastavenosti príznaku Weak (bunky) variantu. Pokus o zistenie stavu bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

void setFlag (
	const unsigned short flag,
	const bool set,
	const int row = 0,
	const int column = 0
);

Nastaví alebo vynuluje zvolené užívateľské príznaky (bunky) variantu na základe bitovej masky príznakov. Pokus o nastavenie bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

void setFlags (
	const unsigned short flags,
	const int row = 0,
	const int column = 0
);

Nastaví všetky užívateľské príznaky (bunky) variantu. Pokus o nastavenie bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

void setInvalid (
	const int row = 0,
	const int column = 0
);

Vynuluje príznak platnosti (bunky) variantu - zneplatní hodnotu. Pokus o nastavenie bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

void setRowsCount (
	const int count
);

Zmení rozmer štukturovaného variantu na daný počet riadkov. Hodnoty existujúcich riadkov zostanú zachované. V prípade volania metódy nad neštrukturovaným variantom je generovaná výnimka std::logic_error.

void setSimple (
	const D2Type type
);

Zmení typ variantu na jednoduchý a hodnotu nastaví na predvolenú. Ak sa nový typ zhoduje s existujúcim, metóda nerobí nič.

void setStructured (
	const int rowsCount,
	const int columnsCount
);

Zmení typ variantu na štrukturovaný s daným počtom riadkov a stĺpcov. Ak sa nezmenil počet stĺpcov, tak sa metóda správa rovnako ako D2Variant::setRowsCount;

void setTimestamp (
	const D2Time timestamp,
	const int row = 0,
	const int column = 0
);

Nastaví časovú značku (bunky) variantu. Pokus o nastavenie bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

void setValue (
	const bool value,
	const int row = 0,
	const int column = 0,
	const D2Time timestamp = D2Time::now ()
);
void setValue (
	const int value,
	const int row = 0,
	const int column = 0,
	const D2Time timestamp = D2Time::now ()
);
void setValue (
	const double value,
	const int row = 0,
	const int column = 0,
	const D2Time timestamp = D2Time::now ()
);
void setValue (
	const D2Duration value,
	const int row = 0,
	const int column = 0,
	const D2Time timestamp = D2Time::now ()
);
void setValue (
	const D2Time value,
	const int row = 0,
	const int column = 0,
	const D2Time timestamp = D2Time::now ()
);
void setValue (
	const std::string value,
	const int row = 0,
	const int column = 0,
	const D2Time timestamp = D2Time::now ()
);

Metódy nastavia hodnotu jednoduchého variantu alebo bunky štrukturovaného variantu podľa vstupného typu. Zároveň nastavia stav hodnoty na platnú, vynulujú užívateľské príznaky a nastavia časovú značku hodnoty na aktuálny čas. Pokus o nastavenie bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

Text musí byť v UTF-8 kódovaní.

void setWeak (
	const bool weak = true,
	const int row = 0,
	const int column = 0
);

Nastaví alebo vynuluje príznak (bunky) variantu Weak. Pokus o nastavenie bunky štrukturovaného variantu mimo rozsahu generuje výnimku std::out_of_range.

Napíšte komentár