in src/tick_cursor.cpp [139:165]
void TickCursor::decodeHeader(PyObject * message_object) {
//decode timestamp
PythonRefHolder ts_obj(PyLong_FromLongLong(instrument_message_->timestamp));
PyObject_SetAttr(message_object, TIMESTAMP_PROPERTY1, ts_obj.getReference());
//decode symbol
const std::string *symbol_string = cursor_->getInstrument(instrument_message_->entityId);
if (symbol_string == NULL) {
PyObject_SetAttr(message_object, SYMBOL_PROPERTY1, Py_None);
} else {
PythonRefHolder symbol_obj(PyUnicode_FromString(symbol_string->c_str()));
PyObject_SetAttr(message_object, SYMBOL_PROPERTY1, symbol_obj.getReference());
}
//decode type id
PythonRefHolder type_id_obj(PyLong_FromLong(instrument_message_->typeId));
PyObject_SetAttr(message_object, TYPE_ID_PROPERTY1, type_id_obj.getReference());
//decode type name
const std::string *type_name_string = cursor_->getMessageTypeName(instrument_message_->typeId);
if (type_name_string == NULL) {
PyObject_SetAttr(message_object, TYPE_NAME_PROPERTY1, Py_None);
} else {
PythonRefHolder type_name_obj(PyUnicode_FromString(type_name_string->c_str()));
PyObject_SetAttr(message_object, TYPE_NAME_PROPERTY1, type_name_obj.getReference());
}
}