This interface defines two functions that convert between a RecordInterface and the class that inherits these functions. These functions are often used to parse input that is beyond the programs control e.g. user input from glish or Table records that may have been generated elsewhere. Hence exceptions should not thrown be thrown by these functions. Instead the function should return False and append an error message to the supplied String when the transformation cannot be accomplished.
Converting to/from a GlishRecord requires an extra step. First a Record should be used which can thereafter be converted to/from a GlishRecord using the appropriate GlishRecord functions.
void printAsRecord(const RecordTransformable & myClass) { String errorMessage; Record rec; if (!myClass.toRecord(errorMessage, rec)) { cout << "Cannot convert class to a Record. The reason is:" << endl; cout << errorMessage << endl; } else { cout << rec.ndefined() << endl; } }
Convert the class to an Record representation. The input record may already contain fields and these fields may be silently overridden. New fields may be added to the input Record. If the transformation succeeds then the error String is unchanged and the function returns True. Otherwise the function returns False and appends an error message to the supplied String giving the reason why the conversion failed.
Initialise the class from a Record representation. The input record should contain the fields that are required by the class. Other fields will be ignored. If the transformation succeeds then the error String is unchanged and the function returns True. Otherwise the function returns False and appends an error message to the supplied String giving the reason why the conversion failed.
Initialise the class from a String representation. A string cannot contain enough information for many objects. Hence the default implementation of this class returns False, indicating that the class could not be initialised and an error message is appended to the supplied string. If the class can be initialised from a string then this function should be overridden.
Specify the identification of the record (e.g. 'meas', 'quant'). The default implementation returns a empty string.