Big Mouth Billy Bass automation library
song.hpp
- Committer:
- bikeNomad
- Date:
- 2013-06-18
- Revision:
- 3:6c91a6232c4a
- Parent:
- 2:eaba75af0f0d
- Child:
- 4:f009306756b3
File content as of revision 3:6c91a6232c4a:
#ifndef __included_song_hpp #define __included_song_hpp #include <DirHandle.h> #include "billybass.hpp" #include "config.hpp" #include "action.hpp" class Song { public: typedef std::vector<Action> actions_t; // _name is relative to BASS_DIRECTORY // return a pointer to a fully read-in Song if valid // also adds new song to songs static Song *newSong(char const *_name); Song() : sequenceNumber(0), whichFish(NO_FISH), basename(0), extension(0) { fullname[0] = 0; actions.reserve(MAX_ACTIONS_PER_SONG); } ~Song() { actions.clear(); } BillyBass * myFish() { return BillyBass::bassNumber(whichFish); } bool isValid() const { return basename != 0 && whichFish != NO_FISH; } bool parseFilename(char const *_name); bool readActions(); unsigned getSequenceNumber() const { return sequenceNumber; } unsigned getWhichFish() const { return whichFish; } char const *getSampleFileName() { if (!extension) return 0; strcpy(extension, sampleExtension); return fullname; } char const *getTextFileName() { if (!extension) return 0; strcpy(extension, textExtension); return fullname; } actions_t &getActions() { return actions; } void print(FILE *f) { fprintf(f, "%s fish=%u seq=%u\r\n", getSampleFileName(), whichFish, sequenceNumber); for (actions_t::const_iterator action_it = actions.begin(); action_it != actions.end(); action_it++) { Action const &action = *action_it; fprintf(f, "%0.02f %s %d\r\n", action.actionTime, action.outputName, action.desiredState ? 1 : 0); } } protected: static char const directoryName[ BASS_DIRECTORY_LENGTH + 1 ]; static unsigned const NO_FISH; static char const *textExtension; static char const *sampleExtension; unsigned sequenceNumber; // 0-relative unsigned whichFish; // 0-relative char fullname[ MAX_PATH_LEN ]; // with directory name char *basename; // points into fullname char *extension; // points into fullname actions_t actions; }; #endif // __included_song_hpp