libsaria: Find lowercase tags when creating a track
This avoids several lookups during list sorting, so initial startup should be a little bit faster now.
This commit is contained in:
parent
a3130a7da5
commit
1e5628d059
|
@ -30,7 +30,10 @@ namespace libsaria
|
|||
int channels;
|
||||
sid_t songid;
|
||||
|
||||
string *artist_lc;
|
||||
string *album_lc;
|
||||
void make_lenstr();
|
||||
void format_tags();
|
||||
|
||||
public:
|
||||
Track();
|
||||
|
@ -52,6 +55,9 @@ namespace libsaria
|
|||
int get_bitrate();
|
||||
int get_channels();
|
||||
sid_t get_songid();
|
||||
|
||||
string *get_artist_lc();
|
||||
string *get_album_lc();
|
||||
};
|
||||
|
||||
} /* Namespace: libsaria */
|
||||
|
|
|
@ -21,8 +21,8 @@ static inline bool compare_tracks(libsaria::Track *one, libsaria::Track *two)
|
|||
|
||||
static inline bool compare_albums(libsaria::Track *one, libsaria::Track *two)
|
||||
{
|
||||
string *s_one = libsaria::lowercase(one->get_album());
|
||||
string *s_two = libsaria::lowercase(two->get_album());
|
||||
string *s_one = one->get_album_lc();
|
||||
string *s_two = two->get_album_lc();
|
||||
if (*s_one < *s_two)
|
||||
return true;
|
||||
else if (*s_one == *s_two)
|
||||
|
@ -32,8 +32,8 @@ static inline bool compare_albums(libsaria::Track *one, libsaria::Track *two)
|
|||
|
||||
static bool compare_tracktags(libsaria::Track *one, libsaria::Track *two)
|
||||
{
|
||||
string *s_one = libsaria::lowercase(one->get_artist());
|
||||
string *s_two = libsaria::lowercase(two->get_artist());
|
||||
string *s_one = one->get_artist_lc();
|
||||
string *s_two = two->get_artist_lc();
|
||||
if (*s_one == "")
|
||||
return false;
|
||||
if ( (*s_one < *s_two) || (*s_two == "") )
|
||||
|
|
|
@ -69,4 +69,14 @@ namespace libsaria
|
|||
return songid;
|
||||
}
|
||||
|
||||
string *Track::get_artist_lc()
|
||||
{
|
||||
return artist_lc;
|
||||
}
|
||||
|
||||
string *Track::get_album_lc()
|
||||
{
|
||||
return album_lc;
|
||||
}
|
||||
|
||||
} /* Namespace: libsaria */
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
#include <libsaria/track.h>
|
||||
#include <libsaria/format.h>
|
||||
|
||||
#include <taglib/tag.h>
|
||||
#include <taglib/fileref.h>
|
||||
|
@ -42,6 +43,7 @@ namespace libsaria
|
|||
channels = prop->channels();
|
||||
|
||||
make_lenstr();
|
||||
format_tags();
|
||||
}
|
||||
|
||||
Track::Track(InFile &in)
|
||||
|
@ -60,12 +62,19 @@ namespace libsaria
|
|||
in >> bitrate;
|
||||
in >> sample;
|
||||
in >> channels;
|
||||
format_tags();
|
||||
}
|
||||
|
||||
Track::~Track()
|
||||
{
|
||||
}
|
||||
|
||||
void Track::format_tags()
|
||||
{
|
||||
artist_lc = lowercase(artist);
|
||||
album_lc = lowercase(album);
|
||||
}
|
||||
|
||||
void Track::save(OutFile &out)
|
||||
{
|
||||
out << songid;
|
||||
|
|
Loading…
Reference in New Issue