aboutsummaryrefslogtreecommitdiffstats
path: root/src/songvec.h
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-09-20 16:20:48 -0700
committerEric Wong <normalperson@yhbt.net>2008-09-20 16:58:31 -0700
commit1952b762b0b7024c6a993e62ad957718ac669ac4 (patch)
treeb85434889e082ff3425d2c5209fc8dc41e5fedf4 /src/songvec.h
parent8f475cc0ff4640f60c139e037b38d5c0225e1478 (diff)
downloadmpd-1952b762b0b7024c6a993e62ad957718ac669ac4.tar.gz
mpd-1952b762b0b7024c6a993e62ad957718ac669ac4.tar.xz
mpd-1952b762b0b7024c6a993e62ad957718ac669ac4.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.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/songvec.h b/src/songvec.h
new file mode 100644
index 000000000..5952f871f
--- /dev/null
+++ b/src/songvec.h
@@ -0,0 +1,26 @@
+#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);
+
+int songvec_write(struct songvec *sv, int fd, int extra);
+
+void songvec_prune(struct songvec *sv);
+
+#endif /* SONGVEC_H */