Add functionality present in the C library to the to C++ SeekTable class.
authorErik de Castro Lopo <erikd@mega-nerd.com>
Mon, 7 May 2012 09:22:37 +0000 (19:22 +1000)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Mon, 7 May 2012 09:22:37 +0000 (19:22 +1000)
Patch from Bastiaan Timmer <basjetimmer@yahoo.com> sent to the
<flac-dev@xiph.org> mailing list.

include/FLAC++/metadata.h
src/libFLAC++/metadata.cpp

index c23af91..94eb6fc 100644 (file)
@@ -502,6 +502,9 @@ namespace FLAC {
                        unsigned get_num_points() const;
                        ::FLAC__StreamMetadata_SeekPoint get_point(unsigned index) const;
 
+                       //! See FLAC__metadata_object_seektable_resize_points()
+                       bool resize_points(unsigned new_num_points);
+
                        //! See FLAC__metadata_object_seektable_set_point()
                        void set_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point);
 
@@ -513,6 +516,24 @@ namespace FLAC {
 
                        //! See FLAC__metadata_object_seektable_is_legal()
                        bool is_legal() const;
+
+                       //! See FLAC__metadata_object_seektable_template_append_placeholders()
+                       bool template_append_placeholders(unsigned num);
+
+                       //! See FLAC__metadata_object_seektable_template_append_point()
+                       bool template_append_point(FLAC__uint64 sample_number);
+
+                       //! See FLAC__metadata_object_seektable_template_append_points()
+                       bool template_append_points(FLAC__uint64 sample_numbers[], unsigned num);
+
+                       //! See FLAC__metadata_object_seektable_template_append_spaced_points()
+                       bool template_append_spaced_points(unsigned num, FLAC__uint64 total_samples);
+
+                       //! See FLAC__metadata_object_seektable_template_append_spaced_points_by_samples()
+                       bool template_append_spaced_points_by_samples(unsigned samples, FLAC__uint64 total_samples);
+
+                       //! See FLAC__metadata_object_seektable_template_sort()
+                       bool template_sort(bool compact);
                };
 
                /** VORBIS_COMMENT metadata block.
index 3c9f657..0870d02 100644 (file)
@@ -438,6 +438,12 @@ namespace FLAC {
                        return object_->data.seek_table.points[index];
                }
 
+               bool SeekTable::resize_points(unsigned new_num_points)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_resize_points(object_, new_num_points);
+               }
+
                void SeekTable::set_point(unsigned index, const ::FLAC__StreamMetadata_SeekPoint &point)
                {
                        FLAC__ASSERT(is_valid());
@@ -465,6 +471,42 @@ namespace FLAC {
                        return (bool)::FLAC__metadata_object_seektable_is_legal(object_);
                }
 
+               bool SeekTable::template_append_placeholders(unsigned num)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_template_append_placeholders(object_, num);
+               }
+
+               bool SeekTable::template_append_point(FLAC__uint64 sample_number)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_template_append_point(object_, sample_number);
+               }
+
+               bool SeekTable::template_append_points(FLAC__uint64 sample_numbers[], unsigned num)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_template_append_points(object_, sample_numbers, num);
+               }
+
+               bool SeekTable::template_append_spaced_points(unsigned num, FLAC__uint64 total_samples)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_template_append_spaced_points(object_, num, total_samples);
+               }
+
+               bool SeekTable::template_append_spaced_points_by_samples(unsigned samples, FLAC__uint64 total_samples)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(object_, samples, total_samples);
+               }
+
+               bool SeekTable::template_sort(bool compact)
+               {
+                       FLAC__ASSERT(is_valid());
+                       return (bool)::FLAC__metadata_object_seektable_template_sort(object_, compact);
+               }
+
 
                //
                // VorbisComment::Entry