diff options
author | Eric Wong <normalperson@yhbt.net> | 2008-09-23 20:48:39 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-09-23 20:48:39 +0200 |
commit | 0bec1d38078c88d07939a4c210b7cdeb9c8eb59c (patch) | |
tree | 9ec91df91017224ef643060533a657db3c1c53dd /src/songvec.h | |
parent | afe6ce7210be330eefb0e8f18f2b6787bf052087 (diff) | |
download | mpd-0bec1d38078c88d07939a4c210b7cdeb9c8eb59c.tar.gz mpd-0bec1d38078c88d07939a4c210b7cdeb9c8eb59c.tar.xz mpd-0bec1d38078c88d07939a4c210b7cdeb9c8eb59c.zip |
Replace SongList with struct songvec
Our linked-list implementation is wasteful and the
SongList isn't modified enough to benefit from being a linked
list. So use a more compact array of song pointers which
saves ~200K on a library with ~9K songs (on x86-32).
Diffstat (limited to '')
-rw-r--r-- | src/songvec.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/songvec.h b/src/songvec.h new file mode 100644 index 000000000..ada7c262d --- /dev/null +++ b/src/songvec.h @@ -0,0 +1,24 @@ +#ifndef SONGVEC_H +#define SONGVEC_H + +#include "song.h" +#include "os_compat.h" + +struct songvec { + Song **base; + size_t nr; +}; + +void songvec_sort(struct songvec *sv); + +Song *songvec_find(struct songvec *sv, const char *url); + +int songvec_delete(struct songvec *sv, Song *del); + +void songvec_add(struct songvec *sv, Song *add); + +void songvec_free(struct songvec *sv); + +void songvec_prune(struct songvec *sv); + +#endif /* SONGVEC_H */ |