📄 globals.h
字号:
// -*- C++ -*-
/* $Id: globals.h,v 1.1 2001/01/12 00:41:08 robert Exp $
* id3lib: a C++ library for creating and manipulating id3v1/v2 tags Copyright
* 1999, 2000 Scott Thomas Haug
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Library General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
* License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* The id3lib authors encourage improvements and optimisations to be sent to
* the id3lib coordinator. Please see the README file for details on where to
* send such submissions. See the AUTHORS file for a list of people who have
* contributed to id3lib. See the ChangeLog file for a list of changes to
* id3lib. These files are distributed with id3lib at
* http://download.sourceforge.net/id3lib/
*/
/** This file defines common macros, types, constants, and enums used
** throughout id3lib.
**/
#ifndef _ID3LIB_GLOBALS_H_
#define _ID3LIB_GLOBALS_H_
#include <stdlib.h>
#include "sized_types.h"
# define ID3D_INIT_DOUT()
# define ID3D_INIT_WARNING()
# define ID3D_INIT_NOTICE()
# define ID3D_NOTICE(x)
# define ID3D_WARNING(x)
/* id3lib version.
* we prefix variable declarations so they can
* properly get exported in windows dlls.
* (borrowed from glib.h http://www.gtk.org)
*/
#ifdef WIN32
# ifdef ID3LIB_COMPILATION
# define ID3_C_EXPORT extern _declspec(dllexport)
# else /* !ID3LIB_COMPILATION */
# define ID3_C_EXPORT extern _declspec(dllimport)
# endif /* !ID3LIB_COMPILATION */
#else /* !WIN32 */
# define ID3_C_EXPORT
#endif /* !WIN32 */
#define ID3_C_VAR extern
#ifndef __cplusplus
typedef int bool;
# define false (0)
# define true (!false)
#endif /* __cplusplus */
ID3_C_VAR const char * const ID3LIB_NAME;
ID3_C_VAR const char * const ID3LIB_RELEASE;
ID3_C_VAR const char * const ID3LIB_FULL_NAME;
ID3_C_VAR const int ID3LIB_MAJOR_VERSION;
ID3_C_VAR const int ID3LIB_MINOR_VERSION;
ID3_C_VAR const int ID3LIB_PATCH_VERSION;
ID3_C_VAR const int ID3LIB_INTERFACE_AGE;
ID3_C_VAR const int ID3LIB_BINARY_AGE;
#define ID3_TAGID "ID3"
#define ID3_TAGIDSIZE (3)
#define ID3_TAGHEADERSIZE (10)
/** String used for the description field of a comment tag converted from an
** id3v1 tag to an id3v2 tag
**
** \sa #ID3V1_Tag
**/
#define STR_V1_COMMENT_DESC "ID3v1 Comment"
typedef unsigned char uchar;
typedef short signed int ssint;
typedef short unsigned int suint;
typedef long signed int lsint;
typedef long unsigned int luint;
typedef long double ldoub;
typedef uint16 unicode_t;
typedef uint16 flags_t;
/* this needs to be done for compatibility with Sun Solaris */
#if !defined index_t
# define index_t size_t
#endif
#define NULL_UNICODE ((unicode_t) '\0')
/* These macros are used to make the C and C++ declarations for enums and
* structs have the same syntax. Basically, it allows C users to refer to an
* enum or a struct without prepending enum/struct.
*/
#ifdef __cplusplus
# define ID3_ENUM(E) enum E
# define ID3_STRUCT(S) struct S
#else
# define ID3_ENUM(E) typedef enum _ ## E E; enum _ ## E
# define ID3_STRUCT(S) typedef struct _ ## S S; struct _ ## S
#endif
/** \enum ID3_TextEnc
** Enumeration of the types of text encodings: ascii or unicode
**/
ID3_ENUM(ID3_TextEnc)
{
ID3TE_NONE = -1,
ID3TE_ISO8859_1,
ID3TE_UTF16,
ID3TE_UTF16BE,
ID3TE_UTF8,
ID3TE_NUMENCODINGS,
ID3TE_ASCII = ID3TE_ISO8859_1,
ID3TE_UNICODE = ID3TE_UTF16
};
/** Enumeration of the various id3 specifications
**/
ID3_ENUM(ID3_V1Spec)
{
ID3V1_0 = 0,
ID3V1_1,
ID3V1_NUMSPECS
};
ID3_ENUM(ID3_V2Spec)
{
ID3V2_UNKNOWN = -1,
ID3V2_2_0 = 0,
ID3V2_2_1,
ID3V2_3_0,
ID3V2_4_0,
ID3V2_EARLIEST = ID3V2_2_0,
ID3V2_LATEST = ID3V2_3_0
};
/** The various types of tags that id3lib can handle
**/
ID3_ENUM(ID3_TagType)
{
ID3TT_NONE = 0, /**< Represents an empty or non-existant tag */
ID3TT_ID3V1 = 1 << 0, /**< Represents an id3v1 or id3v1.1 tag */
ID3TT_ID3V2 = 1 << 1, /**< Represents an id3v2 tag */
ID3TT_LYRICS3 = 1 << 2, /**< Represents a Lyrics3 tag */
ID3TT_LYRICS3V2 = 1 << 3, /**< Represents a Lyrics3 v2.00 tag */
ID3TT_MUSICMATCH = 1 << 4, /**< Represents a MusicMatch tag */
/**< Represents a Lyrics3 tag (for backwards compatibility) */
ID3TT_LYRICS = ID3TT_LYRICS3,
/** Represents both id3 tags: id3v1 and id3v2 */
ID3TT_ID3 = ID3TT_ID3V1 | ID3TT_ID3V2,
/** Represents all possible types of tags */
ID3TT_ALL = ~ID3TT_NONE,
/** Represents all tag types that can be prepended to a file */
ID3TT_PREPENDED = ID3TT_ID3V2,
/** Represents all tag types that can be appended to a file */
ID3TT_APPENDED = ID3TT_ALL & ~ID3TT_ID3V2
};
/**
** Enumeration of the different types of fields in a frame.
**/
ID3_ENUM(ID3_FieldID)
{
ID3FN_NOFIELD = 0, /**< No field */
ID3FN_TEXTENC, /**< Text encoding (unicode or ASCII) */
ID3FN_TEXT, /**< Text field */
ID3FN_URL, /**< A URL */
ID3FN_DATA, /**< Data field */
ID3FN_DESCRIPTION, /**< Description field */
ID3FN_OWNER, /**< Owner field */
ID3FN_EMAIL, /**< Email field */
ID3FN_RATING, /**< Rating field */
ID3FN_FILENAME, /**< Filename field */
ID3FN_LANGUAGE, /**< Language field */
ID3FN_PICTURETYPE, /**< Picture type field */
ID3FN_IMAGEFORMAT, /**< Image format field */
ID3FN_MIMETYPE, /**< Mimetype field */
ID3FN_COUNTER, /**< Counter field */
ID3FN_ID, /**< Identifier/Symbol field */
ID3FN_VOLUMEADJ, /**< Volume adjustment field */
ID3FN_NUMBITS, /**< Number of bits field */
ID3FN_VOLCHGRIGHT, /**< Volume chage on the right channel */
ID3FN_VOLCHGLEFT, /**< Volume chage on the left channel */
ID3FN_PEAKVOLRIGHT, /**< Peak volume on the right channel */
ID3FN_PEAKVOLLEFT, /**< Peak volume on the left channel */
ID3FN_TIMESTAMPFORMAT,/**< SYLT Timestamp Format */
ID3FN_CONTENTTYPE, /**< SYLT content type */
ID3FN_LASTFIELDID /**< Last field placeholder */
};
/**
** Enumeration of the different types of frames recognized by id3lib
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -