Details
-
Task
-
Status: Stalled (View Workflow)
-
Major
-
Resolution: Unresolved
-
None
Description
This task could be splitted by two: one for store_* and one for val_*
We currently have following problem with Field class:
- It has methods to store and load values with respect to the data type conversion required:
store_* and val_* (e.g. Field::val_float(), Field::store_str(),...) - Those methods are virtual, and are overridden for certain ancestors to achieve a conversion to and from any fundamental type
- The problem is: they use Field::ptr internally instead of an explicit argument
- This leads to that in many places Field::ptr is changed to some value needed, then store_*/val_* ` is called, then it is changed back
- in many places Field::move_field_offset() is used that. It could be potentially removed completely.
The task is:
- Fix all store_* or val_* functions to accept uchar *ptr_arg explicitly. I think it's better to make a new name
- in particular, we'll soon have Field_varstring::val_str_from_ptr for exactly that purpose
- Eliminate hither-thither manipulations mentioned, across the code base, by locating Field::move_field_offset usages
- Add a method that uses Field::ptr back, but make it non-virtual
- e.g.
double Field::val_real() const
{ return val_real_from_ptr(ptr); }
and so on
- e.g.