Introduce PrefPtr typedef

pull/128/merge
Nils Maier 2013-08-25 17:36:53 +02:00
parent 8e6e46dfcf
commit a76eeb2b81
22 changed files with 502 additions and 494 deletions

View File

@ -564,9 +564,9 @@ namespace {
// Constructs proxy URI, merging username and password if they are
// defined.
std::string makeProxyUri
(const Pref* proxyPref,
const Pref* proxyUser,
const Pref* proxyPasswd,
(PrefPtr proxyPref,
PrefPtr proxyUser,
PrefPtr proxyPasswd,
const Option* option)
{
uri::UriStruct us;
@ -588,9 +588,9 @@ std::string makeProxyUri
namespace {
// Returns proxy option value for the given protocol.
std::string getProxyOptionFor
(const Pref* proxyPref,
const Pref* proxyUser,
const Pref* proxyPasswd,
(PrefPtr proxyPref,
PrefPtr proxyUser,
PrefPtr proxyPasswd,
const Option* option)
{
std::string uri = makeProxyUri(proxyPref, proxyUser, proxyPasswd, option);

View File

@ -45,7 +45,7 @@
namespace aria2 {
AbstractOptionHandler::AbstractOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
ARG_TYPE argType,

View File

@ -44,7 +44,7 @@ struct Pref;
class AbstractOptionHandler : public OptionHandler {
protected:
const Pref* pref_;
PrefPtr pref_;
const char* description_;
@ -56,7 +56,7 @@ protected:
virtual void parseArg(Option& option, const std::string& arg) const = 0;
public:
AbstractOptionHandler(const Pref* pref,
AbstractOptionHandler(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
ARG_TYPE argType = REQ_ARG,
@ -85,7 +85,7 @@ public:
return defaultValue_;
}
virtual const Pref* getPref() const CXX11_OVERRIDE
virtual PrefPtr getPref() const CXX11_OVERRIDE
{
return pref_;
}

View File

@ -179,11 +179,11 @@ std::vector<std::unique_ptr<Command>> DHTSetup::setup
factory->setTokenTracker(tokenTracker.get());
factory->setLocalNode(localNode);
const Pref* prefEntryPointHost =
PrefPtr prefEntryPointHost =
family == AF_INET?PREF_DHT_ENTRY_POINT_HOST:PREF_DHT_ENTRY_POINT_HOST6;
if(!e->getOption()->get(prefEntryPointHost).empty()) {
{
const Pref* prefEntryPointPort =
PrefPtr prefEntryPointPort =
family == AF_INET?PREF_DHT_ENTRY_POINT_PORT:
PREF_DHT_ENTRY_POINT_PORT6;
std::pair<std::string, uint16_t> addr

View File

@ -68,36 +68,36 @@ Option& Option::operator=(const Option& option)
namespace {
template<typename V>
void setBit(V& b, const Pref* pref)
void setBit(V& b, PrefPtr pref)
{
b[pref->i/8] |= 128 >> (pref->i%8);
}
template<typename V>
void unsetBit(V& b, const Pref* pref)
void unsetBit(V& b, PrefPtr pref)
{
b[pref->i/8] &= ~(128 >> (pref->i%8));
}
} // namespace
void Option::put(const Pref* pref, const std::string& value) {
void Option::put(PrefPtr pref, const std::string& value) {
setBit(use_, pref);
table_[pref->i] = value;
}
bool Option::defined(const Pref* pref) const
bool Option::defined(PrefPtr pref) const
{
return bitfield::test(use_, use_.size()*8, pref->i) ||
(parent_ && parent_->defined(pref));
}
bool Option::definedLocal(const Pref* pref) const
bool Option::definedLocal(PrefPtr pref) const
{
return bitfield::test(use_, use_.size()*8, pref->i);
}
bool Option::blank(const Pref* pref) const
bool Option::blank(PrefPtr pref) const
{
if(bitfield::test(use_, use_.size()*8, pref->i)) {
return table_[pref->i].empty();
@ -106,7 +106,7 @@ bool Option::blank(const Pref* pref) const
}
}
const std::string& Option::get(const Pref* pref) const
const std::string& Option::get(PrefPtr pref) const
{
if(bitfield::test(use_, use_.size()*8, pref->i)) {
return table_[pref->i];
@ -117,7 +117,7 @@ const std::string& Option::get(const Pref* pref) const
}
}
int32_t Option::getAsInt(const Pref* pref) const {
int32_t Option::getAsInt(PrefPtr pref) const {
const std::string& value = get(pref);
if(value.empty()) {
return 0;
@ -126,7 +126,7 @@ int32_t Option::getAsInt(const Pref* pref) const {
}
}
int64_t Option::getAsLLInt(const Pref* pref) const {
int64_t Option::getAsLLInt(PrefPtr pref) const {
const std::string& value = get(pref);
if(value.empty()) {
return 0;
@ -135,11 +135,11 @@ int64_t Option::getAsLLInt(const Pref* pref) const {
}
}
bool Option::getAsBool(const Pref* pref) const {
bool Option::getAsBool(PrefPtr pref) const {
return get(pref) == A2_V_TRUE;
}
double Option::getAsDouble(const Pref* pref) const {
double Option::getAsDouble(PrefPtr pref) const {
const std::string& value = get(pref);
if(value.empty()) {
return 0.0;
@ -148,7 +148,7 @@ double Option::getAsDouble(const Pref* pref) const {
}
}
void Option::remove(const Pref* pref)
void Option::remove(PrefPtr pref)
{
unsetBit(use_, pref);
table_[pref->i].clear();

View File

@ -44,6 +44,7 @@
namespace aria2 {
struct Pref;
typedef const Pref* PrefPtr;
class Option {
private:
@ -56,27 +57,27 @@ public:
Option(const Option& option);
Option& operator=(const Option& option);
void put(const Pref* pref, const std::string& value);
void put(PrefPtr pref, const std::string& value);
// Returns true if name is defined. Otherwise returns false. Note
// that even if the value is a empty string, this method returns
// true. If option is not defined in this object and parent_ is not
// NULL, lookup parent_ to check |pref| is defined.
bool defined(const Pref* pref) const;
bool defined(PrefPtr pref) const;
// Just like defined(), but this function does not lookup parent_.
bool definedLocal(const Pref* pref) const;
bool definedLocal(PrefPtr pref) const;
// Returns true if name is not defined or the value is a empty string.
// Otherwise returns false.
bool blank(const Pref* pref) const;
bool blank(PrefPtr pref) const;
// Returns option value for |pref|. If the |pref| is not defined in
// this object, parent_ is looked up.
const std::string& get(const Pref* pref) const;
int32_t getAsInt(const Pref* pref) const;
int64_t getAsLLInt(const Pref* pref) const;
bool getAsBool(const Pref* pref) const;
double getAsDouble(const Pref* pref) const;
const std::string& get(PrefPtr pref) const;
int32_t getAsInt(PrefPtr pref) const;
int64_t getAsLLInt(PrefPtr pref) const;
bool getAsBool(PrefPtr pref) const;
double getAsDouble(PrefPtr pref) const;
// Removes |pref| from this object. This function does not modify
// parent_.
void remove(const Pref* pref);
void remove(PrefPtr pref);
// Removes all option values from this object. This function does
// not modify parent_.
void clear();

View File

@ -57,6 +57,7 @@ extern const std::string PATH_TO_COMMAND;
class Option;
struct Pref;
typedef const Pref* PrefPtr;
class OptionHandler {
public:
@ -82,7 +83,7 @@ public:
virtual void hide() = 0;
virtual const Pref* getPref() const = 0;
virtual PrefPtr getPref() const = 0;
enum ARG_TYPE {
REQ_ARG,

View File

@ -45,7 +45,7 @@ const char* MESSAGE =
OptionHandlerException::OptionHandlerException
(const char* file, int line,
const Pref* pref)
PrefPtr pref)
: RecoverableException
(file, line, fmt(MESSAGE, pref->k), error_code::OPTION_ERROR),
pref_(pref)
@ -53,7 +53,7 @@ OptionHandlerException::OptionHandlerException
OptionHandlerException::OptionHandlerException
(const char* file, int line,
const Pref* pref,
PrefPtr pref,
const Exception& cause)
: RecoverableException
(file, line, fmt(MESSAGE, pref->k), error_code::OPTION_ERROR,

View File

@ -39,23 +39,24 @@
namespace aria2 {
struct Pref;
typedef const Pref* PrefPtr;
class OptionHandlerException:public RecoverableException {
private:
const Pref* pref_;
PrefPtr pref_;
protected:
virtual std::shared_ptr<Exception> copy() const CXX11_OVERRIDE;
public:
OptionHandlerException(const char* file, int line,
const Pref* pref);
PrefPtr pref);
OptionHandlerException(const char* file, int line,
const Pref* pref,
PrefPtr pref,
const Exception& cause);
virtual ~OptionHandlerException() throw();
const Pref* getPref() const
PrefPtr getPref() const
{
return pref_;
}

View File

@ -68,7 +68,7 @@
namespace aria2 {
BooleanOptionHandler::BooleanOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
OptionHandler::ARG_TYPE argType,
@ -103,7 +103,7 @@ std::string BooleanOptionHandler::createPossibleValuesString() const
}
IntegerRangeOptionHandler::IntegerRangeOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
int32_t min, int32_t max,
@ -140,7 +140,7 @@ std::string IntegerRangeOptionHandler::createPossibleValuesString() const
}
NumberOptionHandler::NumberOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
int64_t min,
@ -205,7 +205,7 @@ std::string NumberOptionHandler::createPossibleValuesString() const
}
UnitNumberOptionHandler::UnitNumberOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
int64_t min,
@ -225,7 +225,7 @@ void UnitNumberOptionHandler::parseArg
}
FloatNumberOptionHandler::FloatNumberOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
double min,
@ -279,7 +279,7 @@ std::string FloatNumberOptionHandler::createPossibleValuesString() const
}
DefaultOptionHandler::DefaultOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
const std::string& possibleValuesString,
@ -304,7 +304,7 @@ std::string DefaultOptionHandler::createPossibleValuesString() const
}
CumulativeOptionHandler::CumulativeOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
const std::string& delim,
@ -334,7 +334,7 @@ std::string CumulativeOptionHandler::createPossibleValuesString() const
}
IndexOutOptionHandler::IndexOutOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
char shortName)
: AbstractOptionHandler(pref, description, NO_DEFAULT_VALUE,
@ -361,7 +361,7 @@ std::string IndexOutOptionHandler::createPossibleValuesString() const
#ifdef ENABLE_MESSAGE_DIGEST
ChecksumOptionHandler::ChecksumOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
char shortName)
: AbstractOptionHandler(pref, description, NO_DEFAULT_VALUE,
@ -391,7 +391,7 @@ std::string ChecksumOptionHandler::createPossibleValuesString() const
#endif // ENABLE_MESSAGE_DIGEST
ParameterOptionHandler::ParameterOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
std::vector<std::string> validParamValues,
@ -436,11 +436,11 @@ std::string ParameterOptionHandler::createPossibleValuesString() const
}
HostPortOptionHandler::HostPortOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
const Pref* hostOptionName,
const Pref* portOptionName,
PrefPtr hostOptionName,
PrefPtr portOptionName,
char shortName)
: AbstractOptionHandler(pref, description, defaultValue,
OptionHandler::REQ_ARG, shortName),
@ -476,7 +476,7 @@ std::string HostPortOptionHandler::createPossibleValuesString() const
}
HttpProxyOptionHandler::HttpProxyOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
char shortName)
@ -518,7 +518,7 @@ std::string HttpProxyOptionHandler::createPossibleValuesString() const
}
LocalFilePathOptionHandler::LocalFilePathOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
bool acceptStdin,
@ -552,7 +552,7 @@ std::string LocalFilePathOptionHandler::createPossibleValuesString() const
}
PrioritizePieceOptionHandler::PrioritizePieceOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description,
const std::string& defaultValue,
char shortName)
@ -649,7 +649,7 @@ void DeprecatedOptionHandler::hide()
depOptHandler_->hide();
}
const Pref* DeprecatedOptionHandler::getPref() const
PrefPtr DeprecatedOptionHandler::getPref() const
{
return depOptHandler_->getPref();
}

View File

@ -49,7 +49,7 @@ struct Pref;
class BooleanOptionHandler : public AbstractOptionHandler {
public:
BooleanOptionHandler(const Pref* pref,
BooleanOptionHandler(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
OptionHandler::ARG_TYPE argType = OptionHandler::REQ_ARG,
@ -65,7 +65,7 @@ private:
int32_t min_;
int32_t max_;
public:
IntegerRangeOptionHandler(const Pref* pref,
IntegerRangeOptionHandler(PrefPtr pref,
const char* description,
const std::string& defaultValue,
int32_t min, int32_t max,
@ -81,7 +81,7 @@ private:
int64_t min_;
int64_t max_;
public:
NumberOptionHandler(const Pref* pref,
NumberOptionHandler(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
int64_t min = -1,
@ -97,7 +97,7 @@ public:
class UnitNumberOptionHandler : public NumberOptionHandler {
public:
UnitNumberOptionHandler(const Pref* pref,
UnitNumberOptionHandler(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
int64_t min = -1,
@ -113,7 +113,7 @@ private:
double min_;
double max_;
public:
FloatNumberOptionHandler(const Pref* pref,
FloatNumberOptionHandler(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
double min = -1, double max = -1,
@ -128,7 +128,7 @@ class DefaultOptionHandler : public AbstractOptionHandler {
private:
std::string possibleValuesString_;
public:
DefaultOptionHandler(const Pref* pref,
DefaultOptionHandler(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
const std::string& possibleValuesString = A2STR::NIL,
@ -145,7 +145,7 @@ private:
std::string delim_;
std::string possibleValuesString_;
public:
CumulativeOptionHandler(const Pref* pref,
CumulativeOptionHandler(PrefPtr pref,
const char* description,
const std::string& defaultValue,
const std::string& delim,
@ -161,7 +161,7 @@ public:
class IndexOutOptionHandler : public AbstractOptionHandler {
public:
IndexOutOptionHandler(const Pref* pref,
IndexOutOptionHandler(PrefPtr pref,
const char* description,
char shortName = 0);
virtual ~IndexOutOptionHandler();
@ -173,7 +173,7 @@ public:
#ifdef ENABLE_MESSAGE_DIGEST
class ChecksumOptionHandler : public AbstractOptionHandler {
public:
ChecksumOptionHandler(const Pref* pref,
ChecksumOptionHandler(PrefPtr pref,
const char* description,
char shortName = 0);
virtual ~ChecksumOptionHandler();
@ -187,7 +187,7 @@ class ParameterOptionHandler : public AbstractOptionHandler {
private:
std::vector<std::string> validParamValues_;
public:
ParameterOptionHandler(const Pref* pref,
ParameterOptionHandler(PrefPtr pref,
const char* description,
const std::string& defaultValue,
std::vector<std::string> validParamValues,
@ -200,14 +200,14 @@ public:
class HostPortOptionHandler : public AbstractOptionHandler {
private:
const Pref* hostOptionName_;
const Pref* portOptionName_;
PrefPtr hostOptionName_;
PrefPtr portOptionName_;
public:
HostPortOptionHandler(const Pref* pref,
HostPortOptionHandler(PrefPtr pref,
const char* description,
const std::string& defaultValue,
const Pref* hostOptionName,
const Pref* portOptionName,
PrefPtr hostOptionName,
PrefPtr portOptionName,
char shortName = 0);
virtual ~HostPortOptionHandler();
virtual void parseArg(Option& option, const std::string& optarg) const
@ -219,10 +219,10 @@ public:
class HttpProxyOptionHandler : public AbstractOptionHandler {
private:
const Pref* proxyUserPref_;
const Pref* proxyPasswdPref_;
PrefPtr proxyUserPref_;
PrefPtr proxyPasswdPref_;
public:
HttpProxyOptionHandler(const Pref* pref,
HttpProxyOptionHandler(PrefPtr pref,
const char* description,
const std::string& defaultValue,
char shortName = 0);
@ -237,7 +237,7 @@ private:
bool acceptStdin_;
public:
LocalFilePathOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
bool acceptStdin = false,
@ -250,7 +250,7 @@ public:
class PrioritizePieceOptionHandler:public AbstractOptionHandler {
public:
PrioritizePieceOptionHandler
(const Pref* pref,
(PrefPtr pref,
const char* description = NO_DESCRIPTION,
const std::string& defaultValue = NO_DEFAULT_VALUE,
char shortName = 0);
@ -284,7 +284,7 @@ public:
virtual const std::string& getDefaultValue() const CXX11_OVERRIDE;
virtual bool isHidden() const CXX11_OVERRIDE;
virtual void hide() CXX11_OVERRIDE;
virtual const Pref* getPref() const CXX11_OVERRIDE;
virtual PrefPtr getPref() const CXX11_OVERRIDE;
virtual ARG_TYPE getArgType() const CXX11_OVERRIDE;
virtual char getShortName() const CXX11_OVERRIDE;
virtual bool getEraseAfterParse() const CXX11_OVERRIDE;

View File

@ -186,7 +186,7 @@ void OptionParser::parseArg
// option is ambiguous.
int ambiguous = 0;
for(int i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
const OptionHandler* h = find(pref);
if(h && !h->isHidden()) {
if(strcmp(pref->k, optstr) == 0) {
@ -234,7 +234,7 @@ void OptionParser::parse(Option& option, std::istream& is) const
if(nv.first.first == nv.first.second) {
continue;
}
const Pref* pref =
PrefPtr pref =
option::k2p(std::string(nv.first.first, nv.first.second));
const OptionHandler* handler = find(pref);
if(handler) {
@ -249,7 +249,7 @@ void OptionParser::parse(Option& option, const KeyVals& options) const
{
for(KeyVals::const_iterator i = options.begin(), eoi = options.end();
i != eoi; ++i) {
const Pref* pref = option::k2p((*i).first);
PrefPtr pref = option::k2p((*i).first);
const OptionHandler* handler = find(pref);
if(handler) {
handler->parse(option, (*i).second);
@ -325,7 +325,7 @@ std::vector<const OptionHandler*> OptionParser::findAll() const
return result;
}
const OptionHandler* OptionParser::find(const Pref* pref) const
const OptionHandler* OptionParser::find(PrefPtr pref) const
{
return findById(pref->i);
}

View File

@ -49,6 +49,7 @@ namespace aria2 {
class Option;
class OptionHandler;
struct Pref;
typedef const Pref* PrefPtr;
class OptionParser {
private:
@ -88,7 +89,7 @@ public:
std::vector<const OptionHandler*> findAll() const;
// Hidden options are not returned.
const OptionHandler* find(const Pref* pref) const;
const OptionHandler* find(PrefPtr pref) const;
// Hidden options are not returned.
const OptionHandler* findById(size_t id) const;

View File

@ -89,7 +89,7 @@ void gatherOption
{
for(; first != last; ++first) {
const std::string& optionName = (*first).first;
const Pref* pref = option::k2p(optionName);
PrefPtr pref = option::k2p(optionName);
const OptionHandler* handler = optionParser->find(pref);
if(!handler || !pred(handler)) {
// Just ignore the unacceptable options in this context.

View File

@ -1133,7 +1133,7 @@ void pushRequestOption
const std::shared_ptr<OptionParser>& oparser)
{
for(size_t i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
const OptionHandler* h = oparser->find(pref);
if(h && h->getInitialOption() && option->defined(pref)) {
dict->put(pref->k, option->get(pref));
@ -1168,7 +1168,7 @@ std::unique_ptr<ValueBase> GetGlobalOptionRpcMethod::process
{
auto result = Dict::g();
for(size_t i = 0, len = e->getOption()->getTable().size(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
if(!e->getOption()->defined(pref)) {
continue;
}

View File

@ -95,7 +95,7 @@ bool SessionSerializer::save(const std::string& filename) const
namespace {
// Write 1 line of option name/value pair. This function returns true
// if it succeeds, or false.
bool writeOptionLine(IOFile& fp, const Pref* pref,
bool writeOptionLine(IOFile& fp, PrefPtr pref,
const std::string& val)
{
size_t prefLen = strlen(pref->k);
@ -112,7 +112,7 @@ bool writeOption(IOFile& fp, const std::shared_ptr<Option>& op)
{
const std::shared_ptr<OptionParser>& oparser = OptionParser::getInstance();
for(size_t i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
const OptionHandler* h = oparser->find(pref);
if(h && h->getInitialOption() && op->definedLocal(pref)) {
if(h->getCumulative()) {

View File

@ -197,7 +197,7 @@ void apiGatherOption
{
for(; first != last; ++first) {
const std::string& optionName = (*first).first;
const Pref* pref = option::k2p(optionName);
PrefPtr pref = option::k2p(optionName);
const OptionHandler* handler = optionParser->find(pref);
if(!handler || !pred(handler)) {
// Just ignore the unacceptable options in this context.
@ -465,7 +465,7 @@ int changeOption(Session* session, A2Gid gid, const KeyVals& options)
const std::string& getGlobalOption(Session* session, const std::string& name)
{
auto& e = session->context->reqinfo->getDownloadEngine();
const Pref* pref = option::k2p(name);
PrefPtr pref = option::k2p(name);
if(OptionParser::getInstance()->find(pref)) {
return e->getOption()->get(pref);
} else {
@ -480,7 +480,7 @@ KeyVals getGlobalOptions(Session* session)
const Option* option = e->getOption();
KeyVals options;
for(size_t i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
if(option->defined(pref) && optionParser->find(pref)) {
options.push_back(KeyVals::value_type(pref->k, option->get(pref)));
}
@ -632,7 +632,7 @@ void pushRequestOption
const std::shared_ptr<OptionParser>& oparser)
{
for(size_t i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
const OptionHandler* h = oparser->find(pref);
if(h && h->getInitialOption() && option->defined(pref)) {
out++ = KeyVals::value_type(pref->k, option->get(pref));
@ -645,7 +645,7 @@ namespace {
const std::string& getRequestOption(const std::shared_ptr<Option>& option,
const std::string& name)
{
const Pref* pref = option::k2p(name);
PrefPtr pref = option::k2p(name);
if(OptionParser::getInstance()->find(pref)) {
return option->get(pref);
} else {

View File

@ -75,7 +75,7 @@ namespace {
void overrideWithEnv
(Option& op,
const std::shared_ptr<OptionParser>& optionParser,
const Pref* pref,
PrefPtr pref,
const std::string& envName)
{
char* value = getenv(envName.c_str());
@ -139,9 +139,9 @@ void showCandidates
return;
}
int optstrlen = strlen(optstr);
std::vector<std::pair<int, const Pref*> > cands;
std::vector<std::pair<int, PrefPtr> > cands;
for(int i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
const OptionHandler* h = parser->find(pref);
if(!h || h->isHidden()) {
continue;
@ -181,7 +181,7 @@ namespace {
void optionNativeToUtf8(Option& op)
{
for(size_t i = 1, len = option::countOption(); i < len; ++i) {
const Pref* pref = option::i2p(i);
PrefPtr pref = option::i2p(i);
if(op.definedLocal(pref) && !util::isUtf8(op.get(pref))) {
op.put(pref, nativeToUtf8(op.get(pref)));
}

View File

@ -74,28 +74,29 @@ public:
{
return count_;
}
const Pref* i2p(size_t id) const
PrefPtr i2p(size_t id) const
{
assert(id < count_);
return i2p_[id];
}
const Pref* k2p(const std::string& k) const
PrefPtr k2p(const std::string& k) const
{
auto i = k2p_.find(k);
if(i == k2p_.end()) {
return i2p_[0];
} else {
return (*i).second;
}
return (*i).second;
}
private:
size_t count_;
std::vector<const Pref*> i2p_;
std::map<std::string, const Pref*> k2p_;
std::vector<PrefPtr> i2p_;
std::map<std::string, PrefPtr> k2p_;
};
PrefFactory* getPrefFactory()
{
// singleton.
static auto pf = new PrefFactory();
return pf;
}
@ -114,12 +115,12 @@ size_t countOption()
return getPrefFactory()->getCount();
}
const Pref* i2p(size_t id)
PrefPtr i2p(size_t id)
{
return getPrefFactory()->i2p(id);
}
const Pref* k2p(const std::string& key)
PrefPtr k2p(const std::string& key)
{
return getPrefFactory()->k2p(key);
}
@ -169,389 +170,389 @@ const std::string V_HTTP("http");
const std::string V_HTTPS("https");
const std::string V_FTP("ftp");
const Pref* PREF_VERSION = makePref("version");
const Pref* PREF_HELP = makePref("help");
PrefPtr PREF_VERSION = makePref("version");
PrefPtr PREF_HELP = makePref("help");
/**
* General preferences
*/
// values: 1*digit
const Pref* PREF_TIMEOUT = makePref("timeout");
PrefPtr PREF_TIMEOUT = makePref("timeout");
// values: 1*digit
const Pref* PREF_DNS_TIMEOUT = makePref("dns-timeout");
PrefPtr PREF_DNS_TIMEOUT = makePref("dns-timeout");
// values: 1*digit
const Pref* PREF_CONNECT_TIMEOUT = makePref("connect-timeout");
PrefPtr PREF_CONNECT_TIMEOUT = makePref("connect-timeout");
// values: 1*digit
const Pref* PREF_MAX_TRIES = makePref("max-tries");
PrefPtr PREF_MAX_TRIES = makePref("max-tries");
// values: 1*digit
const Pref* PREF_AUTO_SAVE_INTERVAL = makePref("auto-save-interval");
PrefPtr PREF_AUTO_SAVE_INTERVAL = makePref("auto-save-interval");
// values: a string that your file system recognizes as a file name.
const Pref* PREF_LOG = makePref("log");
PrefPtr PREF_LOG = makePref("log");
// values: a string that your file system recognizes as a directory.
const Pref* PREF_DIR = makePref("dir");
PrefPtr PREF_DIR = makePref("dir");
// values: a string that your file system recognizes as a file name.
const Pref* PREF_OUT = makePref("out");
PrefPtr PREF_OUT = makePref("out");
// values: 1*digit
const Pref* PREF_SPLIT = makePref("split");
PrefPtr PREF_SPLIT = makePref("split");
// value: true | false
const Pref* PREF_DAEMON = makePref("daemon");
PrefPtr PREF_DAEMON = makePref("daemon");
// value: a string
const Pref* PREF_REFERER = makePref("referer");
PrefPtr PREF_REFERER = makePref("referer");
// value: 1*digit
const Pref* PREF_LOWEST_SPEED_LIMIT = makePref("lowest-speed-limit");
PrefPtr PREF_LOWEST_SPEED_LIMIT = makePref("lowest-speed-limit");
// value: 1*digit
const Pref* PREF_PIECE_LENGTH = makePref("piece-length");
PrefPtr PREF_PIECE_LENGTH = makePref("piece-length");
// value: 1*digit
const Pref* PREF_MAX_OVERALL_DOWNLOAD_LIMIT = makePref("max-overall-download-limit");
PrefPtr PREF_MAX_OVERALL_DOWNLOAD_LIMIT = makePref("max-overall-download-limit");
// value: 1*digit
const Pref* PREF_MAX_DOWNLOAD_LIMIT = makePref("max-download-limit");
PrefPtr PREF_MAX_DOWNLOAD_LIMIT = makePref("max-download-limit");
// value: 1*digit
const Pref* PREF_STARTUP_IDLE_TIME = makePref("startup-idle-time");
PrefPtr PREF_STARTUP_IDLE_TIME = makePref("startup-idle-time");
// value: prealloc | fallc | none
const Pref* PREF_FILE_ALLOCATION = makePref("file-allocation");
PrefPtr PREF_FILE_ALLOCATION = makePref("file-allocation");
// value: 1*digit
const Pref* PREF_NO_FILE_ALLOCATION_LIMIT = makePref("no-file-allocation-limit");
PrefPtr PREF_NO_FILE_ALLOCATION_LIMIT = makePref("no-file-allocation-limit");
// value: true | false
const Pref* PREF_ALLOW_OVERWRITE = makePref("allow-overwrite");
PrefPtr PREF_ALLOW_OVERWRITE = makePref("allow-overwrite");
// value: true | false
const Pref* PREF_REALTIME_CHUNK_CHECKSUM = makePref("realtime-chunk-checksum");
PrefPtr PREF_REALTIME_CHUNK_CHECKSUM = makePref("realtime-chunk-checksum");
// value: true | false
const Pref* PREF_CHECK_INTEGRITY = makePref("check-integrity");
PrefPtr PREF_CHECK_INTEGRITY = makePref("check-integrity");
// value: string that your file system recognizes as a file name.
const Pref* PREF_NETRC_PATH = makePref("netrc-path");
PrefPtr PREF_NETRC_PATH = makePref("netrc-path");
// value:
const Pref* PREF_CONTINUE = makePref("continue");
PrefPtr PREF_CONTINUE = makePref("continue");
// value:
const Pref* PREF_NO_NETRC = makePref("no-netrc");
PrefPtr PREF_NO_NETRC = makePref("no-netrc");
// value: 1*digit
const Pref* PREF_MAX_DOWNLOADS = makePref("max-downloads");
PrefPtr PREF_MAX_DOWNLOADS = makePref("max-downloads");
// value: string that your file system recognizes as a file name.
const Pref* PREF_INPUT_FILE = makePref("input-file");
PrefPtr PREF_INPUT_FILE = makePref("input-file");
// value: true | false
const Pref* PREF_DEFERRED_INPUT = makePref("deferred-input");
PrefPtr PREF_DEFERRED_INPUT = makePref("deferred-input");
// value: 1*digit
const Pref* PREF_MAX_CONCURRENT_DOWNLOADS = makePref("max-concurrent-downloads");
PrefPtr PREF_MAX_CONCURRENT_DOWNLOADS = makePref("max-concurrent-downloads");
// value: true | false
const Pref* PREF_FORCE_SEQUENTIAL = makePref("force-sequential");
PrefPtr PREF_FORCE_SEQUENTIAL = makePref("force-sequential");
// value: true | false
const Pref* PREF_AUTO_FILE_RENAMING = makePref("auto-file-renaming");
PrefPtr PREF_AUTO_FILE_RENAMING = makePref("auto-file-renaming");
// value: true | false
const Pref* PREF_PARAMETERIZED_URI = makePref("parameterized-uri");
PrefPtr PREF_PARAMETERIZED_URI = makePref("parameterized-uri");
// value: true | false
const Pref* PREF_ALLOW_PIECE_LENGTH_CHANGE = makePref("allow-piece-length-change");
PrefPtr PREF_ALLOW_PIECE_LENGTH_CHANGE = makePref("allow-piece-length-change");
// value: true | false
const Pref* PREF_NO_CONF = makePref("no-conf");
PrefPtr PREF_NO_CONF = makePref("no-conf");
// value: string
const Pref* PREF_CONF_PATH = makePref("conf-path");
PrefPtr PREF_CONF_PATH = makePref("conf-path");
// value: 1*digit
const Pref* PREF_STOP = makePref("stop");
PrefPtr PREF_STOP = makePref("stop");
// value: true | false
const Pref* PREF_QUIET = makePref("quiet");
PrefPtr PREF_QUIET = makePref("quiet");
// value: true | false
const Pref* PREF_ASYNC_DNS = makePref("async-dns");
PrefPtr PREF_ASYNC_DNS = makePref("async-dns");
// value: 1*digit
const Pref* PREF_SUMMARY_INTERVAL = makePref("summary-interval");
PrefPtr PREF_SUMMARY_INTERVAL = makePref("summary-interval");
// value: debug, info, notice, warn, error
const Pref* PREF_LOG_LEVEL = makePref("log-level");
PrefPtr PREF_LOG_LEVEL = makePref("log-level");
// value: debug, info, notice, warn, error
const Pref* PREF_CONSOLE_LOG_LEVEL = makePref("console-log-level");
PrefPtr PREF_CONSOLE_LOG_LEVEL = makePref("console-log-level");
// value: inorder | feedback | adaptive
const Pref* PREF_URI_SELECTOR = makePref("uri-selector");
PrefPtr PREF_URI_SELECTOR = makePref("uri-selector");
// value: 1*digit
const Pref* PREF_SERVER_STAT_TIMEOUT = makePref("server-stat-timeout");
PrefPtr PREF_SERVER_STAT_TIMEOUT = makePref("server-stat-timeout");
// value: string that your file system recognizes as a file name.
const Pref* PREF_SERVER_STAT_IF = makePref("server-stat-if");
PrefPtr PREF_SERVER_STAT_IF = makePref("server-stat-if");
// value: string that your file system recognizes as a file name.
const Pref* PREF_SERVER_STAT_OF = makePref("server-stat-of");
PrefPtr PREF_SERVER_STAT_OF = makePref("server-stat-of");
// value: true | false
const Pref* PREF_REMOTE_TIME = makePref("remote-time");
PrefPtr PREF_REMOTE_TIME = makePref("remote-time");
// value: 1*digit
const Pref* PREF_MAX_FILE_NOT_FOUND = makePref("max-file-not-found");
PrefPtr PREF_MAX_FILE_NOT_FOUND = makePref("max-file-not-found");
// value: epoll | select
const Pref* PREF_EVENT_POLL = makePref("event-poll");
PrefPtr PREF_EVENT_POLL = makePref("event-poll");
// value: true | false
const Pref* PREF_ENABLE_RPC = makePref("enable-rpc");
PrefPtr PREF_ENABLE_RPC = makePref("enable-rpc");
// value: 1*digit
const Pref* PREF_RPC_LISTEN_PORT = makePref("rpc-listen-port");
PrefPtr PREF_RPC_LISTEN_PORT = makePref("rpc-listen-port");
// value: string
const Pref* PREF_RPC_USER = makePref("rpc-user");
PrefPtr PREF_RPC_USER = makePref("rpc-user");
// value: string
const Pref* PREF_RPC_PASSWD = makePref("rpc-passwd");
PrefPtr PREF_RPC_PASSWD = makePref("rpc-passwd");
// value: 1*digit
const Pref* PREF_RPC_MAX_REQUEST_SIZE = makePref("rpc-max-request-size");
PrefPtr PREF_RPC_MAX_REQUEST_SIZE = makePref("rpc-max-request-size");
// value: true | false
const Pref* PREF_RPC_LISTEN_ALL = makePref("rpc-listen-all");
PrefPtr PREF_RPC_LISTEN_ALL = makePref("rpc-listen-all");
// value: true | false
const Pref* PREF_RPC_ALLOW_ORIGIN_ALL = makePref("rpc-allow-origin-all");
PrefPtr PREF_RPC_ALLOW_ORIGIN_ALL = makePref("rpc-allow-origin-all");
// value: string that your file system recognizes as a file name.
const Pref* PREF_RPC_CERTIFICATE = makePref("rpc-certificate");
PrefPtr PREF_RPC_CERTIFICATE = makePref("rpc-certificate");
// value: string that your file system recognizes as a file name.
const Pref* PREF_RPC_PRIVATE_KEY = makePref("rpc-private-key");
PrefPtr PREF_RPC_PRIVATE_KEY = makePref("rpc-private-key");
// value: true | false
const Pref* PREF_RPC_SECURE = makePref("rpc-secure");
PrefPtr PREF_RPC_SECURE = makePref("rpc-secure");
// value: true | false
const Pref* PREF_RPC_SAVE_UPLOAD_METADATA = makePref("rpc-save-upload-metadata");
PrefPtr PREF_RPC_SAVE_UPLOAD_METADATA = makePref("rpc-save-upload-metadata");
// value: true | false
const Pref* PREF_DRY_RUN = makePref("dry-run");
PrefPtr PREF_DRY_RUN = makePref("dry-run");
// value: true | false
const Pref* PREF_REUSE_URI = makePref("reuse-uri");
PrefPtr PREF_REUSE_URI = makePref("reuse-uri");
// value: string
const Pref* PREF_ON_DOWNLOAD_START = makePref("on-download-start");
const Pref* PREF_ON_DOWNLOAD_PAUSE = makePref("on-download-pause");
const Pref* PREF_ON_DOWNLOAD_STOP = makePref("on-download-stop");
const Pref* PREF_ON_DOWNLOAD_COMPLETE = makePref("on-download-complete");
const Pref* PREF_ON_DOWNLOAD_ERROR = makePref("on-download-error");
PrefPtr PREF_ON_DOWNLOAD_START = makePref("on-download-start");
PrefPtr PREF_ON_DOWNLOAD_PAUSE = makePref("on-download-pause");
PrefPtr PREF_ON_DOWNLOAD_STOP = makePref("on-download-stop");
PrefPtr PREF_ON_DOWNLOAD_COMPLETE = makePref("on-download-complete");
PrefPtr PREF_ON_DOWNLOAD_ERROR = makePref("on-download-error");
// value: string
const Pref* PREF_INTERFACE = makePref("interface");
PrefPtr PREF_INTERFACE = makePref("interface");
// value: true | false
const Pref* PREF_DISABLE_IPV6 = makePref("disable-ipv6");
PrefPtr PREF_DISABLE_IPV6 = makePref("disable-ipv6");
// value: true | false
const Pref* PREF_HUMAN_READABLE = makePref("human-readable");
PrefPtr PREF_HUMAN_READABLE = makePref("human-readable");
// value: true | false
const Pref* PREF_REMOVE_CONTROL_FILE = makePref("remove-control-file");
PrefPtr PREF_REMOVE_CONTROL_FILE = makePref("remove-control-file");
// value: true | false
const Pref* PREF_ALWAYS_RESUME = makePref("always-resume");
PrefPtr PREF_ALWAYS_RESUME = makePref("always-resume");
// value: 1*digit
const Pref* PREF_MAX_RESUME_FAILURE_TRIES = makePref("max-resume-failure-tries");
PrefPtr PREF_MAX_RESUME_FAILURE_TRIES = makePref("max-resume-failure-tries");
// value: string that your file system recognizes as a file name.
const Pref* PREF_SAVE_SESSION = makePref("save-session");
PrefPtr PREF_SAVE_SESSION = makePref("save-session");
// value: 1*digit
const Pref* PREF_MAX_CONNECTION_PER_SERVER = makePref("max-connection-per-server");
PrefPtr PREF_MAX_CONNECTION_PER_SERVER = makePref("max-connection-per-server");
// value: 1*digit
const Pref* PREF_MIN_SPLIT_SIZE = makePref("min-split-size");
PrefPtr PREF_MIN_SPLIT_SIZE = makePref("min-split-size");
// value: true | false
const Pref* PREF_CONDITIONAL_GET = makePref("conditional-get");
PrefPtr PREF_CONDITIONAL_GET = makePref("conditional-get");
// value: true | false
const Pref* PREF_SELECT_LEAST_USED_HOST = makePref("select-least-used-host");
PrefPtr PREF_SELECT_LEAST_USED_HOST = makePref("select-least-used-host");
// value: true | false
const Pref* PREF_ENABLE_ASYNC_DNS6 = makePref("enable-async-dns6");
PrefPtr PREF_ENABLE_ASYNC_DNS6 = makePref("enable-async-dns6");
// value: 1*digit
const Pref* PREF_MAX_DOWNLOAD_RESULT = makePref("max-download-result");
PrefPtr PREF_MAX_DOWNLOAD_RESULT = makePref("max-download-result");
// value: 1*digit
const Pref* PREF_RETRY_WAIT = makePref("retry-wait");
PrefPtr PREF_RETRY_WAIT = makePref("retry-wait");
// value: string
const Pref* PREF_ASYNC_DNS_SERVER = makePref("async-dns-server");
PrefPtr PREF_ASYNC_DNS_SERVER = makePref("async-dns-server");
// value: true | false
const Pref* PREF_SHOW_CONSOLE_READOUT = makePref("show-console-readout");
PrefPtr PREF_SHOW_CONSOLE_READOUT = makePref("show-console-readout");
// value: default | inorder
const Pref* PREF_STREAM_PIECE_SELECTOR = makePref("stream-piece-selector");
PrefPtr PREF_STREAM_PIECE_SELECTOR = makePref("stream-piece-selector");
// value: true | false
const Pref* PREF_TRUNCATE_CONSOLE_READOUT = makePref("truncate-console-readout");
PrefPtr PREF_TRUNCATE_CONSOLE_READOUT = makePref("truncate-console-readout");
// value: true | false
const Pref* PREF_PAUSE = makePref("pause");
PrefPtr PREF_PAUSE = makePref("pause");
// value: default | full
const Pref* PREF_DOWNLOAD_RESULT = makePref("download-result");
PrefPtr PREF_DOWNLOAD_RESULT = makePref("download-result");
// value: true | false
const Pref* PREF_HASH_CHECK_ONLY = makePref("hash-check-only");
PrefPtr PREF_HASH_CHECK_ONLY = makePref("hash-check-only");
// values: hashType=digest
const Pref* PREF_CHECKSUM = makePref("checksum");
PrefPtr PREF_CHECKSUM = makePref("checksum");
// value: pid
const Pref* PREF_STOP_WITH_PROCESS = makePref("stop-with-process");
PrefPtr PREF_STOP_WITH_PROCESS = makePref("stop-with-process");
// value: true | false
const Pref* PREF_ENABLE_MMAP = makePref("enable-mmap");
PrefPtr PREF_ENABLE_MMAP = makePref("enable-mmap");
// value: true | false
const Pref* PREF_FORCE_SAVE = makePref("force-save");
PrefPtr PREF_FORCE_SAVE = makePref("force-save");
// value: 1*digit
const Pref* PREF_DISK_CACHE = makePref("disk-cache");
PrefPtr PREF_DISK_CACHE = makePref("disk-cache");
// value: string
const Pref* PREF_GID = makePref("gid");
PrefPtr PREF_GID = makePref("gid");
// values: 1*digit
const Pref* PREF_SAVE_SESSION_INTERVAL = makePref("save-session-interval");
PrefPtr PREF_SAVE_SESSION_INTERVAL = makePref("save-session-interval");
/**
* FTP related preferences
*/
const Pref* PREF_FTP_USER = makePref("ftp-user");
const Pref* PREF_FTP_PASSWD = makePref("ftp-passwd");
PrefPtr PREF_FTP_USER = makePref("ftp-user");
PrefPtr PREF_FTP_PASSWD = makePref("ftp-passwd");
// values: binary | ascii
const Pref* PREF_FTP_TYPE = makePref("ftp-type");
PrefPtr PREF_FTP_TYPE = makePref("ftp-type");
// values: true | false
const Pref* PREF_FTP_PASV = makePref("ftp-pasv");
PrefPtr PREF_FTP_PASV = makePref("ftp-pasv");
// values: true | false
const Pref* PREF_FTP_REUSE_CONNECTION = makePref("ftp-reuse-connection");
PrefPtr PREF_FTP_REUSE_CONNECTION = makePref("ftp-reuse-connection");
/**
* HTTP related preferences
*/
const Pref* PREF_HTTP_USER = makePref("http-user");
const Pref* PREF_HTTP_PASSWD = makePref("http-passwd");
PrefPtr PREF_HTTP_USER = makePref("http-user");
PrefPtr PREF_HTTP_PASSWD = makePref("http-passwd");
// values: string
const Pref* PREF_USER_AGENT = makePref("user-agent");
PrefPtr PREF_USER_AGENT = makePref("user-agent");
// value: string that your file system recognizes as a file name.
const Pref* PREF_LOAD_COOKIES = makePref("load-cookies");
PrefPtr PREF_LOAD_COOKIES = makePref("load-cookies");
// value: string that your file system recognizes as a file name.
const Pref* PREF_SAVE_COOKIES = makePref("save-cookies");
PrefPtr PREF_SAVE_COOKIES = makePref("save-cookies");
// values: true | false
const Pref* PREF_ENABLE_HTTP_KEEP_ALIVE = makePref("enable-http-keep-alive");
PrefPtr PREF_ENABLE_HTTP_KEEP_ALIVE = makePref("enable-http-keep-alive");
// values: true | false
const Pref* PREF_ENABLE_HTTP_PIPELINING = makePref("enable-http-pipelining");
PrefPtr PREF_ENABLE_HTTP_PIPELINING = makePref("enable-http-pipelining");
// value: 1*digit
const Pref* PREF_MAX_HTTP_PIPELINING = makePref("max-http-pipelining");
PrefPtr PREF_MAX_HTTP_PIPELINING = makePref("max-http-pipelining");
// value: string
const Pref* PREF_HEADER = makePref("header");
PrefPtr PREF_HEADER = makePref("header");
// value: string that your file system recognizes as a file name.
const Pref* PREF_CERTIFICATE = makePref("certificate");
PrefPtr PREF_CERTIFICATE = makePref("certificate");
// value: string that your file system recognizes as a file name.
const Pref* PREF_PRIVATE_KEY = makePref("private-key");
PrefPtr PREF_PRIVATE_KEY = makePref("private-key");
// value: string that your file system recognizes as a file name.
const Pref* PREF_CA_CERTIFICATE = makePref("ca-certificate");
PrefPtr PREF_CA_CERTIFICATE = makePref("ca-certificate");
// value: true | false
const Pref* PREF_CHECK_CERTIFICATE = makePref("check-certificate");
PrefPtr PREF_CHECK_CERTIFICATE = makePref("check-certificate");
// value: true | false
const Pref* PREF_USE_HEAD = makePref("use-head");
PrefPtr PREF_USE_HEAD = makePref("use-head");
// value: true | false
const Pref* PREF_HTTP_AUTH_CHALLENGE = makePref("http-auth-challenge");
PrefPtr PREF_HTTP_AUTH_CHALLENGE = makePref("http-auth-challenge");
// value: true | false
const Pref* PREF_HTTP_NO_CACHE = makePref("http-no-cache");
PrefPtr PREF_HTTP_NO_CACHE = makePref("http-no-cache");
// value: true | false
const Pref* PREF_HTTP_ACCEPT_GZIP = makePref("http-accept-gzip");
PrefPtr PREF_HTTP_ACCEPT_GZIP = makePref("http-accept-gzip");
/**
* Proxy related preferences
*/
const Pref* PREF_HTTP_PROXY = makePref("http-proxy");
const Pref* PREF_HTTPS_PROXY = makePref("https-proxy");
const Pref* PREF_FTP_PROXY = makePref("ftp-proxy");
const Pref* PREF_ALL_PROXY = makePref("all-proxy");
PrefPtr PREF_HTTP_PROXY = makePref("http-proxy");
PrefPtr PREF_HTTPS_PROXY = makePref("https-proxy");
PrefPtr PREF_FTP_PROXY = makePref("ftp-proxy");
PrefPtr PREF_ALL_PROXY = makePref("all-proxy");
// values: comma separeted hostname or domain
const Pref* PREF_NO_PROXY = makePref("no-proxy");
PrefPtr PREF_NO_PROXY = makePref("no-proxy");
// values: get | tunnel
const Pref* PREF_PROXY_METHOD = makePref("proxy-method");
const Pref* PREF_HTTP_PROXY_USER = makePref("http-proxy-user");
const Pref* PREF_HTTP_PROXY_PASSWD = makePref("http-proxy-passwd");
const Pref* PREF_HTTPS_PROXY_USER = makePref("https-proxy-user");
const Pref* PREF_HTTPS_PROXY_PASSWD = makePref("https-proxy-passwd");
const Pref* PREF_FTP_PROXY_USER = makePref("ftp-proxy-user");
const Pref* PREF_FTP_PROXY_PASSWD = makePref("ftp-proxy-passwd");
const Pref* PREF_ALL_PROXY_USER = makePref("all-proxy-user");
const Pref* PREF_ALL_PROXY_PASSWD = makePref("all-proxy-passwd");
PrefPtr PREF_PROXY_METHOD = makePref("proxy-method");
PrefPtr PREF_HTTP_PROXY_USER = makePref("http-proxy-user");
PrefPtr PREF_HTTP_PROXY_PASSWD = makePref("http-proxy-passwd");
PrefPtr PREF_HTTPS_PROXY_USER = makePref("https-proxy-user");
PrefPtr PREF_HTTPS_PROXY_PASSWD = makePref("https-proxy-passwd");
PrefPtr PREF_FTP_PROXY_USER = makePref("ftp-proxy-user");
PrefPtr PREF_FTP_PROXY_PASSWD = makePref("ftp-proxy-passwd");
PrefPtr PREF_ALL_PROXY_USER = makePref("all-proxy-user");
PrefPtr PREF_ALL_PROXY_PASSWD = makePref("all-proxy-passwd");
/**
* BitTorrent related preferences
*/
// values: 1*digit
const Pref* PREF_PEER_CONNECTION_TIMEOUT = makePref("peer-connection-timeout");
PrefPtr PREF_PEER_CONNECTION_TIMEOUT = makePref("peer-connection-timeout");
// values: 1*digit
const Pref* PREF_BT_TIMEOUT = makePref("bt-timeout");
PrefPtr PREF_BT_TIMEOUT = makePref("bt-timeout");
// values: 1*digit
const Pref* PREF_BT_REQUEST_TIMEOUT = makePref("bt-request-timeout");
PrefPtr PREF_BT_REQUEST_TIMEOUT = makePref("bt-request-timeout");
// values: true | false
const Pref* PREF_SHOW_FILES = makePref("show-files");
PrefPtr PREF_SHOW_FILES = makePref("show-files");
// values: 1*digit
const Pref* PREF_MAX_OVERALL_UPLOAD_LIMIT = makePref("max-overall-upload-limit");
PrefPtr PREF_MAX_OVERALL_UPLOAD_LIMIT = makePref("max-overall-upload-limit");
// values: 1*digit
const Pref* PREF_MAX_UPLOAD_LIMIT = makePref("max-upload-limit");
PrefPtr PREF_MAX_UPLOAD_LIMIT = makePref("max-upload-limit");
// values: a string that your file system recognizes as a file name.
const Pref* PREF_TORRENT_FILE = makePref("torrent-file");
PrefPtr PREF_TORRENT_FILE = makePref("torrent-file");
// values: 1*digit
const Pref* PREF_LISTEN_PORT = makePref("listen-port");
PrefPtr PREF_LISTEN_PORT = makePref("listen-port");
// values: true | false | mem
const Pref* PREF_FOLLOW_TORRENT = makePref("follow-torrent");
PrefPtr PREF_FOLLOW_TORRENT = makePref("follow-torrent");
// values: 1*digit * = makePref( = makePref(,|-) 1*digit);
const Pref* PREF_SELECT_FILE = makePref("select-file");
PrefPtr PREF_SELECT_FILE = makePref("select-file");
// values: 1*digit
const Pref* PREF_SEED_TIME = makePref("seed-time");
PrefPtr PREF_SEED_TIME = makePref("seed-time");
// values: 1*digit ['.' [ 1*digit ] ]
const Pref* PREF_SEED_RATIO = makePref("seed-ratio");
PrefPtr PREF_SEED_RATIO = makePref("seed-ratio");
// values: 1*digit
const Pref* PREF_BT_KEEP_ALIVE_INTERVAL = makePref("bt-keep-alive-interval");
PrefPtr PREF_BT_KEEP_ALIVE_INTERVAL = makePref("bt-keep-alive-interval");
// values: a string, less than or equals to 20 bytes length
const Pref* PREF_PEER_ID_PREFIX = makePref("peer-id-prefix");
PrefPtr PREF_PEER_ID_PREFIX = makePref("peer-id-prefix");
// values: true | false
const Pref* PREF_ENABLE_PEER_EXCHANGE = makePref("enable-peer-exchange");
PrefPtr PREF_ENABLE_PEER_EXCHANGE = makePref("enable-peer-exchange");
// values: true | false
const Pref* PREF_ENABLE_DHT = makePref("enable-dht");
PrefPtr PREF_ENABLE_DHT = makePref("enable-dht");
// values: a string
const Pref* PREF_DHT_LISTEN_ADDR = makePref("dht-listen-addr");
PrefPtr PREF_DHT_LISTEN_ADDR = makePref("dht-listen-addr");
// values: 1*digit
const Pref* PREF_DHT_LISTEN_PORT = makePref("dht-listen-port");
PrefPtr PREF_DHT_LISTEN_PORT = makePref("dht-listen-port");
// values: a string
const Pref* PREF_DHT_ENTRY_POINT_HOST = makePref("dht-entry-point-host");
PrefPtr PREF_DHT_ENTRY_POINT_HOST = makePref("dht-entry-point-host");
// values: 1*digit
const Pref* PREF_DHT_ENTRY_POINT_PORT = makePref("dht-entry-point-port");
PrefPtr PREF_DHT_ENTRY_POINT_PORT = makePref("dht-entry-point-port");
// values: a string = makePref(hostname:port);
const Pref* PREF_DHT_ENTRY_POINT = makePref("dht-entry-point");
PrefPtr PREF_DHT_ENTRY_POINT = makePref("dht-entry-point");
// values: a string
const Pref* PREF_DHT_FILE_PATH = makePref("dht-file-path");
PrefPtr PREF_DHT_FILE_PATH = makePref("dht-file-path");
// values: true | false
const Pref* PREF_ENABLE_DHT6 = makePref("enable-dht6");
PrefPtr PREF_ENABLE_DHT6 = makePref("enable-dht6");
// values: a string
const Pref* PREF_DHT_LISTEN_ADDR6 = makePref("dht-listen-addr6");
PrefPtr PREF_DHT_LISTEN_ADDR6 = makePref("dht-listen-addr6");
// values: a string
const Pref* PREF_DHT_ENTRY_POINT_HOST6 = makePref("dht-entry-point-host6");
PrefPtr PREF_DHT_ENTRY_POINT_HOST6 = makePref("dht-entry-point-host6");
// values: 1*digit
const Pref* PREF_DHT_ENTRY_POINT_PORT6 = makePref("dht-entry-point-port6");
PrefPtr PREF_DHT_ENTRY_POINT_PORT6 = makePref("dht-entry-point-port6");
// values: a string = makePref(hostname:port)
const Pref* PREF_DHT_ENTRY_POINT6 = makePref("dht-entry-point6");
PrefPtr PREF_DHT_ENTRY_POINT6 = makePref("dht-entry-point6");
// values: a string
const Pref* PREF_DHT_FILE_PATH6 = makePref("dht-file-path6");
PrefPtr PREF_DHT_FILE_PATH6 = makePref("dht-file-path6");
// values: plain | arc4
const Pref* PREF_BT_MIN_CRYPTO_LEVEL = makePref("bt-min-crypto-level");
PrefPtr PREF_BT_MIN_CRYPTO_LEVEL = makePref("bt-min-crypto-level");
// values:: true | false
const Pref* PREF_BT_REQUIRE_CRYPTO = makePref("bt-require-crypto");
PrefPtr PREF_BT_REQUIRE_CRYPTO = makePref("bt-require-crypto");
// values: 1*digit
const Pref* PREF_BT_REQUEST_PEER_SPEED_LIMIT = makePref("bt-request-peer-speed-limit");
PrefPtr PREF_BT_REQUEST_PEER_SPEED_LIMIT = makePref("bt-request-peer-speed-limit");
// values: 1*digit
const Pref* PREF_BT_MAX_OPEN_FILES = makePref("bt-max-open-files");
PrefPtr PREF_BT_MAX_OPEN_FILES = makePref("bt-max-open-files");
// values: true | false
const Pref* PREF_BT_SEED_UNVERIFIED = makePref("bt-seed-unverified");
PrefPtr PREF_BT_SEED_UNVERIFIED = makePref("bt-seed-unverified");
// values: true | false
const Pref* PREF_BT_HASH_CHECK_SEED = makePref("bt-hash-check-seed");
PrefPtr PREF_BT_HASH_CHECK_SEED = makePref("bt-hash-check-seed");
// values: 1*digit
const Pref* PREF_BT_MAX_PEERS = makePref("bt-max-peers");
PrefPtr PREF_BT_MAX_PEERS = makePref("bt-max-peers");
// values: a string = makePref(IP address)
const Pref* PREF_BT_EXTERNAL_IP = makePref("bt-external-ip");
PrefPtr PREF_BT_EXTERNAL_IP = makePref("bt-external-ip");
// values: 1*digit '=' a string that your file system recognizes as a file name.
const Pref* PREF_INDEX_OUT = makePref("index-out");
PrefPtr PREF_INDEX_OUT = makePref("index-out");
// values: 1*digit
const Pref* PREF_BT_TRACKER_INTERVAL = makePref("bt-tracker-interval");
PrefPtr PREF_BT_TRACKER_INTERVAL = makePref("bt-tracker-interval");
// values: 1*digit
const Pref* PREF_BT_STOP_TIMEOUT = makePref("bt-stop-timeout");
PrefPtr PREF_BT_STOP_TIMEOUT = makePref("bt-stop-timeout");
// values: head[=SIZE]|tail[=SIZE], ...
const Pref* PREF_BT_PRIORITIZE_PIECE = makePref("bt-prioritize-piece");
PrefPtr PREF_BT_PRIORITIZE_PIECE = makePref("bt-prioritize-piece");
// values: true | false
const Pref* PREF_BT_SAVE_METADATA = makePref("bt-save-metadata");
PrefPtr PREF_BT_SAVE_METADATA = makePref("bt-save-metadata");
// values: true | false
const Pref* PREF_BT_METADATA_ONLY = makePref("bt-metadata-only");
PrefPtr PREF_BT_METADATA_ONLY = makePref("bt-metadata-only");
// values: true | false
const Pref* PREF_BT_ENABLE_LPD = makePref("bt-enable-lpd");
PrefPtr PREF_BT_ENABLE_LPD = makePref("bt-enable-lpd");
// values: string
const Pref* PREF_BT_LPD_INTERFACE = makePref("bt-lpd-interface");
PrefPtr PREF_BT_LPD_INTERFACE = makePref("bt-lpd-interface");
// values: 1*digit
const Pref* PREF_BT_TRACKER_TIMEOUT = makePref("bt-tracker-timeout");
PrefPtr PREF_BT_TRACKER_TIMEOUT = makePref("bt-tracker-timeout");
// values: 1*digit
const Pref* PREF_BT_TRACKER_CONNECT_TIMEOUT = makePref("bt-tracker-connect-timeout");
PrefPtr PREF_BT_TRACKER_CONNECT_TIMEOUT = makePref("bt-tracker-connect-timeout");
// values: 1*digit
const Pref* PREF_DHT_MESSAGE_TIMEOUT = makePref("dht-message-timeout");
PrefPtr PREF_DHT_MESSAGE_TIMEOUT = makePref("dht-message-timeout");
// values: string
const Pref* PREF_ON_BT_DOWNLOAD_COMPLETE = makePref("on-bt-download-complete");
PrefPtr PREF_ON_BT_DOWNLOAD_COMPLETE = makePref("on-bt-download-complete");
// values: string
const Pref* PREF_BT_TRACKER = makePref("bt-tracker");
PrefPtr PREF_BT_TRACKER = makePref("bt-tracker");
// values: string
const Pref* PREF_BT_EXCLUDE_TRACKER = makePref("bt-exclude-tracker");
PrefPtr PREF_BT_EXCLUDE_TRACKER = makePref("bt-exclude-tracker");
// values: true | false
const Pref* PREF_BT_REMOVE_UNSELECTED_FILE =
PrefPtr PREF_BT_REMOVE_UNSELECTED_FILE =
makePref("bt-remove-unselected-file");
/**
* Metalink related preferences
*/
// values: a string that your file system recognizes as a file name.
const Pref* PREF_METALINK_FILE = makePref("metalink-file");
PrefPtr PREF_METALINK_FILE = makePref("metalink-file");
// values: a string
const Pref* PREF_METALINK_VERSION = makePref("metalink-version");
PrefPtr PREF_METALINK_VERSION = makePref("metalink-version");
// values: a string
const Pref* PREF_METALINK_LANGUAGE = makePref("metalink-language");
PrefPtr PREF_METALINK_LANGUAGE = makePref("metalink-language");
// values: a string
const Pref* PREF_METALINK_OS = makePref("metalink-os");
PrefPtr PREF_METALINK_OS = makePref("metalink-os");
// values: a string
const Pref* PREF_METALINK_LOCATION = makePref("metalink-location");
PrefPtr PREF_METALINK_LOCATION = makePref("metalink-location");
// values: true | false | mem
const Pref* PREF_FOLLOW_METALINK = makePref("follow-metalink");
PrefPtr PREF_FOLLOW_METALINK = makePref("follow-metalink");
// values: http | https | ftp | none
const Pref* PREF_METALINK_PREFERRED_PROTOCOL = makePref("metalink-preferred-protocol");
PrefPtr PREF_METALINK_PREFERRED_PROTOCOL = makePref("metalink-preferred-protocol");
// values: true | false
const Pref* PREF_METALINK_ENABLE_UNIQUE_PROTOCOL = makePref("metalink-enable-unique-protocol");
const Pref* PREF_METALINK_BASE_URI = makePref("metalink-base-uri");
PrefPtr PREF_METALINK_ENABLE_UNIQUE_PROTOCOL = makePref("metalink-enable-unique-protocol");
PrefPtr PREF_METALINK_BASE_URI = makePref("metalink-base-uri");
} // namespace aria2

View File

@ -48,17 +48,19 @@ struct Pref {
size_t i;
};
typedef const Pref* PrefPtr;
namespace option {
// Returns the number of options.
size_t countOption();
// Returns Pref whose ID is id. id must be less than countOption().
const Pref* i2p(size_t id);
PrefPtr i2p(size_t id);
// Returns Pref whose keyword is k. If no such Pref is found, returns
// special null Pref whose ID is 0.
const Pref* k2p(const std::string& k);
PrefPtr k2p(const std::string& k);
// Deletes resources allocated for preferences. Call this function at
// the end of the program only once.
@ -104,390 +106,390 @@ extern const std::string V_HTTP;
extern const std::string V_HTTPS;
extern const std::string V_FTP;
extern const Pref* PREF_VERSION;
extern const Pref* PREF_HELP;
extern PrefPtr PREF_VERSION;
extern PrefPtr PREF_HELP;
/**
* General preferences
*/
// values: 1*digit
extern const Pref* PREF_TIMEOUT;
extern PrefPtr PREF_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_DNS_TIMEOUT;
extern PrefPtr PREF_DNS_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_CONNECT_TIMEOUT;
extern PrefPtr PREF_CONNECT_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_MAX_TRIES;
extern PrefPtr PREF_MAX_TRIES;
// values: 1*digit
extern const Pref* PREF_AUTO_SAVE_INTERVAL;
extern PrefPtr PREF_AUTO_SAVE_INTERVAL;
// values: a string that your file system recognizes as a file name.
extern const Pref* PREF_LOG;
extern PrefPtr PREF_LOG;
// values: a string that your file system recognizes as a directory.
extern const Pref* PREF_DIR;
extern PrefPtr PREF_DIR;
// values: a string that your file system recognizes as a file name.
extern const Pref* PREF_OUT;
extern PrefPtr PREF_OUT;
// values: 1*digit
extern const Pref* PREF_SPLIT;
extern PrefPtr PREF_SPLIT;
// value: true | false
extern const Pref* PREF_DAEMON;
extern PrefPtr PREF_DAEMON;
// value: a string
extern const Pref* PREF_REFERER;
extern PrefPtr PREF_REFERER;
// value: 1*digit
extern const Pref* PREF_LOWEST_SPEED_LIMIT;
extern PrefPtr PREF_LOWEST_SPEED_LIMIT;
// value: 1*digit
extern const Pref* PREF_PIECE_LENGTH;
extern PrefPtr PREF_PIECE_LENGTH;
// value: 1*digit
extern const Pref* PREF_MAX_DOWNLOAD_LIMIT;
extern PrefPtr PREF_MAX_DOWNLOAD_LIMIT;
// value: 1*digit
extern const Pref* PREF_STARTUP_IDLE_TIME;
extern PrefPtr PREF_STARTUP_IDLE_TIME;
// value: prealloc | falloc | none
extern const Pref* PREF_FILE_ALLOCATION;
extern PrefPtr PREF_FILE_ALLOCATION;
// value: 1*digit
extern const Pref* PREF_NO_FILE_ALLOCATION_LIMIT;
extern PrefPtr PREF_NO_FILE_ALLOCATION_LIMIT;
// value: true | false
extern const Pref* PREF_ALLOW_OVERWRITE;
extern PrefPtr PREF_ALLOW_OVERWRITE;
// value: true | false
extern const Pref* PREF_REALTIME_CHUNK_CHECKSUM;
extern PrefPtr PREF_REALTIME_CHUNK_CHECKSUM;
// value: true | false
extern const Pref* PREF_CHECK_INTEGRITY;
extern PrefPtr PREF_CHECK_INTEGRITY;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_NETRC_PATH;
extern PrefPtr PREF_NETRC_PATH;
// value:
extern const Pref* PREF_CONTINUE;
extern PrefPtr PREF_CONTINUE;
// value:
extern const Pref* PREF_NO_NETRC;
extern PrefPtr PREF_NO_NETRC;
// value: 1*digit
extern const Pref* PREF_MAX_OVERALL_DOWNLOAD_LIMIT;
extern PrefPtr PREF_MAX_OVERALL_DOWNLOAD_LIMIT;
// value: 1*digit
extern const Pref* PREF_MAX_DOWNLOADS;
extern PrefPtr PREF_MAX_DOWNLOADS;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_INPUT_FILE;
extern PrefPtr PREF_INPUT_FILE;
// value: true | false
extern const Pref* PREF_DEFERRED_INPUT;
extern PrefPtr PREF_DEFERRED_INPUT;
// value: 1*digit
extern const Pref* PREF_MAX_CONCURRENT_DOWNLOADS;
extern PrefPtr PREF_MAX_CONCURRENT_DOWNLOADS;
// value: true | false
extern const Pref* PREF_FORCE_SEQUENTIAL;
extern PrefPtr PREF_FORCE_SEQUENTIAL;
// value: true | false
extern const Pref* PREF_AUTO_FILE_RENAMING;
extern PrefPtr PREF_AUTO_FILE_RENAMING;
// value: true | false
extern const Pref* PREF_PARAMETERIZED_URI;
extern PrefPtr PREF_PARAMETERIZED_URI;
// value: true | false
extern const Pref* PREF_ALLOW_PIECE_LENGTH_CHANGE;
extern PrefPtr PREF_ALLOW_PIECE_LENGTH_CHANGE;
// value: true | false
extern const Pref* PREF_NO_CONF;
extern PrefPtr PREF_NO_CONF;
// value: string
extern const Pref* PREF_CONF_PATH;
extern PrefPtr PREF_CONF_PATH;
// value: 1*digit
extern const Pref* PREF_STOP;
extern PrefPtr PREF_STOP;
// value: true | false
extern const Pref* PREF_QUIET;
extern PrefPtr PREF_QUIET;
// value: true | false
extern const Pref* PREF_ASYNC_DNS;
extern PrefPtr PREF_ASYNC_DNS;
// value: 1*digit
extern const Pref* PREF_SUMMARY_INTERVAL;
extern PrefPtr PREF_SUMMARY_INTERVAL;
// value: debug, info, notice, warn, error
extern const Pref* PREF_LOG_LEVEL;
extern PrefPtr PREF_LOG_LEVEL;
// value: debug, info, notice, warn, error
extern const Pref* PREF_CONSOLE_LOG_LEVEL;
extern PrefPtr PREF_CONSOLE_LOG_LEVEL;
// value: inorder | feedback | adaptive
extern const Pref* PREF_URI_SELECTOR;
extern PrefPtr PREF_URI_SELECTOR;
// value: 1*digit
extern const Pref* PREF_SERVER_STAT_TIMEOUT;
extern PrefPtr PREF_SERVER_STAT_TIMEOUT;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_SERVER_STAT_IF;
extern PrefPtr PREF_SERVER_STAT_IF;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_SERVER_STAT_OF;
extern PrefPtr PREF_SERVER_STAT_OF;
// value: true | false
extern const Pref* PREF_REMOTE_TIME;
extern PrefPtr PREF_REMOTE_TIME;
// value: 1*digit
extern const Pref* PREF_MAX_FILE_NOT_FOUND;
extern PrefPtr PREF_MAX_FILE_NOT_FOUND;
// value: epoll | select
extern const Pref* PREF_EVENT_POLL;
extern PrefPtr PREF_EVENT_POLL;
// value: true | false
extern const Pref* PREF_ENABLE_RPC;
extern PrefPtr PREF_ENABLE_RPC;
// value: 1*digit
extern const Pref* PREF_RPC_LISTEN_PORT;
extern PrefPtr PREF_RPC_LISTEN_PORT;
// value: string
extern const Pref* PREF_RPC_USER;
extern PrefPtr PREF_RPC_USER;
// value: string
extern const Pref* PREF_RPC_PASSWD;
extern PrefPtr PREF_RPC_PASSWD;
// value: 1*digit
extern const Pref* PREF_RPC_MAX_REQUEST_SIZE;
extern PrefPtr PREF_RPC_MAX_REQUEST_SIZE;
// value: true | false
extern const Pref* PREF_RPC_LISTEN_ALL;
extern PrefPtr PREF_RPC_LISTEN_ALL;
// value: true | false
extern const Pref* PREF_RPC_ALLOW_ORIGIN_ALL;
extern PrefPtr PREF_RPC_ALLOW_ORIGIN_ALL;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_RPC_CERTIFICATE;
extern PrefPtr PREF_RPC_CERTIFICATE;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_RPC_PRIVATE_KEY;
extern PrefPtr PREF_RPC_PRIVATE_KEY;
// value: true | false
extern const Pref* PREF_RPC_SECURE;
extern PrefPtr PREF_RPC_SECURE;
// value: true | false
extern const Pref* PREF_RPC_SAVE_UPLOAD_METADATA;
extern PrefPtr PREF_RPC_SAVE_UPLOAD_METADATA;
// value: true | false
extern const Pref* PREF_DRY_RUN;
extern PrefPtr PREF_DRY_RUN;
// value: true | false
extern const Pref* PREF_REUSE_URI;
extern PrefPtr PREF_REUSE_URI;
// value: string
extern const Pref* PREF_ON_DOWNLOAD_START;
extern const Pref* PREF_ON_DOWNLOAD_PAUSE;
extern const Pref* PREF_ON_DOWNLOAD_STOP;
extern const Pref* PREF_ON_DOWNLOAD_COMPLETE;
extern const Pref* PREF_ON_DOWNLOAD_ERROR;
extern PrefPtr PREF_ON_DOWNLOAD_START;
extern PrefPtr PREF_ON_DOWNLOAD_PAUSE;
extern PrefPtr PREF_ON_DOWNLOAD_STOP;
extern PrefPtr PREF_ON_DOWNLOAD_COMPLETE;
extern PrefPtr PREF_ON_DOWNLOAD_ERROR;
// value: string
extern const Pref* PREF_INTERFACE;
extern PrefPtr PREF_INTERFACE;
// value: true | false
extern const Pref* PREF_DISABLE_IPV6;
extern PrefPtr PREF_DISABLE_IPV6;
// value: true | false
extern const Pref* PREF_HUMAN_READABLE;
extern PrefPtr PREF_HUMAN_READABLE;
// value: true | false
extern const Pref* PREF_REMOVE_CONTROL_FILE;
extern PrefPtr PREF_REMOVE_CONTROL_FILE;
// value: true | false
extern const Pref* PREF_ALWAYS_RESUME;
extern PrefPtr PREF_ALWAYS_RESUME;
// value: 1*digit
extern const Pref* PREF_MAX_RESUME_FAILURE_TRIES;
extern PrefPtr PREF_MAX_RESUME_FAILURE_TRIES;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_SAVE_SESSION;
extern PrefPtr PREF_SAVE_SESSION;
// value: 1*digit
extern const Pref* PREF_MAX_CONNECTION_PER_SERVER;
extern PrefPtr PREF_MAX_CONNECTION_PER_SERVER;
// value: 1*digit
extern const Pref* PREF_MIN_SPLIT_SIZE;
extern PrefPtr PREF_MIN_SPLIT_SIZE;
// value: true | false
extern const Pref* PREF_CONDITIONAL_GET;
extern PrefPtr PREF_CONDITIONAL_GET;
// value: true | false
extern const Pref* PREF_SELECT_LEAST_USED_HOST;
extern PrefPtr PREF_SELECT_LEAST_USED_HOST;
// value: true | false
extern const Pref* PREF_ENABLE_ASYNC_DNS6;
extern PrefPtr PREF_ENABLE_ASYNC_DNS6;
// value: 1*digit
extern const Pref* PREF_MAX_DOWNLOAD_RESULT;
extern PrefPtr PREF_MAX_DOWNLOAD_RESULT;
// value: 1*digit
extern const Pref* PREF_RETRY_WAIT;
extern PrefPtr PREF_RETRY_WAIT;
// value: string
extern const Pref* PREF_ASYNC_DNS_SERVER;
extern PrefPtr PREF_ASYNC_DNS_SERVER;
// value: true | false
extern const Pref* PREF_SHOW_CONSOLE_READOUT;
extern PrefPtr PREF_SHOW_CONSOLE_READOUT;
// value: default | inorder | geom
extern const Pref* PREF_STREAM_PIECE_SELECTOR;
extern PrefPtr PREF_STREAM_PIECE_SELECTOR;
// value: true | false
extern const Pref* PREF_TRUNCATE_CONSOLE_READOUT;
extern PrefPtr PREF_TRUNCATE_CONSOLE_READOUT;
// value: true | false
extern const Pref* PREF_PAUSE;
extern PrefPtr PREF_PAUSE;
// value: default | full
extern const Pref* PREF_DOWNLOAD_RESULT;
extern PrefPtr PREF_DOWNLOAD_RESULT;
// value: true | false
extern const Pref* PREF_HASH_CHECK_ONLY;
extern PrefPtr PREF_HASH_CHECK_ONLY;
// values: hashType=digest
extern const Pref* PREF_CHECKSUM;
extern PrefPtr PREF_CHECKSUM;
// value: pid
extern const Pref* PREF_STOP_WITH_PROCESS;
extern PrefPtr PREF_STOP_WITH_PROCESS;
// value: true | false
extern const Pref* PREF_ENABLE_MMAP;
extern PrefPtr PREF_ENABLE_MMAP;
// value: true | false
extern const Pref* PREF_FORCE_SAVE;
extern PrefPtr PREF_FORCE_SAVE;
// value: 1*digit
extern const Pref* PREF_DISK_CACHE;
extern PrefPtr PREF_DISK_CACHE;
// value: string
extern const Pref* PREF_GID;
extern PrefPtr PREF_GID;
// values: 1*digit
extern const Pref* PREF_SAVE_SESSION_INTERVAL;
extern PrefPtr PREF_SAVE_SESSION_INTERVAL;
/**
* FTP related preferences
*/
extern const Pref* PREF_FTP_USER;
extern const Pref* PREF_FTP_PASSWD;
extern PrefPtr PREF_FTP_USER;
extern PrefPtr PREF_FTP_PASSWD;
// values: binary | ascii
extern const Pref* PREF_FTP_TYPE;
extern PrefPtr PREF_FTP_TYPE;
// values: true | false
extern const Pref* PREF_FTP_PASV;
extern PrefPtr PREF_FTP_PASV;
// values: true | false
extern const Pref* PREF_FTP_REUSE_CONNECTION;
extern PrefPtr PREF_FTP_REUSE_CONNECTION;
/**
* HTTP related preferences
*/
extern const Pref* PREF_HTTP_USER;
extern const Pref* PREF_HTTP_PASSWD;
extern PrefPtr PREF_HTTP_USER;
extern PrefPtr PREF_HTTP_PASSWD;
// values: string
extern const Pref* PREF_USER_AGENT;
extern PrefPtr PREF_USER_AGENT;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_LOAD_COOKIES;
extern PrefPtr PREF_LOAD_COOKIES;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_SAVE_COOKIES;
extern PrefPtr PREF_SAVE_COOKIES;
// values: true | false
extern const Pref* PREF_ENABLE_HTTP_KEEP_ALIVE;
extern PrefPtr PREF_ENABLE_HTTP_KEEP_ALIVE;
// values: true | false
extern const Pref* PREF_ENABLE_HTTP_PIPELINING;
extern PrefPtr PREF_ENABLE_HTTP_PIPELINING;
// value: 1*digit
extern const Pref* PREF_MAX_HTTP_PIPELINING;
extern PrefPtr PREF_MAX_HTTP_PIPELINING;
// value: string
extern const Pref* PREF_HEADER;
extern PrefPtr PREF_HEADER;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_CERTIFICATE;
extern PrefPtr PREF_CERTIFICATE;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_PRIVATE_KEY;
extern PrefPtr PREF_PRIVATE_KEY;
// value: string that your file system recognizes as a file name.
extern const Pref* PREF_CA_CERTIFICATE;
extern PrefPtr PREF_CA_CERTIFICATE;
// value: true | false
extern const Pref* PREF_CHECK_CERTIFICATE;
extern PrefPtr PREF_CHECK_CERTIFICATE;
// value: true | false
extern const Pref* PREF_USE_HEAD;
extern PrefPtr PREF_USE_HEAD;
// value: true | false
extern const Pref* PREF_HTTP_AUTH_CHALLENGE;
extern PrefPtr PREF_HTTP_AUTH_CHALLENGE;
// value: true | false
extern const Pref* PREF_HTTP_NO_CACHE;
extern PrefPtr PREF_HTTP_NO_CACHE;
// value: true | false
extern const Pref* PREF_HTTP_ACCEPT_GZIP;
extern PrefPtr PREF_HTTP_ACCEPT_GZIP;
/**;
* Proxy related preferences
*/
extern const Pref* PREF_HTTP_PROXY;
extern const Pref* PREF_HTTPS_PROXY;
extern const Pref* PREF_FTP_PROXY;
extern const Pref* PREF_ALL_PROXY;
extern PrefPtr PREF_HTTP_PROXY;
extern PrefPtr PREF_HTTPS_PROXY;
extern PrefPtr PREF_FTP_PROXY;
extern PrefPtr PREF_ALL_PROXY;
// values: comma separeted hostname or domain
extern const Pref* PREF_NO_PROXY;
extern PrefPtr PREF_NO_PROXY;
// values: get | tunnel
extern const Pref* PREF_PROXY_METHOD;
extern const Pref* PREF_HTTP_PROXY_USER;
extern const Pref* PREF_HTTP_PROXY_PASSWD;
extern const Pref* PREF_HTTPS_PROXY_USER;
extern const Pref* PREF_HTTPS_PROXY_PASSWD;
extern const Pref* PREF_FTP_PROXY_USER;
extern const Pref* PREF_FTP_PROXY_PASSWD;
extern const Pref* PREF_ALL_PROXY_USER;
extern const Pref* PREF_ALL_PROXY_PASSWD;
extern PrefPtr PREF_PROXY_METHOD;
extern PrefPtr PREF_HTTP_PROXY_USER;
extern PrefPtr PREF_HTTP_PROXY_PASSWD;
extern PrefPtr PREF_HTTPS_PROXY_USER;
extern PrefPtr PREF_HTTPS_PROXY_PASSWD;
extern PrefPtr PREF_FTP_PROXY_USER;
extern PrefPtr PREF_FTP_PROXY_PASSWD;
extern PrefPtr PREF_ALL_PROXY_USER;
extern PrefPtr PREF_ALL_PROXY_PASSWD;
/**
* BitTorrent related preferences
*/
// values: 1*digit
extern const Pref* PREF_PEER_CONNECTION_TIMEOUT;
extern PrefPtr PREF_PEER_CONNECTION_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_BT_TIMEOUT;
extern PrefPtr PREF_BT_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_BT_REQUEST_TIMEOUT;
extern PrefPtr PREF_BT_REQUEST_TIMEOUT;
// values: true | false
extern const Pref* PREF_SHOW_FILES;
extern PrefPtr PREF_SHOW_FILES;
// values: 1*digit
extern const Pref* PREF_MAX_OVERALL_UPLOAD_LIMIT;
extern PrefPtr PREF_MAX_OVERALL_UPLOAD_LIMIT;
// values: 1*digit
extern const Pref* PREF_MAX_UPLOAD_LIMIT;
extern PrefPtr PREF_MAX_UPLOAD_LIMIT;
// values: a string that your file system recognizes as a file name.
extern const Pref* PREF_TORRENT_FILE;
extern PrefPtr PREF_TORRENT_FILE;
// values: 1*digit
extern const Pref* PREF_LISTEN_PORT;
extern PrefPtr PREF_LISTEN_PORT;
// values: true | false | mem
extern const Pref* PREF_FOLLOW_TORRENT;
extern PrefPtr PREF_FOLLOW_TORRENT;
// values: 1*digit *( (,|-) 1*digit)
extern const Pref* PREF_SELECT_FILE;
extern PrefPtr PREF_SELECT_FILE;
// values: 1*digit
extern const Pref* PREF_SEED_TIME;
extern PrefPtr PREF_SEED_TIME;
// values: 1*digit ['.' [ 1*digit ] ]
extern const Pref* PREF_SEED_RATIO;
extern PrefPtr PREF_SEED_RATIO;
// values: 1*digit
extern const Pref* PREF_BT_KEEP_ALIVE_INTERVAL;
extern PrefPtr PREF_BT_KEEP_ALIVE_INTERVAL;
// values: a string, less than or equals to 20 bytes length
extern const Pref* PREF_PEER_ID_PREFIX;
extern PrefPtr PREF_PEER_ID_PREFIX;
// values: true | false
extern const Pref* PREF_ENABLE_PEER_EXCHANGE;
extern PrefPtr PREF_ENABLE_PEER_EXCHANGE;
// values: true | false
extern const Pref* PREF_ENABLE_DHT;
extern PrefPtr PREF_ENABLE_DHT;
// values: a string
extern const Pref* PREF_DHT_LISTEN_ADDR;
extern PrefPtr PREF_DHT_LISTEN_ADDR;
// values: 1*digit
extern const Pref* PREF_DHT_LISTEN_PORT;
extern PrefPtr PREF_DHT_LISTEN_PORT;
// values: a string
extern const Pref* PREF_DHT_ENTRY_POINT_HOST;
extern PrefPtr PREF_DHT_ENTRY_POINT_HOST;
// values: 1*digit
extern const Pref* PREF_DHT_ENTRY_POINT_PORT;
extern PrefPtr PREF_DHT_ENTRY_POINT_PORT;
// values: a string (hostname:port)
extern const Pref* PREF_DHT_ENTRY_POINT;
extern PrefPtr PREF_DHT_ENTRY_POINT;
// values: a string
extern const Pref* PREF_DHT_FILE_PATH;
extern PrefPtr PREF_DHT_FILE_PATH;
// values: true | false
extern const Pref* PREF_ENABLE_DHT6;
extern PrefPtr PREF_ENABLE_DHT6;
// values: a string
extern const Pref* PREF_DHT_LISTEN_ADDR6;
extern PrefPtr PREF_DHT_LISTEN_ADDR6;
// values: a string
extern const Pref* PREF_DHT_ENTRY_POINT_HOST6;
extern PrefPtr PREF_DHT_ENTRY_POINT_HOST6;
// values: 1*digit
extern const Pref* PREF_DHT_ENTRY_POINT_PORT6;
extern PrefPtr PREF_DHT_ENTRY_POINT_PORT6;
// values: a string (hostname:port)
extern const Pref* PREF_DHT_ENTRY_POINT6;
extern PrefPtr PREF_DHT_ENTRY_POINT6;
// values: a string
extern const Pref* PREF_DHT_FILE_PATH6;
extern PrefPtr PREF_DHT_FILE_PATH6;
// values: plain | arc4
extern const Pref* PREF_BT_MIN_CRYPTO_LEVEL;
extern PrefPtr PREF_BT_MIN_CRYPTO_LEVEL;
// values:: true | false
extern const Pref* PREF_BT_REQUIRE_CRYPTO;
extern PrefPtr PREF_BT_REQUIRE_CRYPTO;
// values: 1*digit
extern const Pref* PREF_BT_REQUEST_PEER_SPEED_LIMIT;
extern PrefPtr PREF_BT_REQUEST_PEER_SPEED_LIMIT;
// values: 1*digit
extern const Pref* PREF_BT_MAX_OPEN_FILES;
extern PrefPtr PREF_BT_MAX_OPEN_FILES;
// values: true | false
extern const Pref* PREF_BT_SEED_UNVERIFIED;
extern PrefPtr PREF_BT_SEED_UNVERIFIED;
// values: true | false
extern const Pref* PREF_BT_HASH_CHECK_SEED;
extern PrefPtr PREF_BT_HASH_CHECK_SEED;
// values: 1*digit
extern const Pref* PREF_BT_MAX_PEERS;
extern PrefPtr PREF_BT_MAX_PEERS;
// values: a string (IP address)
extern const Pref* PREF_BT_EXTERNAL_IP;
extern PrefPtr PREF_BT_EXTERNAL_IP;
// values: 1*digit '=' a string that your file system recognizes as a file name.
extern const Pref* PREF_INDEX_OUT;
extern PrefPtr PREF_INDEX_OUT;
// values: 1*digit
extern const Pref* PREF_BT_TRACKER_INTERVAL;
extern PrefPtr PREF_BT_TRACKER_INTERVAL;
// values: 1*digit
extern const Pref* PREF_BT_STOP_TIMEOUT;
extern PrefPtr PREF_BT_STOP_TIMEOUT;
// values: head[=SIZE]|tail[=SIZE], ...
extern const Pref* PREF_BT_PRIORITIZE_PIECE;
extern PrefPtr PREF_BT_PRIORITIZE_PIECE;
// values: true | false
extern const Pref* PREF_BT_SAVE_METADATA;
extern PrefPtr PREF_BT_SAVE_METADATA;
// values: true | false
extern const Pref* PREF_BT_METADATA_ONLY;
extern PrefPtr PREF_BT_METADATA_ONLY;
// values: true | false
extern const Pref* PREF_BT_ENABLE_LPD;
extern PrefPtr PREF_BT_ENABLE_LPD;
// values: string
extern const Pref* PREF_BT_LPD_INTERFACE;
extern PrefPtr PREF_BT_LPD_INTERFACE;
// values: 1*digit
extern const Pref* PREF_BT_TRACKER_TIMEOUT;
extern PrefPtr PREF_BT_TRACKER_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_BT_TRACKER_CONNECT_TIMEOUT;
extern PrefPtr PREF_BT_TRACKER_CONNECT_TIMEOUT;
// values: 1*digit
extern const Pref* PREF_DHT_MESSAGE_TIMEOUT;
extern PrefPtr PREF_DHT_MESSAGE_TIMEOUT;
// values: string
extern const Pref* PREF_ON_BT_DOWNLOAD_COMPLETE;
extern PrefPtr PREF_ON_BT_DOWNLOAD_COMPLETE;
// values: string
extern const Pref* PREF_BT_TRACKER;
extern PrefPtr PREF_BT_TRACKER;
// values: string
extern const Pref* PREF_BT_EXCLUDE_TRACKER;
extern PrefPtr PREF_BT_EXCLUDE_TRACKER;
// values: true | false
extern const Pref* PREF_BT_REMOVE_UNSELECTED_FILE;
extern PrefPtr PREF_BT_REMOVE_UNSELECTED_FILE;
/**
* Metalink related preferences
*/
// values: a string that your file system recognizes as a file name.
extern const Pref* PREF_METALINK_FILE;
extern PrefPtr PREF_METALINK_FILE;
// values: a string
extern const Pref* PREF_METALINK_VERSION;
extern PrefPtr PREF_METALINK_VERSION;
// values: a string
extern const Pref* PREF_METALINK_LANGUAGE;
extern PrefPtr PREF_METALINK_LANGUAGE;
// values: a string
extern const Pref* PREF_METALINK_OS;
extern PrefPtr PREF_METALINK_OS;
// values: a string
extern const Pref* PREF_METALINK_LOCATION;
extern PrefPtr PREF_METALINK_LOCATION;
// values: true | false | mem
extern const Pref* PREF_FOLLOW_METALINK;
extern PrefPtr PREF_FOLLOW_METALINK;
// values: http | https | ftp | none
extern const Pref* PREF_METALINK_PREFERRED_PROTOCOL;
extern PrefPtr PREF_METALINK_PREFERRED_PROTOCOL;
// values: true | false
extern const Pref* PREF_METALINK_ENABLE_UNIQUE_PROTOCOL;
extern PrefPtr PREF_METALINK_ENABLE_UNIQUE_PROTOCOL;
// values: a string
extern const Pref* PREF_METALINK_BASE_URI;
extern PrefPtr PREF_METALINK_BASE_URI;
} // namespace aria2

View File

@ -1896,13 +1896,13 @@ void executeHook
void executeHookByOptName
(const std::shared_ptr<RequestGroup>& group, const Option* option,
const Pref* pref)
PrefPtr pref)
{
executeHookByOptName(group.get(), option, pref);
}
void executeHookByOptName
(const RequestGroup* group, const Option* option, const Pref* pref)
(const RequestGroup* group, const Option* option, PrefPtr pref)
{
const std::string& cmd = option->get(pref);
if(!cmd.empty()) {

View File

@ -76,6 +76,7 @@ class FileEntry;
class RequestGroup;
class Option;
struct Pref;
typedef const Pref* PrefPtr;
#define STRTOLL(X) strtoll(X, reinterpret_cast<char**>(0), 10)
#define STRTOULL(X) strtoull(X, reinterpret_cast<char**>(0), 10)
@ -781,11 +782,11 @@ bool inSameCidrBlock
// No throw
void executeHookByOptName
(const std::shared_ptr<RequestGroup>& group, const Option* option,
const Pref* pref);
PrefPtr pref);
// No throw
void executeHookByOptName
(const RequestGroup* group, const Option* option, const Pref* pref);
(const RequestGroup* group, const Option* option, PrefPtr pref);
std::string createSafePath(const std::string& dir, const std::string& filename);