diff options
| author | Michiel Van Der Kolk <not.valid@email.address> | 2005-04-26 21:37:44 +0000 |
|---|---|---|
| committer | Michiel Van Der Kolk <not.valid@email.address> | 2005-04-26 21:37:44 +0000 |
| commit | 929e7837cd8433d2e265d982e31b6ddd765cf5d1 (patch) | |
| tree | b7cf326db1f6f019c96263e8a312793786c232f3 /apps/database.h | |
| parent | 04ed408de9ea576a3b22ee44bac9483ca27124c6 (diff) | |
| download | rockbox-929e7837cd8433d2e265d982e31b6ddd765cf5d1.zip rockbox-929e7837cd8433d2e265d982e31b6ddd765cf5d1.tar.gz rockbox-929e7837cd8433d2e265d982e31b6ddd765cf5d1.tar.bz2 rockbox-929e7837cd8433d2e265d982e31b6ddd765cf5d1.tar.xz | |
Restructurizing database code, seperating database code from dbtree code,
wrote the first basic functions to manipulate fileentries.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6359 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/database.h')
| -rw-r--r-- | apps/database.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/apps/database.h b/apps/database.h new file mode 100644 index 0000000..cdbd4d4 --- /dev/null +++ b/apps/database.h @@ -0,0 +1,98 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2005 by Michiel van der Kolk + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#ifndef DATABASE_H +#define DATABASE_H + +/* workaround for cygwin not defining endian macros */ +#if !defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN) && defined(_X86_) +#define LITTLE_ENDIAN +#endif + +#ifdef LITTLE_ENDIAN +#define BE32(_x_) (((_x_ & 0xff000000) >> 24) | \ + ((_x_ & 0x00ff0000) >> 8) | \ + ((_x_ & 0x0000ff00) << 8) | \ + ((_x_ & 0x000000ff) << 24)) +#else +#define BE32(_x_) _x_ +#endif + +#define SONGENTRY_SIZE (tagdbheader.songlen+12+tagdbheader.genrelen+4) +#define FILEENTRY_SIZE (tagdbheader.filelen+12) +#define ALBUMENTRY_SIZE (tagdbheader.albumlen+4+tagdbheader.songarraylen*4) +#define ARTISTENTRY_SIZE (tagdbheader.artistlen+tagdbheader.albumarraylen*4) + +#define FILERECORD2OFFSET(_x_) (tagdbheader.filestart + _x_ * FILEENTRY_SIZE) + +extern int tagdb_initialized; + +struct tagdb_header { + int version; + int artiststart; + int albumstart; + int songstart; + int filestart; + int artistcount; + int albumcount; + int songcount; + int filecount; + int artistlen; + int albumlen; + int songlen; + int genrelen; + int filelen; + int songarraylen; + int albumarraylen; + int rundbdirty; +}; + +struct file_entry { + char *name; + int hash; + int tagentry; + int rundbentry; +}; + +extern struct tagdb_header tagdbheader; +extern int tagdb_fd; + +int tagdb_init(void); +void tagdb_shutdown(void); + +#define TAGDB_VERSION 2 + +struct rundb_header { + int version; + int entrycount; +}; + +struct rundb_entry { + int fileentry; + int hash; + short rating; + short voladjust; + int playcount; + int lastplayed; +}; + +extern struct rundb_header rundbheader; + +#define RUNDB_VERSION 1 + +#endif |