#ifndef hArtistRoyaltyAlbumTable #define hArtistRoyaltyAlbumTable #include "PackedTable.h" #define kTitleFieldSize 63 struct _artistRoyaltyAlbum { // Just going to cache the fields we use (a small subset of the fields actually in the table) private: long _artist_royalty_album_id; long _artist_contract_id; public: long artist_royalty_album_id() { return _artist_royalty_album_id; } long artist_contract_id() { return _artist_contract_id; } friend class ArtistRoyaltyAlbumTable; }; class ArtistRoyaltyAlbumTable : public PackedTableFlat { public: typedef struct _artistRoyaltyAlbum tData; tData* getIndexedData(const long index) { return (tData*)this->_getIndexedData(index); } protected: enum Field { kFieldArtistRoyaltyAlbumID, kFieldArtistContractID }; PackedTable::SharedMemoryHandler _dataFileHandler; virtual DataFileHandler* _getDataFileHandler() { return &_dataFileHandler; } virtual long _dataFlatElementSize() { return sizeof(tData); } virtual const char* _maxIDQueryString() { return "SELECT MAX(artist_royalty_album_id) FROM artist_royalty_album"; } virtual const char* _dataQueryString() { return "SELECT artist_royalty_album_id,artist_contract_id FROM artist_royalty_album ORDER BY artist_royalty_album_id"; } virtual void _readDataRow(MYSQL_ROW row) { // cast the data block to an array of the right type. // tData *array = (tData*)this->_dataFlatRAM; // First we need to determine the id, which will give us // the correct index into the array to store everything. // long artistRoyaltyAlbumID; PackedTable::_ParseLong(row[kFieldArtistRoyaltyAlbumID], &artistRoyaltyAlbumID); long i = artistRoyaltyAlbumID; array[i]._artist_royalty_album_id = artistRoyaltyAlbumID; PackedTable::_ParseLong(row[kFieldArtistContractID], &(array[i]._artist_contract_id)); } }; #endif