Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c39a38af6 | |||
| bc77cffcd8 | |||
| 8f5c9a9c10 | |||
| cce512bbf3 | |||
| e08b922be3 | |||
| dfb082cdbf | |||
| 5183dfef22 | |||
| a8ba3db401 | |||
| 8b7be1aadf | |||
| b7c0a0fba8 | |||
| 37bbc82ee0 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,2 +1,5 @@
|
|||||||
ncmdump*.exe
|
*.exe
|
||||||
ncmdump
|
ncmdump
|
||||||
|
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
22
Makefile
22
Makefile
@@ -1,11 +1,23 @@
|
|||||||
|
default:
|
||||||
|
@echo "Please choose a platform: linux, macos, win32"
|
||||||
|
|
||||||
linux:
|
linux:
|
||||||
g++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag
|
g++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag -std=c++17
|
||||||
strip ncmdump
|
strip ncmdump
|
||||||
|
|
||||||
macos:
|
macos-intel:
|
||||||
clang++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag
|
clang++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag -std=c++17
|
||||||
|
strip ncmdump
|
||||||
|
|
||||||
|
macos-arm64:export CPATH=/opt/homebrew/include
|
||||||
|
macos-arm64:export LIBRARY_PATH=/opt/homebrew/lib
|
||||||
|
macos-arm64:
|
||||||
|
clang++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag -std=c++17
|
||||||
strip ncmdump
|
strip ncmdump
|
||||||
|
|
||||||
win32:
|
win32:
|
||||||
g++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag -Ltaglib/lib -Itaglib/include -static -O
|
g++ main.cpp cJSON.cpp aes.cpp ncmcrypt.cpp -o ncmdump -ltag -Ltaglib/lib -Itaglib/include -static -O -municode -std=c++17
|
||||||
strip ncmdump.exe
|
strip ncmdump.exe
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f ncmdump ncmdump.exe
|
||||||
57
README.md
57
README.md
@@ -1,17 +1,48 @@
|
|||||||
|
# ncmdump
|
||||||
|
|
||||||
|
使用本程序可将下载的网易云音乐缓存文件(ncm)转换为 mp3 或 flac 格式
|
||||||
|
|
||||||
## 简介
|
## 简介
|
||||||
|
|
||||||
该版本为最早的 C++ 版本,也是作者开发的市面上第一个支持 ncm 转换的程序
|
该版本为最早的 C++ 版本,也是作者开发的市面上第一个支持 ncm 转换的程序
|
||||||
|
|
||||||
源码复刻自 anonymous5l/ncmdump,感谢前辈的付出!
|
源码复刻自 anonymous5l/ncmdump,感谢前辈的付出!
|
||||||
做了 Windows 下的移植,修复了一些编译问题
|
做了 Windows 下的移植,修复了一些编译问题
|
||||||
|
|
||||||
## 便捷式传送门
|
## 传送门
|
||||||
|
|
||||||
2021年10月6日,原作者已经删库
|
2021年10月6日,原作者已经删库
|
||||||
|
|
||||||
## 依赖库及编译方法
|
## 使用
|
||||||
#### 依赖库
|
|
||||||
|
从 [Release](https://github.com/taurusxin/ncmdump/releases) 下载最新版本的对应系统的已编译好的二进制文件
|
||||||
|
|
||||||
|
使用 `-h` 或 `--help` 参数来打印帮助
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ncmdump -h
|
||||||
|
```
|
||||||
|
|
||||||
|
命令行下输入一个或多个文件
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ncmdump file1 file2...
|
||||||
|
```
|
||||||
|
|
||||||
|
你可以使用 `-d` 参数来指定一个文件夹,对文件夹下的所有文件批量处理
|
||||||
|
|
||||||
|
```shell
|
||||||
|
ncmdump -d folder
|
||||||
|
```
|
||||||
|
|
||||||
|
## 依赖库及不同平台编译方法
|
||||||
|
|
||||||
|
### 依赖库
|
||||||
|
|
||||||
* taglib
|
* taglib
|
||||||
|
|
||||||
### Linux / macOS
|
### Linux / macOS
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# CentOS
|
# CentOS
|
||||||
yum install taglib-devel
|
yum install taglib-devel
|
||||||
@@ -21,9 +52,13 @@ make linux
|
|||||||
apt install libtag1-dev
|
apt install libtag1-dev
|
||||||
make linux
|
make linux
|
||||||
|
|
||||||
# macOS
|
# macOS with Intel chip
|
||||||
brew install taglib
|
brew install taglib
|
||||||
make macos
|
make macos-intel
|
||||||
|
|
||||||
|
# macOS with Apple Silicon (M1 / M2)
|
||||||
|
brew install taglib
|
||||||
|
make macos-arm64
|
||||||
```
|
```
|
||||||
|
|
||||||
注意:Linux / macOS 为动态库支持,Linux 下静态编译需要手动编译 taglib 静态库,macOS 原生库不支持静态链接
|
注意:Linux / macOS 为动态库支持,Linux 下静态编译需要手动编译 taglib 静态库,macOS 原生库不支持静态链接
|
||||||
@@ -32,9 +67,10 @@ make macos
|
|||||||
|
|
||||||
#### MinGW
|
#### MinGW
|
||||||
|
|
||||||
因为部分代码(例如常量引用等)在 msvc 下面编译不通过,本项目需要使用 MinGW 编译
|
~~因为部分代码(例如常量引用等)在 msvc 下面编译不通过,本项目需要使用 MinGW 编译~~
|
||||||
|
已经修改部分代码使得支持 msvc 编译,详见下面的 Visual Studio 部分
|
||||||
|
|
||||||
下载 [mingw-w64](https://winlibs.com/) 的 Windows 版本,这里推荐从 winlibs 这个网站下载,编译器版本始终保持最新
|
下载 mingw-w64 的 Windows 版本,这里推荐从 [winlibs](https://winlibs.com/) 这个网站下载,编译器版本始终跟随上游保持最新
|
||||||
|
|
||||||
将 mingw64/bin 添加到系统环境变量
|
将 mingw64/bin 添加到系统环境变量
|
||||||
|
|
||||||
@@ -54,7 +90,8 @@ git clone https://github.com/taurusxin/ncmdump && cd ncmdump
|
|||||||
make win32
|
make win32
|
||||||
```
|
```
|
||||||
|
|
||||||
## 使用
|
#### Visual Studio
|
||||||
1. 命令行下使用 `ncmdump [files]...`
|
|
||||||
|
|
||||||
2. 直接 ncm 拖拽文件到二进制文件上
|
注意**VS的源代码还未上传,请先使用 MinGW 编译**
|
||||||
|
|
||||||
|
使用 git 切换到 msvc 分支,使用 Visual Studio 打开 ncmdump.sln,编译即可
|
||||||
|
|||||||
1
base64.h
1
base64.h
@@ -1,5 +1,6 @@
|
|||||||
#ifndef _MACARON_BASE64_H_
|
#ifndef _MACARON_BASE64_H_
|
||||||
#define _MACARON_BASE64_H_
|
#define _MACARON_BASE64_H_
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|||||||
131
main.cpp
131
main.cpp
@@ -1,28 +1,117 @@
|
|||||||
#include "ncmcrypt.h"
|
#include "ncmcrypt.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
#include <vector>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
#ifdef _WIN32
|
||||||
|
#include <Windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
if (argc <= 1) {
|
namespace fs = std::filesystem;
|
||||||
std::cout << "Please input file path!" << std::endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
void displayHelp() {
|
||||||
int i;
|
std::cout << "Usage: ncmdump [-d] [-h] file1 file2 ..." << std::endl;
|
||||||
for (i = 1; i < argc; i++) {
|
std::cout << "Options:" << std::endl;
|
||||||
NeteaseCrypt crypt(argv[i]);
|
std::cout << " -d Process files in a folder (requires folder path)" << std::endl;
|
||||||
crypt.Dump();
|
std::cout << " -h, --help Display this help message" << std::endl;
|
||||||
crypt.FixMetadata();
|
}
|
||||||
|
|
||||||
std::cout << crypt.dumpFilepath() << std::endl;
|
|
||||||
}
|
|
||||||
} catch (std::invalid_argument e) {
|
|
||||||
std::cout << "Exception: " << e.what() << std::endl;
|
|
||||||
} catch (...) {
|
|
||||||
std::cout << "Unexcept exception!" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
void processFile(const fs::path& filePath) {
|
||||||
}
|
if (fs::exists(filePath) == false) {
|
||||||
|
std::cerr << "Error: file '" << filePath.string() << "' does not exist." << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
NeteaseCrypt crypt(filePath.string());
|
||||||
|
crypt.Dump();
|
||||||
|
crypt.FixMetadata();
|
||||||
|
|
||||||
|
std::cout << "Done: '" << crypt.dumpFilepath().string() << "'" << std::endl;
|
||||||
|
} catch (const std::invalid_argument& e) {
|
||||||
|
std::cout << "Exception: '" << filePath << "'" << e.what() << std::endl;
|
||||||
|
} catch (...) {
|
||||||
|
std::cout << "Unexpected exception while processing file: " << filePath << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void processFilesInFolder(const fs::path& folderPath) {
|
||||||
|
for (const auto& entry : fs::directory_iterator(folderPath)) {
|
||||||
|
if (fs::is_regular_file(entry.status())) {
|
||||||
|
processFile(entry.path());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
int wmain(int argc, wchar_t* argv[])
|
||||||
|
#else
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
SetConsoleOutputCP(CP_UTF8);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (argc <= 1) {
|
||||||
|
displayHelp();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<fs::path> files;
|
||||||
|
bool processFolders = false;
|
||||||
|
|
||||||
|
bool folderProvided = false;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define COMPARE_STR(s1, s2) (wcscmp(s1, s2) == 0)
|
||||||
|
#define HELP_SHORT L"-h"
|
||||||
|
#define HELP_LONG L"--help"
|
||||||
|
#define FOLDER L"-d"
|
||||||
|
#else
|
||||||
|
#define COMPARE_STR(s1, s2) (strcmp(s1, s2) == 0)
|
||||||
|
#define HELP_SHORT "-h"
|
||||||
|
#define HELP_LONG "--help"
|
||||||
|
#define FOLDER "-d"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (int i = 1; i < argc; ++i) {
|
||||||
|
if (COMPARE_STR(argv[i], HELP_SHORT) || COMPARE_STR(argv[i], HELP_LONG)) {
|
||||||
|
displayHelp();
|
||||||
|
return 0;
|
||||||
|
} else if (COMPARE_STR(argv[i], FOLDER)) {
|
||||||
|
processFolders = true;
|
||||||
|
if (i + 1 < argc && argv[i + 1][0] != '-') {
|
||||||
|
folderProvided = true;
|
||||||
|
processFilesInFolder(argv[i + 1]);
|
||||||
|
// Skip the folder name
|
||||||
|
++i;
|
||||||
|
} else {
|
||||||
|
std::cerr << "Error: -d option requires a folder path." << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
#ifdef _WIN32
|
||||||
|
int multiByteStrSize = WideCharToMultiByte(CP_UTF8, 0, argv[1], -1, NULL, 0, NULL, NULL);
|
||||||
|
char *multiByteStr = new char[multiByteStrSize];
|
||||||
|
WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, multiByteStr, multiByteStrSize, NULL, NULL);
|
||||||
|
fs::path path(multiByteStr);
|
||||||
|
#else
|
||||||
|
fs::path path(argv[i]);
|
||||||
|
#endif
|
||||||
|
files.push_back(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auto& file : files) {
|
||||||
|
if (processFolders && fs::is_directory(file)) {
|
||||||
|
processFilesInFolder(file);
|
||||||
|
} else {
|
||||||
|
processFile(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
44
ncmcrypt.cpp
44
ncmcrypt.cpp
@@ -13,6 +13,8 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
const unsigned char NeteaseCrypt::sCoreKey[17] = {0x68, 0x7A, 0x48, 0x52, 0x41, 0x6D, 0x73, 0x6F, 0x35, 0x6B, 0x49, 0x6E, 0x62, 0x61, 0x78, 0x57, 0};
|
const unsigned char NeteaseCrypt::sCoreKey[17] = {0x68, 0x7A, 0x48, 0x52, 0x41, 0x6D, 0x73, 0x6F, 0x35, 0x6B, 0x49, 0x6E, 0x62, 0x61, 0x78, 0x57, 0};
|
||||||
const unsigned char NeteaseCrypt::sModifyKey[17] = {0x23, 0x31, 0x34, 0x6C, 0x6A, 0x6B, 0x5F, 0x21, 0x5C, 0x5D, 0x26, 0x30, 0x55, 0x3C, 0x27, 0x28, 0};
|
const unsigned char NeteaseCrypt::sModifyKey[17] = {0x23, 0x31, 0x34, 0x6C, 0x6A, 0x6B, 0x5F, 0x21, 0x5C, 0x5D, 0x26, 0x30, 0x55, 0x3C, 0x27, 0x28, 0};
|
||||||
|
|
||||||
@@ -52,14 +54,6 @@ static void replace(std::string& str, const std::string& from, const std::string
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string fileNameWithoutExt(const std::string& str)
|
|
||||||
{
|
|
||||||
size_t lastPath = str.find_last_of("/\\");
|
|
||||||
std::string path = str.substr(lastPath+1);
|
|
||||||
size_t lastExt = path.find_last_of(".");
|
|
||||||
return path.substr(0, lastExt);
|
|
||||||
}
|
|
||||||
|
|
||||||
NeteaseMusicMetadata::~NeteaseMusicMetadata() {
|
NeteaseMusicMetadata::~NeteaseMusicMetadata() {
|
||||||
cJSON_Delete(mRaw);
|
cJSON_Delete(mRaw);
|
||||||
}
|
}
|
||||||
@@ -112,13 +106,13 @@ NeteaseMusicMetadata::NeteaseMusicMetadata(cJSON* raw) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NeteaseCrypt::openFile(std::string const& path) {
|
bool NeteaseCrypt::openFile(std::filesystem::path const& path) {
|
||||||
try {
|
mFile.open(path, std::ios::in | std::ios::binary);
|
||||||
mFile.open(path, std::ios::in | std::ios::binary);
|
if (!mFile.is_open()) {
|
||||||
} catch (...) {
|
return false;
|
||||||
return false;
|
} else {
|
||||||
}
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NeteaseCrypt::isNcmFile() {
|
bool NeteaseCrypt::isNcmFile() {
|
||||||
@@ -143,7 +137,7 @@ int NeteaseCrypt::read(char *s, std::streamsize n) {
|
|||||||
int gcount = mFile.gcount();
|
int gcount = mFile.gcount();
|
||||||
|
|
||||||
if (gcount <= 0) {
|
if (gcount <= 0) {
|
||||||
throw std::invalid_argument("can't read file");
|
throw std::invalid_argument(" can't read file");
|
||||||
}
|
}
|
||||||
|
|
||||||
return gcount;
|
return gcount;
|
||||||
@@ -179,7 +173,7 @@ std::string NeteaseCrypt::mimeType(std::string& data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void NeteaseCrypt::FixMetadata() {
|
void NeteaseCrypt::FixMetadata() {
|
||||||
if (mDumpFilepath.length() <= 0) {
|
if (mDumpFilepath.string().length() <= 0) {
|
||||||
throw std::invalid_argument("must dump before");
|
throw std::invalid_argument("must dump before");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +237,7 @@ void NeteaseCrypt::Dump() {
|
|||||||
// replace(mDumpFilepath, ">", ">");
|
// replace(mDumpFilepath, ">", ">");
|
||||||
// replace(mDumpFilepath, "|", "|");
|
// replace(mDumpFilepath, "|", "|");
|
||||||
// } else {
|
// } else {
|
||||||
mDumpFilepath = fileNameWithoutExt(mFilepath);
|
mDumpFilepath = mFilepath;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
n = 0x8000;
|
n = 0x8000;
|
||||||
@@ -265,11 +259,11 @@ void NeteaseCrypt::Dump() {
|
|||||||
// identify format
|
// identify format
|
||||||
// ID3 format mp3
|
// ID3 format mp3
|
||||||
if (buffer[0] == 0x49 && buffer[1] == 0x44 && buffer[2] == 0x33) {
|
if (buffer[0] == 0x49 && buffer[1] == 0x44 && buffer[2] == 0x33) {
|
||||||
mDumpFilepath += ".mp3";
|
mDumpFilepath.replace_extension(".mp3");
|
||||||
mFormat = NeteaseCrypt::MP3;
|
mFormat = NeteaseCrypt::MP3;
|
||||||
} else {
|
} else {
|
||||||
mDumpFilepath += ".flac";
|
mDumpFilepath.replace_extension(".flac");
|
||||||
mFormat = NeteaseCrypt::FLAC;
|
mFormat = NeteaseCrypt::FLAC;
|
||||||
}
|
}
|
||||||
|
|
||||||
output.open(mDumpFilepath, output.out | output.binary);
|
output.open(mDumpFilepath, output.out | output.binary);
|
||||||
@@ -290,17 +284,17 @@ NeteaseCrypt::~NeteaseCrypt() {
|
|||||||
mFile.close();
|
mFile.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
NeteaseCrypt::NeteaseCrypt(std::string const& path) {
|
NeteaseCrypt::NeteaseCrypt(std::filesystem::path const& path) {
|
||||||
if (!openFile(path)) {
|
if (!openFile(path)) {
|
||||||
throw std::invalid_argument("can't open file");
|
throw std::invalid_argument(" can't open file");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isNcmFile()) {
|
if (!isNcmFile()) {
|
||||||
throw std::invalid_argument("not netease protected file");
|
throw std::invalid_argument(" not netease protected file");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mFile.seekg(2, mFile.cur)) {
|
if (!mFile.seekg(2, mFile.cur)) {
|
||||||
throw std::invalid_argument("can't seek file");
|
throw std::invalid_argument(" can't seek file");
|
||||||
}
|
}
|
||||||
|
|
||||||
mFilepath = path;
|
mFilepath = path;
|
||||||
|
|||||||
14
ncmcrypt.h
14
ncmcrypt.h
@@ -6,6 +6,8 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
class NeteaseMusicMetadata {
|
class NeteaseMusicMetadata {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -40,8 +42,8 @@ private:
|
|||||||
enum NcmFormat { MP3, FLAC };
|
enum NcmFormat { MP3, FLAC };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string mFilepath;
|
std::filesystem::path mFilepath;
|
||||||
std::string mDumpFilepath;
|
std::filesystem::path mDumpFilepath;
|
||||||
NcmFormat mFormat;
|
NcmFormat mFormat;
|
||||||
std::string mImageData;
|
std::string mImageData;
|
||||||
std::ifstream mFile;
|
std::ifstream mFile;
|
||||||
@@ -50,17 +52,17 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool isNcmFile();
|
bool isNcmFile();
|
||||||
bool openFile(std::string const&);
|
bool openFile(std::filesystem::path const&);
|
||||||
int read(char *s, std::streamsize n);
|
int read(char *s, std::streamsize n);
|
||||||
void buildKeyBox(unsigned char *key, int keyLen);
|
void buildKeyBox(unsigned char *key, int keyLen);
|
||||||
std::string mimeType(std::string& data);
|
std::string mimeType(std::string& data);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const std::string& filepath() const { return mFilepath; }
|
const std::filesystem::path& filepath() const { return mFilepath; }
|
||||||
const std::string& dumpFilepath() const { return mDumpFilepath; }
|
const std::filesystem::path& dumpFilepath() const { return mDumpFilepath; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NeteaseCrypt(std::string const&);
|
NeteaseCrypt(std::filesystem::path const&);
|
||||||
~NeteaseCrypt();
|
~NeteaseCrypt();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
# taglib
|
|
||||||
|
|
||||||
这是 Windows 下的 taglib 静态库,使用 [winlibs](https://winlibs.com/) 与 CMake 进行编译,编译器版本是 `GCC 11.2.0 + LLVM/Clang/LLD/LLDB 13.0.0 + MinGW-w64 9.0.0 - UCRT - release 2` (截止2021年10月的最新版本)
|
|
||||||
@@ -27,10 +27,10 @@ goto theend
|
|||||||
* to allow for static, shared or debug builds.
|
* to allow for static, shared or debug builds.
|
||||||
* It would be preferable if the top level CMakeLists.txt provided the library name during config. ??
|
* It would be preferable if the top level CMakeLists.txt provided the library name during config. ??
|
||||||
:doit
|
:doit
|
||||||
if /i "%1#" == "--libs#" echo -LC:/taglib/lib -llibtag
|
if /i "%1#" == "--libs#" echo -LC:/Users/TaurusXin/Downloads/ncmdump/taglib/lib -llibtag
|
||||||
if /i "%1#" == "--cflags#" echo -IC:/taglib/include -IC:/taglib/include/taglib
|
if /i "%1#" == "--cflags#" echo -IC:/Users/TaurusXin/Downloads/ncmdump/taglib/include -IC:/Users/TaurusXin/Downloads/ncmdump/taglib/include/taglib
|
||||||
if /i "%1#" == "--version#" echo 1.12
|
if /i "%1#" == "--version#" echo 1.13.1
|
||||||
if /i "%1#" == "--prefix#" echo C:/taglib
|
if /i "%1#" == "--prefix#" echo C:/Users/TaurusXin/Downloads/ncmdump/taglib
|
||||||
|
|
||||||
:theend
|
:theend
|
||||||
|
|
||||||
|
|||||||
@@ -150,8 +150,8 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace AIFF
|
||||||
}
|
} // namespace RIFF
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace TagLib {
|
|||||||
* Create an instance of AIFF::Properties with the data read from the
|
* Create an instance of AIFF::Properties with the data read from the
|
||||||
* ByteVector \a data.
|
* ByteVector \a data.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use Properties(File *, ReadStyle).
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED Properties(const ByteVector &data, ReadStyle style);
|
TAGLIB_DEPRECATED Properties(const ByteVector &data, ReadStyle style);
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of bitsPerSample().
|
* \note This method is just an alias of bitsPerSample().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use bitsPerSample().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED int sampleWidth() const;
|
TAGLIB_DEPRECATED int sampleWidth() const;
|
||||||
|
|
||||||
@@ -159,8 +159,8 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace AIFF
|
||||||
}
|
} // namespace RIFF
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace APE
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ namespace TagLib {
|
|||||||
FooterPrivate *d;
|
FooterPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace APE
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -31,9 +31,7 @@
|
|||||||
#include "tstringlist.h"
|
#include "tstringlist.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace APE {
|
namespace APE {
|
||||||
|
|
||||||
//! An implementation of APE-items
|
//! An implementation of APE-items
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -215,10 +213,7 @@ namespace TagLib {
|
|||||||
class ItemPrivate;
|
class ItemPrivate;
|
||||||
ItemPrivate *d;
|
ItemPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace APE
|
||||||
|
} // namespace TagLib
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ namespace TagLib {
|
|||||||
* Create an instance of APE::Properties with the data read from the
|
* Create an instance of APE::Properties with the data read from the
|
||||||
* APE::File \a file.
|
* APE::File \a file.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use Properties(File *, long, ReadStyle).
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED Properties(File *file, ReadStyle style = Average);
|
TAGLIB_DEPRECATED Properties(File *file, ReadStyle style = Average);
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace APE
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace APE
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,10 +33,8 @@
|
|||||||
|
|
||||||
namespace TagLib
|
namespace TagLib
|
||||||
{
|
{
|
||||||
|
|
||||||
namespace ASF
|
namespace ASF
|
||||||
{
|
{
|
||||||
|
|
||||||
class File;
|
class File;
|
||||||
class Picture;
|
class Picture;
|
||||||
|
|
||||||
@@ -201,8 +199,7 @@ namespace TagLib
|
|||||||
class AttributePrivate;
|
class AttributePrivate;
|
||||||
AttributePrivate *d;
|
AttributePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ASF
|
||||||
|
} // namespace TagLib
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,10 +33,8 @@
|
|||||||
#include "asftag.h"
|
#include "asftag.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
//! An implementation of ASF (WMA) metadata
|
//! An implementation of ASF (WMA) metadata
|
||||||
namespace ASF {
|
namespace ASF {
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* This implements and provides an interface for ASF files to the
|
* This implements and provides an interface for ASF files to the
|
||||||
* TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing
|
* TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing
|
||||||
@@ -130,9 +128,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace ASF
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ namespace TagLib
|
|||||||
class PicturePrivate;
|
class PicturePrivate;
|
||||||
PicturePrivate *d;
|
PicturePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ASF
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif // ASFPICTURE_H
|
#endif // ASFPICTURE_H
|
||||||
|
|||||||
@@ -31,9 +31,7 @@
|
|||||||
#include "taglib_export.h"
|
#include "taglib_export.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace ASF {
|
namespace ASF {
|
||||||
|
|
||||||
//! An implementation of ASF audio properties
|
//! An implementation of ASF audio properties
|
||||||
class TAGLIB_EXPORT Properties : public AudioProperties
|
class TAGLIB_EXPORT Properties : public AudioProperties
|
||||||
{
|
{
|
||||||
@@ -86,7 +84,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -178,9 +176,6 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace ASF
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -152,7 +152,8 @@ namespace TagLib {
|
|||||||
virtual bool isEmpty() const;
|
virtual bool isEmpty() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use attributeListMap() const, contains(), removeItem(),
|
||||||
|
* attribute(), setAttribute(), addAttribute().
|
||||||
*/
|
*/
|
||||||
AttributeListMap &attributeListMap();
|
AttributeListMap &attributeListMap();
|
||||||
|
|
||||||
@@ -205,6 +206,6 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ASF
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ namespace TagLib {
|
|||||||
AttachedPictureFrameV22(const ByteVector &data, Header *h);
|
AttachedPictureFrameV22(const ByteVector &data, Header *h);
|
||||||
friend class FrameFactory;
|
friend class FrameFactory;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -122,6 +122,6 @@ namespace TagLib {
|
|||||||
AudioPropertiesPrivate *d;
|
AudioPropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ namespace TagLib {
|
|||||||
class ChapterFramePrivate;
|
class ChapterFramePrivate;
|
||||||
ChapterFramePrivate *d;
|
ChapterFramePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -174,6 +174,6 @@ namespace TagLib {
|
|||||||
CommentsFramePrivate *d;
|
CommentsFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -180,6 +180,6 @@ namespace TagLib {
|
|||||||
EventTimingCodesFramePrivate *d;
|
EventTimingCodesFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -108,6 +108,16 @@ namespace TagLib {
|
|||||||
audioPropertiesStyle = AudioProperties::Average) const = 0;
|
audioPropertiesStyle = AudioProperties::Average) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TAGLIB_EXPORT StreamTypeResolver : public FileTypeResolver
|
||||||
|
{
|
||||||
|
TAGLIB_IGNORE_MISSING_DESTRUCTOR
|
||||||
|
public:
|
||||||
|
virtual File *createFileFromStream(IOStream *stream,
|
||||||
|
bool readAudioProperties = true,
|
||||||
|
AudioProperties::ReadStyle
|
||||||
|
audioPropertiesStyle = AudioProperties::Average) const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Creates a null FileRef.
|
* Creates a null FileRef.
|
||||||
*/
|
*/
|
||||||
@@ -268,7 +278,7 @@ namespace TagLib {
|
|||||||
* \note You generally shouldn't use this method, but instead the constructor
|
* \note You generally shouldn't use this method, but instead the constructor
|
||||||
* directly.
|
* directly.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use FileRef(FileName, bool, AudioProperties::ReadStyle).
|
||||||
*/
|
*/
|
||||||
static File *create(FileName fileName,
|
static File *create(FileName fileName,
|
||||||
bool readAudioProperties = true,
|
bool readAudioProperties = true,
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ namespace TagLib {
|
|||||||
* when
|
* when
|
||||||
*
|
*
|
||||||
* \see ID3v2FrameFactory
|
* \see ID3v2FrameFactory
|
||||||
* \deprecated This value should be passed in via the constructor
|
* \deprecated This value should be passed in via the constructor.
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
|
TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace FLAC
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -31,9 +31,7 @@
|
|||||||
#include "taglib_export.h"
|
#include "taglib_export.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace FLAC {
|
namespace FLAC {
|
||||||
|
|
||||||
class TAGLIB_EXPORT MetadataBlock
|
class TAGLIB_EXPORT MetadataBlock
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -67,9 +65,6 @@ namespace TagLib {
|
|||||||
class MetadataBlockPrivate;
|
class MetadataBlockPrivate;
|
||||||
MetadataBlockPrivate *d;
|
MetadataBlockPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace FLAC
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,9 +33,7 @@
|
|||||||
#include "flacmetadatablock.h"
|
#include "flacmetadatablock.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace FLAC {
|
namespace FLAC {
|
||||||
|
|
||||||
class TAGLIB_EXPORT Picture : public MetadataBlock
|
class TAGLIB_EXPORT Picture : public MetadataBlock
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -200,9 +198,6 @@ namespace TagLib {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef List<Picture> PictureList;
|
typedef List<Picture> PictureList;
|
||||||
|
} // namespace FLAC
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of bitsPerSample().
|
* \note This method is just an alias of bitsPerSample().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use bitsPerSample().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED int sampleWidth() const;
|
TAGLIB_DEPRECATED int sampleWidth() const;
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace FLAC
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ namespace TagLib {
|
|||||||
class GeneralEncapsulatedObjectFramePrivate;
|
class GeneralEncapsulatedObjectFramePrivate;
|
||||||
GeneralEncapsulatedObjectFramePrivate *d;
|
GeneralEncapsulatedObjectFramePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ namespace TagLib {
|
|||||||
* will be returned.
|
* will be returned.
|
||||||
*/
|
*/
|
||||||
int TAGLIB_EXPORT genreIndex(const String &name);
|
int TAGLIB_EXPORT genreIndex(const String &name);
|
||||||
}
|
} // namespace ID3v1
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v1
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace TagLib {
|
|||||||
v3 = 3, //<! ID3v2.3
|
v3 = 3, //<! ID3v2.3
|
||||||
v4 = 4 //<! ID3v2.4
|
v4 = 4 //<! ID3v2.4
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -88,6 +88,6 @@ namespace TagLib {
|
|||||||
ExtendedHeaderPrivate *d;
|
ExtendedHeaderPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -77,6 +77,6 @@ namespace TagLib {
|
|||||||
FooterPrivate *d;
|
FooterPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ namespace TagLib {
|
|||||||
{
|
{
|
||||||
friend class Tag;
|
friend class Tag;
|
||||||
friend class FrameFactory;
|
friend class FrameFactory;
|
||||||
|
friend class TableOfContentsFrame;
|
||||||
|
friend class ChapterFrame;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -503,7 +505,7 @@ namespace TagLib {
|
|||||||
ByteVector render() const;
|
ByteVector render() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use fileAlterPreservation().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED bool frameAlterPreservation() const;
|
TAGLIB_DEPRECATED bool frameAlterPreservation() const;
|
||||||
|
|
||||||
@@ -515,7 +517,7 @@ namespace TagLib {
|
|||||||
HeaderPrivate *d;
|
HeaderPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ namespace TagLib {
|
|||||||
TAGLIB_DEPRECATED Frame *createFrame(const ByteVector &data, unsigned int version = 4) const;
|
TAGLIB_DEPRECATED Frame *createFrame(const ByteVector &data, unsigned int version = 4) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use createFrame(const ByteVector &, const Header *) const.
|
||||||
*/
|
*/
|
||||||
// BIC: remove
|
// BIC: remove
|
||||||
Frame *createFrame(const ByteVector &data, Header *tagHeader) const;
|
Frame *createFrame(const ByteVector &data, Header *tagHeader) const;
|
||||||
@@ -163,7 +163,7 @@ namespace TagLib {
|
|||||||
FrameFactoryPrivate *d;
|
FrameFactoryPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ namespace TagLib {
|
|||||||
HeaderPrivate *d;
|
HeaderPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -62,9 +62,9 @@ namespace TagLib {
|
|||||||
* Convert the data from unsynchronized data to its original format.
|
* Convert the data from unsynchronized data to its original format.
|
||||||
*/
|
*/
|
||||||
TAGLIB_EXPORT ByteVector decode(const ByteVector &input);
|
TAGLIB_EXPORT ByteVector decode(const ByteVector &input);
|
||||||
}
|
} // namespace SynchData
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ namespace TagLib {
|
|||||||
ByteVector render() const;
|
ByteVector render() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use render(Version) const.
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED ByteVector render(int version) const;
|
TAGLIB_DEPRECATED ByteVector render(int version) const;
|
||||||
|
|
||||||
@@ -405,7 +405,7 @@ namespace TagLib {
|
|||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -186,7 +186,8 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
}}
|
} // namespace Info
|
||||||
}
|
} // namespace RIFF
|
||||||
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace IT
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace IT
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -34,9 +34,7 @@
|
|||||||
#include "modproperties.h"
|
#include "modproperties.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace Mod {
|
namespace Mod {
|
||||||
|
|
||||||
class TAGLIB_EXPORT File : public TagLib::Mod::FileBase
|
class TAGLIB_EXPORT File : public TagLib::Mod::FileBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -106,9 +104,6 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace Mod
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -35,9 +35,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace Mod {
|
namespace Mod {
|
||||||
|
|
||||||
class TAGLIB_EXPORT FileBase : public TagLib::File
|
class TAGLIB_EXPORT FileBase : public TagLib::File
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@@ -58,9 +56,6 @@ namespace TagLib {
|
|||||||
bool readU16B(unsigned short &number);
|
bool readU16B(unsigned short &number);
|
||||||
bool readU32B(unsigned long &number);
|
bool readU32B(unsigned long &number);
|
||||||
};
|
};
|
||||||
|
} // namespace Mod
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -30,9 +30,7 @@
|
|||||||
#include "audioproperties.h"
|
#include "audioproperties.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace Mod {
|
namespace Mod {
|
||||||
|
|
||||||
class TAGLIB_EXPORT Properties : public AudioProperties
|
class TAGLIB_EXPORT Properties : public AudioProperties
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -63,9 +61,6 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace Mod
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -29,9 +29,7 @@
|
|||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace Mod {
|
namespace Mod {
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Tags for module files (Mod, S3M, IT, XM).
|
* Tags for module files (Mod, S3M, IT, XM).
|
||||||
*
|
*
|
||||||
@@ -186,9 +184,6 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace Mod
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -34,9 +34,7 @@
|
|||||||
#include "tlist.h"
|
#include "tlist.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace MP4 {
|
namespace MP4 {
|
||||||
|
|
||||||
class Atom;
|
class Atom;
|
||||||
typedef TagLib::List<Atom *> AtomList;
|
typedef TagLib::List<Atom *> AtomList;
|
||||||
|
|
||||||
@@ -74,7 +72,7 @@ namespace TagLib {
|
|||||||
|
|
||||||
typedef TagLib::List<AtomData> AtomDataList;
|
typedef TagLib::List<AtomData> AtomDataList;
|
||||||
|
|
||||||
class Atom
|
class TAGLIB_EXPORT Atom
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Atom(File *file);
|
Atom(File *file);
|
||||||
@@ -88,11 +86,11 @@ namespace TagLib {
|
|||||||
AtomList children;
|
AtomList children;
|
||||||
private:
|
private:
|
||||||
static const int numContainers = 11;
|
static const int numContainers = 11;
|
||||||
static const char *containers[11];
|
static const char *const containers[11];
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Root-level atoms
|
//! Root-level atoms
|
||||||
class Atoms
|
class TAGLIB_EXPORT Atoms
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Atoms(File *file);
|
Atoms(File *file);
|
||||||
@@ -101,10 +99,8 @@ namespace TagLib {
|
|||||||
AtomList path(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0);
|
AtomList path(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0);
|
||||||
AtomList atoms;
|
AtomList atoms;
|
||||||
};
|
};
|
||||||
|
} // namespace MP4
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -32,9 +32,7 @@
|
|||||||
#include "mp4atom.h"
|
#include "mp4atom.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace MP4 {
|
namespace MP4 {
|
||||||
|
|
||||||
class TAGLIB_EXPORT CoverArt
|
class TAGLIB_EXPORT CoverArt
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -76,9 +74,6 @@ namespace TagLib {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef List<CoverArt> CoverArtList;
|
typedef List<CoverArt> CoverArtList;
|
||||||
|
} // namespace MP4
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -33,10 +33,8 @@
|
|||||||
#include "mp4tag.h"
|
#include "mp4tag.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
//! An implementation of MP4 (AAC, ALAC, ...) metadata
|
//! An implementation of MP4 (AAC, ALAC, ...) metadata
|
||||||
namespace MP4 {
|
namespace MP4 {
|
||||||
|
|
||||||
class Atoms;
|
class Atoms;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -48,6 +46,19 @@ namespace TagLib {
|
|||||||
class TAGLIB_EXPORT File : public TagLib::File
|
class TAGLIB_EXPORT File : public TagLib::File
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
* This set of flags is used for strip() and is suitable for
|
||||||
|
* being OR-ed together.
|
||||||
|
*/
|
||||||
|
enum TagTypes {
|
||||||
|
//! Empty set. Matches no tag types.
|
||||||
|
NoTags = 0x0000,
|
||||||
|
//! Matches MP4 tags.
|
||||||
|
MP4 = 0x0001,
|
||||||
|
//! Matches all tag types.
|
||||||
|
AllTags = 0xffff
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Constructs an MP4 file from \a file. If \a readProperties is true the
|
* Constructs an MP4 file from \a file. If \a readProperties is true the
|
||||||
* file's audio properties will also be read.
|
* file's audio properties will also be read.
|
||||||
@@ -114,6 +125,15 @@ namespace TagLib {
|
|||||||
*/
|
*/
|
||||||
bool save();
|
bool save();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* This will strip the tags that match the OR-ed together TagTypes from the
|
||||||
|
* file. By default it strips all tags. It returns true if the tags are
|
||||||
|
* successfully stripped.
|
||||||
|
*
|
||||||
|
* \note This will update the file immediately.
|
||||||
|
*/
|
||||||
|
bool strip(int tags = AllTags);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns whether or not the file on disk actually has an MP4 tag, or the
|
* Returns whether or not the file on disk actually has an MP4 tag, or the
|
||||||
* file has a Metadata Item List (ilst) atom.
|
* file has a Metadata Item List (ilst) atom.
|
||||||
@@ -135,9 +155,6 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace MP4
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -31,9 +31,7 @@
|
|||||||
#include "taglib_export.h"
|
#include "taglib_export.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace MP4 {
|
namespace MP4 {
|
||||||
|
|
||||||
class TAGLIB_EXPORT Item
|
class TAGLIB_EXPORT Item
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -85,9 +83,6 @@ namespace TagLib {
|
|||||||
class ItemPrivate;
|
class ItemPrivate;
|
||||||
ItemPrivate *d;
|
ItemPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace MP4
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -30,9 +30,7 @@
|
|||||||
#include "audioproperties.h"
|
#include "audioproperties.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace MP4 {
|
namespace MP4 {
|
||||||
|
|
||||||
class Atoms;
|
class Atoms;
|
||||||
class File;
|
class File;
|
||||||
|
|
||||||
@@ -55,7 +53,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -112,9 +110,6 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace MP4
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -36,11 +36,9 @@
|
|||||||
#include "mp4item.h"
|
#include "mp4item.h"
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
namespace MP4 {
|
namespace MP4 {
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use ItemMap.
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED typedef TagLib::Map<String, Item> ItemListMap;
|
TAGLIB_DEPRECATED typedef TagLib::Map<String, Item> ItemListMap;
|
||||||
typedef TagLib::Map<String, Item> ItemMap;
|
typedef TagLib::Map<String, Item> ItemMap;
|
||||||
@@ -72,7 +70,7 @@ namespace TagLib {
|
|||||||
virtual bool isEmpty() const;
|
virtual bool isEmpty() const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated Use the item() and setItem() API instead
|
* \deprecated Use the item() and setItem() API instead.
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED ItemMap &itemListMap();
|
TAGLIB_DEPRECATED ItemMap &itemListMap();
|
||||||
|
|
||||||
@@ -102,6 +100,11 @@ namespace TagLib {
|
|||||||
*/
|
*/
|
||||||
bool contains(const String &key) const;
|
bool contains(const String &key) const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Saves the associated file with the tag stripped.
|
||||||
|
*/
|
||||||
|
bool strip();
|
||||||
|
|
||||||
PropertyMap properties() const;
|
PropertyMap properties() const;
|
||||||
void removeUnsupportedProperties(const StringList& properties);
|
void removeUnsupportedProperties(const StringList& properties);
|
||||||
PropertyMap setProperties(const PropertyMap &properties);
|
PropertyMap setProperties(const PropertyMap &properties);
|
||||||
@@ -156,9 +159,6 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
|
} // namespace MP4
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ namespace TagLib {
|
|||||||
void strip(int tags = AllTags);
|
void strip(int tags = AllTags);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use strip().
|
||||||
* \see strip
|
* \see strip
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED void remove(int tags = AllTags);
|
TAGLIB_DEPRECATED void remove(int tags = AllTags);
|
||||||
@@ -232,7 +232,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace MPC
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace MPC
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -193,19 +193,19 @@ namespace TagLib {
|
|||||||
bool save(int tags);
|
bool save(int tags);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use save(int, StripTags, ID3v2::Version, DuplicateTags).
|
||||||
*/
|
*/
|
||||||
// BIC: combine with the above method
|
// BIC: combine with the above method
|
||||||
TAGLIB_DEPRECATED bool save(int tags, bool stripOthers);
|
TAGLIB_DEPRECATED bool save(int tags, bool stripOthers);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use save(int, StripTags, ID3v2::Version, DuplicateTags).
|
||||||
*/
|
*/
|
||||||
// BIC: combine with the above method
|
// BIC: combine with the above method
|
||||||
TAGLIB_DEPRECATED bool save(int tags, bool stripOthers, int id3v2Version);
|
TAGLIB_DEPRECATED bool save(int tags, bool stripOthers, int id3v2Version);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \deprecated
|
* \deprecated Use save(int, StripTags, ID3v2::Version, DuplicateTags).
|
||||||
*/
|
*/
|
||||||
// BIC: combine with the above method
|
// BIC: combine with the above method
|
||||||
TAGLIB_DEPRECATED bool save(int tags, bool stripOthers, int id3v2Version, bool duplicateTags);
|
TAGLIB_DEPRECATED bool save(int tags, bool stripOthers, int id3v2Version, bool duplicateTags);
|
||||||
@@ -315,7 +315,7 @@ namespace TagLib {
|
|||||||
* Set the ID3v2::FrameFactory to something other than the default.
|
* Set the ID3v2::FrameFactory to something other than the default.
|
||||||
*
|
*
|
||||||
* \see ID3v2FrameFactory
|
* \see ID3v2FrameFactory
|
||||||
* \deprecated This value should be passed in via the constructor
|
* \deprecated This value should be passed in via the constructor.
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
|
TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace MPEG
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace TagLib {
|
|||||||
/*!
|
/*!
|
||||||
* Parses an MPEG header based on \a data.
|
* Parses an MPEG header based on \a data.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use Header(File *, long, bool).
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED Header(const ByteVector &data);
|
TAGLIB_DEPRECATED Header(const ByteVector &data);
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ namespace TagLib {
|
|||||||
class HeaderPrivate;
|
class HeaderPrivate;
|
||||||
HeaderPrivate *d;
|
HeaderPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace MPEG
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace MPEG
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ namespace TagLib {
|
|||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -223,6 +223,6 @@ namespace TagLib {
|
|||||||
class PagePrivate;
|
class PagePrivate;
|
||||||
PagePrivate *d;
|
PagePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ namespace TagLib {
|
|||||||
PageHeaderPrivate *d;
|
PageHeaderPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -131,8 +131,8 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Opus
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -127,8 +127,8 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Opus
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -146,6 +146,6 @@ namespace TagLib {
|
|||||||
OwnershipFramePrivate *d;
|
OwnershipFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -77,6 +77,6 @@ namespace TagLib {
|
|||||||
PodcastFramePrivate *d;
|
PodcastFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -127,6 +127,6 @@ namespace TagLib {
|
|||||||
PopularimeterFramePrivate *d;
|
PopularimeterFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -106,6 +106,6 @@ namespace TagLib {
|
|||||||
PrivateFramePrivate *d;
|
PrivateFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -269,6 +269,6 @@ namespace TagLib {
|
|||||||
RelativeVolumeFramePrivate *d;
|
RelativeVolumeFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace RIFF
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace S3M
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace S3M
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -131,8 +131,8 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Speex
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -122,8 +122,8 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Speex
|
||||||
}
|
} // namespace Ogg
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -226,6 +226,6 @@ namespace TagLib {
|
|||||||
SynchronizedLyricsFramePrivate *d;
|
SynchronizedLyricsFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ namespace TagLib {
|
|||||||
class TableOfContentsFramePrivate;
|
class TableOfContentsFramePrivate;
|
||||||
TableOfContentsFramePrivate *d;
|
TableOfContentsFramePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -196,6 +196,6 @@ namespace TagLib {
|
|||||||
class TagPrivate;
|
class TagPrivate;
|
||||||
TagPrivate *d;
|
TagPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -29,8 +29,8 @@
|
|||||||
#include "taglib_config.h"
|
#include "taglib_config.h"
|
||||||
|
|
||||||
#define TAGLIB_MAJOR_VERSION 1
|
#define TAGLIB_MAJOR_VERSION 1
|
||||||
#define TAGLIB_MINOR_VERSION 12
|
#define TAGLIB_MINOR_VERSION 13
|
||||||
#define TAGLIB_PATCH_VERSION 0
|
#define TAGLIB_PATCH_VERSION 1
|
||||||
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 1)) || defined(__clang__)
|
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 1)) || defined(__clang__)
|
||||||
#define TAGLIB_IGNORE_MISSING_DESTRUCTOR _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"")
|
#define TAGLIB_IGNORE_MISSING_DESTRUCTOR _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"")
|
||||||
@@ -84,7 +84,7 @@ namespace TagLib {
|
|||||||
* so I'm providing something here that should be constant.
|
* so I'm providing something here that should be constant.
|
||||||
*/
|
*/
|
||||||
typedef std::basic_string<wchar_t> wstring;
|
typedef std::basic_string<wchar_t> wstring;
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \mainpage TagLib
|
* \mainpage TagLib
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \see isEmpty()
|
* \see isEmpty()
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use isEmpty(), do not differentiate between null and empty.
|
||||||
*/
|
*/
|
||||||
// BIC: remove
|
// BIC: remove
|
||||||
TAGLIB_DEPRECATED bool isNull() const;
|
TAGLIB_DEPRECATED bool isNull() const;
|
||||||
@@ -592,7 +592,7 @@ namespace TagLib {
|
|||||||
* \warning Do not modify this variable. It will mess up the internal state
|
* \warning Do not modify this variable. It will mess up the internal state
|
||||||
* of TagLib.
|
* of TagLib.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use ByteVector().
|
||||||
*/
|
*/
|
||||||
// BIC: remove
|
// BIC: remove
|
||||||
TAGLIB_DEPRECATED static ByteVector null;
|
TAGLIB_DEPRECATED static ByteVector null;
|
||||||
@@ -624,7 +624,7 @@ namespace TagLib {
|
|||||||
class ByteVectorPrivate;
|
class ByteVectorPrivate;
|
||||||
ByteVectorPrivate *d;
|
ByteVectorPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \relates TagLib::ByteVector
|
* \relates TagLib::ByteVector
|
||||||
|
|||||||
@@ -86,6 +86,6 @@ namespace TagLib {
|
|||||||
ByteVectorListPrivate *d;
|
ByteVectorListPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -140,6 +140,6 @@ namespace TagLib {
|
|||||||
ByteVectorStreamPrivate *d;
|
ByteVectorStreamPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -69,6 +69,6 @@ namespace TagLib
|
|||||||
* \see DebugListener
|
* \see DebugListener
|
||||||
*/
|
*/
|
||||||
TAGLIB_EXPORT void setDebugListener(DebugListener *listener);
|
TAGLIB_EXPORT void setDebugListener(DebugListener *listener);
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -308,6 +308,6 @@ namespace TagLib {
|
|||||||
UserTextIdentificationFramePrivate *d;
|
UserTextIdentificationFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -261,14 +261,14 @@ namespace TagLib {
|
|||||||
* Returns true if \a file can be opened for reading. If the file does not
|
* Returns true if \a file can be opened for reading. If the file does not
|
||||||
* exist, this will return false.
|
* exist, this will return false.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use system functions, e.g. access() (_access_s() on Windows).
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED static bool isReadable(const char *file);
|
TAGLIB_DEPRECATED static bool isReadable(const char *file);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns true if \a file can be opened for writing.
|
* Returns true if \a file can be opened for writing.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use system functions, e.g. access() (_access_s() on Windows).
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED static bool isWritable(const char *name);
|
TAGLIB_DEPRECATED static bool isWritable(const char *name);
|
||||||
|
|
||||||
@@ -318,6 +318,6 @@ namespace TagLib {
|
|||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -154,6 +154,6 @@ namespace TagLib {
|
|||||||
FileStreamPrivate *d;
|
FileStreamPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -165,6 +165,6 @@ namespace TagLib {
|
|||||||
IOStream &operator=(const IOStream &);
|
IOStream &operator=(const IOStream &);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ namespace TagLib {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
// Since GCC doesn't support the "export" keyword, we have to include the
|
// Since GCC doesn't support the "export" keyword, we have to include the
|
||||||
// implementation.
|
// implementation.
|
||||||
|
|||||||
@@ -153,6 +153,14 @@ namespace TagLib {
|
|||||||
*/
|
*/
|
||||||
Map<Key, T> &erase(const Key &key);
|
Map<Key, T> &erase(const Key &key);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns the value associated with \a key.
|
||||||
|
*
|
||||||
|
* If the map does not contain \a key, it returns defaultValue.
|
||||||
|
* If no defaultValue is specified, it returns a default-constructed value.
|
||||||
|
*/
|
||||||
|
T value(const Key &key, const T &defaultValue = T()) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns a reference to the value associated with \a key.
|
* Returns a reference to the value associated with \a key.
|
||||||
*
|
*
|
||||||
@@ -194,7 +202,7 @@ namespace TagLib {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
// Since GCC doesn't support the "export" keyword, we have to include the
|
// Since GCC doesn't support the "export" keyword, we have to include the
|
||||||
// implementation.
|
// implementation.
|
||||||
|
|||||||
@@ -155,6 +155,13 @@ unsigned int Map<Key, T>::size() const
|
|||||||
return static_cast<unsigned int>(d->map.size());
|
return static_cast<unsigned int>(d->map.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class Key, class T>
|
||||||
|
T Map<Key, T>::value(const Key &key, const T &defaultValue) const
|
||||||
|
{
|
||||||
|
ConstIterator it = d->map.find(key);
|
||||||
|
return it != d->map.end() ? it->second : defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
template <class Key, class T>
|
template <class Key, class T>
|
||||||
const T &Map<Key, T>::operator[](const Key &key) const
|
const T &Map<Key, T>::operator[](const Key &key) const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,6 +29,11 @@
|
|||||||
#include "tmap.h"
|
#include "tmap.h"
|
||||||
#include "tstringlist.h"
|
#include "tstringlist.h"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
// Explained at end of tpropertymap.cpp
|
||||||
|
extern template class TAGLIB_EXPORT TagLib::Map<TagLib::String, TagLib::StringList>;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
typedef Map<String,StringList> SimplePropertyMap;
|
typedef Map<String,StringList> SimplePropertyMap;
|
||||||
@@ -186,6 +191,15 @@ namespace TagLib {
|
|||||||
*/
|
*/
|
||||||
PropertyMap &merge(const PropertyMap &other);
|
PropertyMap &merge(const PropertyMap &other);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Returns the value associated with \a key.
|
||||||
|
*
|
||||||
|
* If the map does not contain \a key, it returns defaultValue.
|
||||||
|
* If no defaultValue is specified, it returns an empty string list.
|
||||||
|
*/
|
||||||
|
StringList value(const String &key,
|
||||||
|
const StringList &defaultValue = StringList()) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns a reference to the value associated with \a key.
|
* Returns a reference to the value associated with \a key.
|
||||||
*
|
*
|
||||||
@@ -238,5 +252,5 @@ namespace TagLib {
|
|||||||
StringList unsupported;
|
StringList unsupported;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif /* TAGLIB_PROPERTYMAP_H_ */
|
#endif /* TAGLIB_PROPERTYMAP_H_ */
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ namespace TagLib
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif // DO_NOT_DOCUMENT
|
#endif // DO_NOT_DOCUMENT
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ namespace TagLib {
|
|||||||
* Set the ID3v2::FrameFactory to something other than the default.
|
* Set the ID3v2::FrameFactory to something other than the default.
|
||||||
*
|
*
|
||||||
* \see ID3v2FrameFactory
|
* \see ID3v2FrameFactory
|
||||||
* \deprecated This value should be passed in via the constructor
|
* \deprecated This value should be passed in via the constructor.
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
|
TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ namespace TagLib {
|
|||||||
class FilePrivate;
|
class FilePrivate;
|
||||||
FilePrivate *d;
|
FilePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace TrueAudio
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ namespace TagLib {
|
|||||||
|
|
||||||
namespace TrueAudio {
|
namespace TrueAudio {
|
||||||
|
|
||||||
class File;
|
|
||||||
|
|
||||||
static const unsigned int HeaderSize = 18;
|
static const unsigned int HeaderSize = 18;
|
||||||
|
|
||||||
//! An implementation of audio property reading for TrueAudio
|
//! An implementation of audio property reading for TrueAudio
|
||||||
@@ -67,7 +65,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \note This method is just an alias of lengthInSeconds().
|
* \note This method is just an alias of lengthInSeconds().
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use lengthInSeconds().
|
||||||
*/
|
*/
|
||||||
TAGLIB_DEPRECATED virtual int length() const;
|
TAGLIB_DEPRECATED virtual int length() const;
|
||||||
|
|
||||||
@@ -127,7 +125,7 @@ namespace TagLib {
|
|||||||
class PropertiesPrivate;
|
class PropertiesPrivate;
|
||||||
PropertiesPrivate *d;
|
PropertiesPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace TrueAudio
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
#if defined(QT_VERSION) && (QT_VERSION >= 0x040000)
|
#if defined(QT_VERSION) && (QT_VERSION >= 0x040000)
|
||||||
#define QStringToTString(s) TagLib::String(s.toUtf8().data(), TagLib::String::UTF8)
|
#define QStringToTString(s) TagLib::String(s.toUtf8().data(), TagLib::String::UTF8)
|
||||||
#else
|
#else
|
||||||
#define QStringToTString(s) TagLib::String(s.utf8().data(), TagLib::String::UTF8)
|
#define QStringToTString(s) TagLib::String((s).utf8().data(), TagLib::String::UTF8)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define TStringToQString(s) QString::fromUtf8(s.toCString(true))
|
#define TStringToQString(s) QString::fromUtf8((s).toCString(true))
|
||||||
|
|
||||||
namespace TagLib {
|
namespace TagLib {
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ namespace TagLib {
|
|||||||
*
|
*
|
||||||
* \see isEmpty()
|
* \see isEmpty()
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use isEmpty(), do not differentiate between null and empty.
|
||||||
*/
|
*/
|
||||||
// BIC: remove
|
// BIC: remove
|
||||||
TAGLIB_DEPRECATED bool isNull() const;
|
TAGLIB_DEPRECATED bool isNull() const;
|
||||||
@@ -522,7 +522,7 @@ namespace TagLib {
|
|||||||
* \warning Do not modify this variable. It will mess up the internal state
|
* \warning Do not modify this variable. It will mess up the internal state
|
||||||
* of TagLib.
|
* of TagLib.
|
||||||
*
|
*
|
||||||
* \deprecated
|
* \deprecated Use String().
|
||||||
*/
|
*/
|
||||||
// BIC: remove
|
// BIC: remove
|
||||||
TAGLIB_DEPRECATED static String null;
|
TAGLIB_DEPRECATED static String null;
|
||||||
@@ -546,28 +546,28 @@ namespace TagLib {
|
|||||||
class StringPrivate;
|
class StringPrivate;
|
||||||
StringPrivate *d;
|
StringPrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \relates TagLib::String
|
* \relates TagLib::String
|
||||||
*
|
*
|
||||||
* Concatenates \a s1 and \a s2 and returns the result as a string.
|
* Concatenates \a s1 and \a s2 and returns the result as a string.
|
||||||
*/
|
*/
|
||||||
TAGLIB_EXPORT const TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2);
|
TAGLIB_EXPORT TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \relates TagLib::String
|
* \relates TagLib::String
|
||||||
*
|
*
|
||||||
* Concatenates \a s1 and \a s2 and returns the result as a string.
|
* Concatenates \a s1 and \a s2 and returns the result as a string.
|
||||||
*/
|
*/
|
||||||
TAGLIB_EXPORT const TagLib::String operator+(const char *s1, const TagLib::String &s2);
|
TAGLIB_EXPORT TagLib::String operator+(const char *s1, const TagLib::String &s2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \relates TagLib::String
|
* \relates TagLib::String
|
||||||
*
|
*
|
||||||
* Concatenates \a s1 and \a s2 and returns the result as a string.
|
* Concatenates \a s1 and \a s2 and returns the result as a string.
|
||||||
*/
|
*/
|
||||||
TAGLIB_EXPORT const TagLib::String operator+(const TagLib::String &s1, const char *s2);
|
TAGLIB_EXPORT TagLib::String operator+(const TagLib::String &s1, const char *s2);
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
@@ -104,12 +104,12 @@ namespace TagLib {
|
|||||||
StringListPrivate *d;
|
StringListPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \related TagLib::StringList
|
* \related TagLib::StringList
|
||||||
* Send the StringList to an output stream.
|
* Send the StringList to an output stream.
|
||||||
*/
|
*/
|
||||||
std::ostream &operator<<(std::ostream &s, const TagLib::StringList &l);
|
std::ostream TAGLIB_EXPORT &operator<<(std::ostream &s, const TagLib::StringList &l);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ namespace TagLib {
|
|||||||
class UniqueFileIdentifierFramePrivate;
|
class UniqueFileIdentifierFramePrivate;
|
||||||
UniqueFileIdentifierFramePrivate *d;
|
UniqueFileIdentifierFramePrivate *d;
|
||||||
};
|
};
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -74,6 +74,6 @@ namespace TagLib {
|
|||||||
UnknownFramePrivate *d;
|
UnknownFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -174,6 +174,6 @@ namespace TagLib {
|
|||||||
UnsynchronizedLyricsFramePrivate *d;
|
UnsynchronizedLyricsFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -185,6 +185,6 @@ namespace TagLib {
|
|||||||
UserUrlLinkFramePrivate *d;
|
UserUrlLinkFramePrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
} // namespace ID3v2
|
||||||
}
|
} // namespace TagLib
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user