aboutsummaryrefslogtreecommitdiffstats
path: root/src/songvec.h
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-09-23 20:48:39 +0200
committerMax Kellermann <max@duempel.org>2008-09-23 20:48:39 +0200
commit0bec1d38078c88d07939a4c210b7cdeb9c8eb59c (patch)
tree9ec91df91017224ef643060533a657db3c1c53dd /src/songvec.h
parentafe6ce7210be330eefb0e8f18f2b6787bf052087 (diff)
downloadmpd-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 'src/songvec.h')
-rw-r--r--src/songvec.h24
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 */