![]() |
GemaCoreLib
The GeMA Core library
|
A simple accessor used to retrieve strings from a list when valueStr() is called. All other functions return 0.0. More...
Public Member Functions | |
StringListAccessor (const QStringList &data, GmValueInfo *info, const GmLogCategory &logger) | |
Constructor. More... | |
virtual | ~StringListAccessor () |
Destructor. Destroys the info object. | |
virtual int | size () const |
Returns the number of values in the set refered to by the accessor, meaning that valid indices will fall in the range [0..size()-1]. | |
virtual bool | isDefValue (int index) const |
Returns true if the value at the specified index is equal to the default value defined by info()->defValue() | |
virtual const double * | valueAt (int index, const GmVector *coord) const |
Returns the value associated with the "index" position of the data set, evaluated at the requested position (when necessary). More... | |
virtual double | scalarValueAt (int index, const GmVector *coord) const |
Similar to valueAt() but returning a single double. Must be used for scalar data sets only. | |
virtual bool | setValue (int index, const double *value) |
Allows for altering the value associated with entry "index" in the value set. This version of the function works for scalar, vector or matrix values. Values are copied to the data set. Matrix values should be organized in COLUMN MAJOR ORDER. More... | |
virtual bool | setScalarValue (int index, double value) |
Similar to setValue() but passing a single double. Must be used for scalar data sets only. | |
virtual bool | setValueAsDef (int index) |
Similar to setValue(), filling the index entry with the default value. | |
virtual bool | setFunctionValue (int index, GmUserFunction *functionDef) |
Overload of setValue() storing a user function definition. More... | |
virtual bool | setFunctionValue (int index, GmUserFunctionEvaluator *functionEval) |
Overload of setValue() storing a user function evaluation context. More... | |
virtual QString | valueStr (int index, bool evalFunctions, bool printDefAsNil, int fieldWidth=0, char format='g', int precision=-1, const GmVector *coord=NULL) const |
Redefinition of the default valueStr() method to return a list entry. This is really the only usefull function in this class. | |
![]() | |
GmValueAccessorBase (GmValueInfo *info, const GmLogCategory &logger, UnitConverter *conv, QString desiredUnit) | |
Constructor. Reveives infromation about the returned values and basic parameters needed for unit conversion, initializing the basic fields _info, _conv, _rconv and _convData that will be used by derived classes. Takes ownership of the converter. | |
virtual | ~GmValueAccessorBase () |
Destructor. | |
virtual GmValueInfo * | info () const |
Returns the information object describing the values returned by this accessor. | |
virtual Unit | unit () const |
Returns the unit in which data returned/received by the accessor is expressed. More... | |
virtual bool | hasUnitConversion () const |
Returns true if this accessor perfroms unit conversions, false if not. | |
virtual bool | setFunctionFromName (int index, QString userFunctionId, QString &err) |
Sets a function value from the function name. More... | |
virtual bool | setValueFromVariant (int index, const QVariant &v, bool acceptMissingDimension, QString &err) |
Sets a value with data read from a QVariant. See parameter descriptions in GmValueAccessor::setValueFromVariant() More... | |
virtual void | setEvalContext (GmValueSetEvalContext *context, bool ownsContext) |
Sets the EvalContext object that will be used to translate function names / objects into function evaluators to allow for evaluating user functions. More... | |
virtual GmValueSetEvalContext * | evalContext () const |
Returns the internal evaluation context. Needed by GmCellAccessorProxy, GmBcAccessorProxy & state dump functions. | |
![]() | |
virtual | ~GmValueAccessor () |
Virtual destructor. | |
bool | isScalar () const |
Returns true if the accessor returns scalar values (can be false even if valueSize() == 1 – think about a 1x1 matrix) | |
virtual const double * | defValue () const |
Returns the default value for the data converted to the accessor unit. The returned array contents is valid only UNTIL a new call to the accessor is done. Meaningfull only when the default value is NOT a function. | |
int | valueSize () const |
Returns the size of the array returned by value(), i.e. 1 for scalar values and nlin * ncol for vector or matrix values. | |
virtual int | adjustLinearIndex (int index, const GmMesh *m) |
Translates a linear index (from 0 to mesh->totalNumNodes()-1) into a valid index for this accessor or into -1 if the given index is out of range. More... | |
virtual int | adjustLinearIndex (int index, int firstGhostIndex) |
Simmilar to adjustLinearIndex(int, const GmMesh*), this function overload gets as second parameter the index of the first ghost node in the mesh (equal to mesh->numNodes()). | |
const double * | value (int index) const |
Similar to valueAt(), passing NULL as coordinates. | |
double | scalarValue (int index) const |
Similar to scalarValueAt(), passing NULL as coordinates. | |
void | matrixValueAt (int index, const GmVector *coord, GmCRMatrix &mat) const |
Similar to valueAt(), but returning the result as a CONST matrix. Bear in mind that the resulting matrix is valid only UNTIL the next call to the accessor. | |
void | matrixValue (int index, GmCRMatrix &mat) const |
Similar to matrixValueAt(), passing NULL as coordinates. | |
void | vectorValueAt (int index, const GmVector *coord, GmCRVector &vec) const |
Similar to valueAt(), but returning the result as a CONST vector. Bear in mind that the resulting vector is valid only UNTIL the next call to the accessor. | |
void | vectorValue (int index, GmCRVector &vec) const |
Similar to vectorValueAt(), passing NULL as coordinates. | |
virtual bool | setScalarValueAtDim (int index, int dim, double val) |
Similar to setValue() but changing only the value at the given dimension. Can be used over scalar, vector and matrix sets. For matrices, dim refers to the position in the linearized vector data in COLUMN MAJOR FORMAT. Should be used only if the current value is NOT a function. | |
bool | setMatrixValue (int index, const GmMatrix &mat) |
Similar to setValue() but receiving the data as a matrix. | |
bool | setVectorValue (int index, const GmVector &vec) |
Similar to setValue() but receiving the data as a vector. | |
bool | addScalarToValue (int index, double value) |
Convenience function equivalent to calling setScalarValue(index, scalarValue(index) + value) | |
bool | addToValue (int index, const double *val) |
Convenience function logically equivalent to calling setValue(index, value(index) + val) operating over the full vector. Should be used only if the current value is NOT a function. | |
Protected Member Functions | |
virtual bool | isFunction (int index) const |
Returns true if the data in index is a reference to a function (in C or Lua). Used by valueStr() to mark function results. | |
virtual QString | functionId (int index) const |
Returns a function id name for a function reference at the index or an empty string for non function indices. Used by valueStr(). | |
![]() | |
const double * | evalValue (GmUserFunctionEvaluator *functionEval, int index, const GmVector *coord) const |
An auxiliary function tailored for evaluating functions identified by its evaluator. This function should be called by implementations of valueAt(), and scalarValueAt() for ValueData objects of type GM_VDT_FUNCTION_EVAL. More... | |
const double * | evalValue (GmUserFunction *functionDef, int index, const GmVector *coord) const |
Overload of evalValue(GmUserFunctionEvaluator*, ...) receiving a user function object. Should be called for ValueData objects of type GM_VDT_FUNCTION. | |
const double * | evalDefValue (int index, const GmVector *coord) const |
Simmilar to evalValue(), this function evaluates a default value function. Should be called only when _info->defIsFunction() returns true. | |
virtual double | convertToAccessorUnit (double val) const |
An utility function that given a value, converts it to the accessor unit. If no conversion is needed, returns val. | |
virtual const double * | convertToAccessorUnit (const double *p) const |
An utility function that given a pointer to the stored data, converts the value to the accessor unit and returns a pointer to the internal buffer used to store the converted value. If no conversion is needed, returns p. | |
virtual void | convertFromAccessorUnit (double val, double *dst) const |
Copies the values given by val into the area pointed to by dst, converting units if needed. | |
virtual void | convertFromAccessorUnit (const double *val, double *dst) const |
Copies the values given by val into the area pointed to by dst, converting units if needed. | |
double * | convData () const |
Private Attributes | |
const QStringList & | _data |
Reference to a list with the desired data. | |
Additional Inherited Members | |
![]() | |
static bool | fillMatrixFromLuaTable (double *m, int nlin, int ncol, LuaTable &t, const GmValueInfo *info, const double *defVal, QString &err) |
An auxilliar function that given a Lua table storing either a list of doubles or a list of lists of doubles, fills the given matrix m, stored in the pre-allocated vector with size nlin * ncol and organized "per column". More... | |
![]() | |
GmValueInfo * | _info |
The metadata describing the values returned by this accessor. | |
const GmLogCategory & | _logger |
The logger object used to report errors while accessing or setting data. | |
GmTLBuffer< double, true > * | _convData |
Per thread local buffer used to store converted data. Null if _conv == NULL. | |
UnitConverter * | _conv |
Unit converter. | |
UnitConverter * | _rconv |
Unit converter in the reverse direction: from desired unit to data unit. | |
QString | _unit |
The unit in which data will be returned. Needed for the case when _conv = NULL and _info->unit() is empty. | |
A simple accessor used to retrieve strings from a list when valueStr() is called. All other functions return 0.0.
IMPORTANT: This is NOT a general class, but a convenience to easily allow string columns in print routines. It was tailored for working in that scenario ONLY.
|
inline |
Constructor.
Different from every other accessor, this one takes ownership of the info object received as parameter.
data | A list storing the data to be retrieved by this accessor |
info | Metadata about the values beeing accessed. Will be deleted by the accessor. |
logger | The logger used to report errors |
|
inlinevirtual |
Overload of setValue() storing a user function definition.
This is the intended way to store a user function if the value set corresponding to this accessor is NOT directly tied to a mesh
(its a property set ValueSet, for example)
Implements GmValueAccessor.
|
inlinevirtual |
Overload of setValue() storing a user function evaluation context.
This is the intended way to store a user function if the value set corresponding to this accessor is directly tied to a mesh (a node or cell attribute, for example). Storing an evaluator is more efficient than a function definition, but can only be done if the value set is not shared between several meshes.
Implements GmValueAccessor.
|
inlinevirtual |
Allows for altering the value associated with entry "index" in the value set. This version of the function works for scalar, vector or matrix values. Values are copied to the data set. Matrix values should be organized in COLUMN MAJOR ORDER.
Returns false if the data could not be set due to allocation or permission problems and an error message will be logged.
Assumes that values are expressed in the REQUESTED desired unit if that was given when the accessor was created. If that unit exists and is different from the data base unit, values are converted to the data unit before beeing stored.
Implements GmValueAccessor.
|
inlinevirtual |
Returns the value associated with the "index" position of the data set, evaluated at the requested position (when necessary).
If the data is a function reference, the function will be called and the result returned. Also, the results will be converted to the requested desired unit.
The function returns the address of an array (possibly internal to the accessor), storing the requested data, which can be a scalar, a vector or a matrix, linearized using COLUMN MAJOR ORDER. This array contents is valid only UNTIL a new call to the accessor is done. This restriction allows for the accessor implementation to be free to return a pointer to the data when no unit conversion is needed or a pointer to a static internal buffer when converting values.
If an error happens while evaluating a function, the result will be the (converted) default value for the data set and an error message will be logged (if the default value is itself a function, the function will return a vector filled with zeros, converted to the desired unit if needed).
The set of coordinates is used only for the evaluation of user functions over cell attributes / properties. A NULL pointer can be passed if the accessor context doesn't needs this information (and that's why this parameter is a GmVector* and not a GmVector&).
The coordinate values depends on the type of cell. For 'plain' cells, it should be cartesian coordinates in the same unit as coordinates are expressed in the mesh.
For element cells, it should be natural coordinates.
Implements GmValueAccessor.