inline void set_offset(FLAC__uint64 value) { object_->offset = value; }
inline void set_number(FLAC__byte value) { object_->number = value; }
- void set_isrc(char value[12]);
+ void set_isrc(const char value[12]);
void set_type(unsigned value);
inline void set_pre_emphasis(bool value) { object_->pre_emphasis = value? 1 : 0; }
- void set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index);
+ void set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index);
+ //@@@@ It's awkward but to insert/delete index points
+ //@@@@ you must use the routines in the CueSheet class.
};
CueSheet();
unsigned get_num_tracks() const;
Track get_track(unsigned i) const;
- void set_media_catalog_number(char value[128]);
- void set_offset(FLAC__uint64 value);
+ void set_media_catalog_number(const char value[128]);
+ void set_lead_in(FLAC__uint64 value);
+
+ void set_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
//! See FLAC__metadata_object_cuesheet_track_insert_index()
bool insert_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index);
const Application *application = dynamic_cast<const Application *>(object);
const SeekTable *seektable = dynamic_cast<const SeekTable *>(object);
const VorbisComment *vorbiscomment = dynamic_cast<const VorbisComment *>(object);
+ const CueSheet *cuesheet = dynamic_cast<const CueSheet *>(object);
if(0 != streaminfo)
return new StreamInfo(*streaminfo);
return new SeekTable(*seektable);
else if(0 != vorbiscomment)
return new VorbisComment(*vorbiscomment);
+ else if(0 != cuesheet)
+ return new CueSheet(*cuesheet);
else {
FLAC__ASSERT(0);
return 0;
return object_->indices[i];
}
- void CueSheet::Track::set_isrc(char value[12])
+ void CueSheet::Track::set_isrc(const char value[12])
{
FLAC__ASSERT(is_valid());
FLAC__ASSERT(0 != value);
object_->type = value;
}
- void CueSheet::Track::set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index)
- {
- FLAC__ASSERT(is_valid());
- FLAC__ASSERT(i < object_->num_indices);
- object_->indices[i] = index;
- }
+ void CueSheet::Track::set_index(unsigned i, const ::FLAC__StreamMetadata_CueSheet_Index &index)
+ {
+ FLAC__ASSERT(is_valid());
+ FLAC__ASSERT(i < object_->num_indices);
+ object_->indices[i] = index;
+ }
//
CueSheet::~CueSheet()
{ }
+ const char *CueSheet::get_media_catalog_number() const
+ {
+ FLAC__ASSERT(is_valid());
+ return object_->data.cue_sheet.media_catalog_number;
+ }
+
+ FLAC__uint64 CueSheet::get_lead_in() const
+ {
+ FLAC__ASSERT(is_valid());
+ return object_->data.cue_sheet.lead_in;
+ }
+
unsigned CueSheet::get_num_tracks() const
{
FLAC__ASSERT(is_valid());
return Track(object_->data.cue_sheet.tracks + i);
}
+ void CueSheet::set_media_catalog_number(const char value[128])
+ {
+ FLAC__ASSERT(is_valid());
+ FLAC__ASSERT(0 != value);
+ memcpy(object_->data.cue_sheet.media_catalog_number, value, 128);
+ object_->data.cue_sheet.media_catalog_number[128] = '\0';
+ }
+
+ void CueSheet::set_lead_in(FLAC__uint64 value)
+ {
+ FLAC__ASSERT(is_valid());
+ object_->data.cue_sheet.lead_in = value;
+ }
+
+ void CueSheet::set_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index)
+ {
+ FLAC__ASSERT(is_valid());
+ FLAC__ASSERT(track_num < object_->data.cue_sheet.num_tracks);
+ FLAC__ASSERT(index_num < object_->data.cue_sheet.tracks[track_num].num_indices);
+ object_->data.cue_sheet.tracks[track_num].indices[index_num] = index;
+ }
+
bool CueSheet::insert_index(unsigned track_num, unsigned index_num, const ::FLAC__StreamMetadata_CueSheet_Index &index)
{
FLAC__ASSERT(is_valid());