diff options
author | Eric Wong <normalperson@yhbt.net> | 2008-09-20 16:20:48 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2008-09-20 16:58:31 -0700 |
commit | 1952b762b0b7024c6a993e62ad957718ac669ac4 (patch) | |
tree | b85434889e082ff3425d2c5209fc8dc41e5fedf4 /src/songvec.h | |
parent | 8f475cc0ff4640f60c139e037b38d5c0225e1478 (diff) | |
download | mpd-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.h | 26 |
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 */ |