#ifndef hTrackContractTable #define hTrackContractTable #include "PackedTable.h" struct _trackContract { private: long _track_contract_id; long _track_id; long _artist_contract_id; char _status; char _cross_collateralized; char _prorate_track_count; public: long track_contract_id() { return _track_contract_id; } long track_id() { return _track_id; } long artist_contract_id() { return _artist_contract_id; } int status() { return _status; } int cross_collateralized() { return _cross_collateralized; } int prorate_track_count() { return _prorate_track_count; } friend class TrackContractTable; }; class TrackContractTable : public PackedTableFlat { public: struct _trackContract* getIndexedData(const long index) { return (struct _trackContract*)this->_getIndexedData(index); } protected: static const int kFieldTrackContractID = 0; static const int kFieldTrackID = 1; static const int kFieldArtistContractID = 2; static const int kFieldStatus = 3; static const int kFieldCrossCollateralized = 4; static const int kFieldProrateTrackCount = 5; PackedTable::SharedMemoryHandler _dataFileHandler; virtual DataFileHandler* _getDataFileHandler() { return &_dataFileHandler; } virtual long _dataFlatElementSize() { return sizeof(struct _trackContract); } virtual const char* _maxIDQueryString() { return "SELECT MAX(track_contract_id) FROM track_contract"; } virtual const char* _dataQueryString() { return "SELECT track_contract_id,track_id,artist_contract_id,status,cross_collateralized,prorate_track_count FROM track_contract ORDER BY track_contract_id"; } virtual void _readDataRow(MYSQL_ROW row) { // cast the data block to an array of the right type. // struct _trackContract *array = (struct _trackContract*)this->_dataFlatRAM; // First we need to determine the id, which will give us // the correct index into the array to store everything. // long trackContractID; PackedTable::_ParseLong(row[kFieldTrackContractID], &trackContractID); long i = trackContractID; array[i]._track_contract_id = trackContractID; PackedTable::_ParseLong(row[kFieldTrackID], &(array[i]._track_id)); PackedTable::_ParseLong(row[kFieldArtistContractID], &(array[i]._artist_contract_id)); PackedTable::_ParseByte(row[kFieldStatus], &(array[i]._status)); PackedTable::_ParseByte(row[kFieldCrossCollateralized], &(array[i]._cross_collateralized)); PackedTable::_ParseByte(row[kFieldProrateTrackCount], &(array[i]._prorate_track_count)); } }; #endif