mirror of https://github.com/trapexit/mergerfs.git
Antonio SJ Musumeci
2 years ago
16 changed files with 17 additions and 743 deletions
-
2src/branches.cpp
-
49src/category.cpp
-
107src/category.hpp
-
2src/fs_clonepath_branches.cpp
-
22src/fs_movefile.hpp
-
62src/func.cpp
-
185src/func.hpp
-
46src/funcs.hpp
-
2src/fuse_link_policy_all.hpp
-
23src/fuse_listxattr.cpp
-
2src/fuse_rename_policy_all.hpp
-
2src/fuse_statfs_policy_branch.hpp
-
2src/fuse_statfs_policy_full.hpp
-
1src/fuse_truncate.cpp
-
132src/policies.cpp
-
121src/policies.hpp
@ -1,49 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2020, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#include "category.hpp"
|
|||
#include "errno.hpp"
|
|||
#include "str.hpp"
|
|||
|
|||
#include <string>
|
|||
|
|||
int |
|||
Category::Base::from_string(const std::string &s_) |
|||
{ |
|||
int rv; |
|||
|
|||
for(auto func : funcs) |
|||
{ |
|||
rv = func->from_string(s_); |
|||
if(rv < 0) |
|||
return rv; |
|||
} |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
std::string |
|||
Category::Base::to_string(void) const |
|||
{ |
|||
std::set<std::string> rv; |
|||
|
|||
for(auto func : funcs) |
|||
rv.insert(func->to_string()); |
|||
|
|||
return str::join(rv,','); |
|||
} |
@ -1,107 +0,0 @@ |
|||
/*
|
|||
Copyright (c) 2020, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#pragma once
|
|||
|
|||
#include "tofrom_string.hpp"
|
|||
#include "funcs.hpp"
|
|||
#include "func.hpp"
|
|||
|
|||
#include <string>
|
|||
|
|||
namespace Category |
|||
{ |
|||
class Base : public ToFromString |
|||
{ |
|||
public: |
|||
int from_string(const std::string &s) final; |
|||
std::string to_string() const final; |
|||
|
|||
protected: |
|||
std::vector<ToFromString*> funcs; |
|||
}; |
|||
|
|||
class Action final : public Base |
|||
{ |
|||
private: |
|||
Action(); |
|||
|
|||
public: |
|||
Action(Funcs &funcs_) |
|||
{ |
|||
funcs.push_back(&funcs_.chmod); |
|||
funcs.push_back(&funcs_.chown); |
|||
funcs.push_back(&funcs_.link); |
|||
funcs.push_back(&funcs_.removexattr); |
|||
funcs.push_back(&funcs_.rename); |
|||
funcs.push_back(&funcs_.rmdir); |
|||
funcs.push_back(&funcs_.setxattr); |
|||
funcs.push_back(&funcs_.truncate); |
|||
funcs.push_back(&funcs_.unlink); |
|||
funcs.push_back(&funcs_.utimens); |
|||
} |
|||
}; |
|||
|
|||
class Create final : public Base |
|||
{ |
|||
private: |
|||
Create(); |
|||
|
|||
public: |
|||
Create(Funcs &funcs_) |
|||
{ |
|||
funcs.push_back(&funcs_.create); |
|||
funcs.push_back(&funcs_.mkdir); |
|||
funcs.push_back(&funcs_.mknod); |
|||
funcs.push_back(&funcs_.symlink); |
|||
} |
|||
}; |
|||
|
|||
class Search final : public Base |
|||
{ |
|||
private: |
|||
Search(); |
|||
|
|||
public: |
|||
Search(Funcs &funcs_) |
|||
{ |
|||
funcs.push_back(&funcs_.access); |
|||
funcs.push_back(&funcs_.getattr); |
|||
funcs.push_back(&funcs_.getxattr); |
|||
funcs.push_back(&funcs_.listxattr); |
|||
funcs.push_back(&funcs_.open); |
|||
funcs.push_back(&funcs_.readlink); |
|||
} |
|||
}; |
|||
} |
|||
|
|||
class Categories final |
|||
{ |
|||
private: |
|||
Categories(); |
|||
|
|||
public: |
|||
Categories(Funcs &funcs_) |
|||
: action(funcs_), |
|||
create(funcs_), |
|||
search(funcs_) |
|||
{} |
|||
|
|||
public: |
|||
Category::Action action; |
|||
Category::Create create; |
|||
Category::Search search; |
|||
}; |
@ -1,62 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2019, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#include "func.hpp"
|
|||
|
|||
|
|||
int |
|||
Func::Base::Action::from_string(const std::string &policyname_) |
|||
{ |
|||
policy = Policies::Action::find(policyname_); |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
std::string |
|||
Func::Base::Action::to_string(void) const |
|||
{ |
|||
return policy.name(); |
|||
} |
|||
|
|||
int |
|||
Func::Base::Create::from_string(const std::string &policyname_) |
|||
{ |
|||
policy = Policies::Create::find(policyname_); |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
std::string |
|||
Func::Base::Create::to_string(void) const |
|||
{ |
|||
return policy.name(); |
|||
} |
|||
|
|||
int |
|||
Func::Base::Search::from_string(const std::string &policyname_) |
|||
{ |
|||
policy = Policies::Search::find(policyname_); |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
std::string |
|||
Func::Base::Search::to_string(void) const |
|||
{ |
|||
return policy.name(); |
|||
} |
@ -1,185 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2019, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#pragma once
|
|||
|
|||
#include "from_toml.hpp"
|
|||
#include "policies.hpp"
|
|||
#include "policy.hpp"
|
|||
#include "tofrom_string.hpp"
|
|||
|
|||
#include <string>
|
|||
|
|||
|
|||
namespace Func |
|||
{ |
|||
namespace Base |
|||
{ |
|||
class Action : public ToFromString |
|||
{ |
|||
public: |
|||
Action(Policy::ActionImpl *policy_) |
|||
: policy(policy_) |
|||
{} |
|||
|
|||
public: |
|||
int from_string(const std::string &s) final; |
|||
std::string to_string() const final; |
|||
|
|||
public: |
|||
Policy::Action policy; |
|||
}; |
|||
|
|||
class Create : public ToFromString |
|||
{ |
|||
public: |
|||
Create(Policy::CreateImpl *policy_) |
|||
: policy(policy_) |
|||
{} |
|||
|
|||
public: |
|||
int from_string(const std::string &s) final; |
|||
std::string to_string() const final; |
|||
|
|||
public: |
|||
Policy::Create policy; |
|||
}; |
|||
|
|||
class Search : public ToFromString |
|||
{ |
|||
public: |
|||
Search(Policy::SearchImpl *policy_) |
|||
: policy(policy_) |
|||
{} |
|||
|
|||
public: |
|||
int from_string(const std::string &s) final; |
|||
std::string to_string() const final; |
|||
|
|||
public: |
|||
Policy::Search policy; |
|||
}; |
|||
|
|||
class ActionDefault : public Action |
|||
{ |
|||
public: |
|||
ActionDefault() |
|||
: Func::Base::Action(&Policies::Action::epall) |
|||
{ |
|||
} |
|||
}; |
|||
|
|||
class CreateDefault : public Create |
|||
{ |
|||
public: |
|||
CreateDefault() |
|||
: Func::Base::Create(&Policies::Create::epmfs) |
|||
{ |
|||
} |
|||
}; |
|||
|
|||
class SearchDefault : public Search |
|||
{ |
|||
public: |
|||
SearchDefault() |
|||
: Func::Base::Search(&Policies::Search::ff) |
|||
{ |
|||
} |
|||
}; |
|||
} |
|||
|
|||
class Access final : public Base::SearchDefault |
|||
{ |
|||
}; |
|||
|
|||
class Chmod final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Chown final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Create final : public Base::CreateDefault |
|||
{ |
|||
}; |
|||
|
|||
class GetAttr final : public Base::SearchDefault |
|||
{ |
|||
}; |
|||
|
|||
class GetXAttr final : public Base::SearchDefault |
|||
{ |
|||
}; |
|||
|
|||
class Link final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class ListXAttr final : public Base::SearchDefault |
|||
{ |
|||
}; |
|||
|
|||
class Mkdir final : public Base::CreateDefault |
|||
{ |
|||
}; |
|||
|
|||
class Mknod final : public Base::CreateDefault |
|||
{ |
|||
}; |
|||
|
|||
class Open final : public Base::SearchDefault |
|||
{ |
|||
}; |
|||
|
|||
class Readlink final : public Base::SearchDefault |
|||
{ |
|||
}; |
|||
|
|||
class RemoveXAttr final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Rename final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Rmdir final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class SetXAttr final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Symlink final : public Base::CreateDefault |
|||
{ |
|||
}; |
|||
|
|||
class Truncate final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Unlink final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
|
|||
class Utimens final : public Base::ActionDefault |
|||
{ |
|||
}; |
|||
} |
@ -1,46 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2019, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#pragma once
|
|||
|
|||
#include "func.hpp"
|
|||
|
|||
|
|||
struct Funcs |
|||
{ |
|||
Func::Access access; |
|||
Func::Chmod chmod; |
|||
Func::Chown chown; |
|||
Func::Create create; |
|||
Func::GetAttr getattr; |
|||
Func::GetXAttr getxattr; |
|||
Func::Link link; |
|||
Func::ListXAttr listxattr; |
|||
Func::Mkdir mkdir; |
|||
Func::Mknod mknod; |
|||
Func::Open open; |
|||
Func::Readlink readlink; |
|||
Func::RemoveXAttr removexattr; |
|||
Func::Rename rename; |
|||
Func::Rmdir rmdir; |
|||
Func::SetXAttr setxattr; |
|||
Func::Symlink symlink; |
|||
Func::Truncate truncate; |
|||
Func::Unlink unlink; |
|||
Func::Utimens utimens; |
|||
}; |
@ -1,132 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2020, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#include "policies.hpp"
|
|||
|
|||
#define IFERTA(X) if(name_ == #X) return &Policies::Action::X;
|
|||
#define IFERTC(X) if(name_ == #X) return &Policies::Create::X;
|
|||
#define IFERTS(X) if(name_ == #X) return &Policies::Search::X;
|
|||
|
|||
#define IFERT(FUNC) \
|
|||
FUNC(all) \ |
|||
FUNC(epall) \ |
|||
FUNC(epff) \ |
|||
FUNC(eplfs) \ |
|||
FUNC(eplus) \ |
|||
FUNC(epmfs) \ |
|||
FUNC(eppfrd) \ |
|||
FUNC(eprand) \ |
|||
FUNC(erofs) \ |
|||
FUNC(ff) \ |
|||
FUNC(lfs) \ |
|||
FUNC(lus) \ |
|||
FUNC(mfs) \ |
|||
FUNC(msplfs) \ |
|||
FUNC(msplus) \ |
|||
FUNC(mspmfs) \ |
|||
FUNC(msppfrd) \ |
|||
FUNC(newest) \ |
|||
FUNC(pfrd) \ |
|||
FUNC(rand) |
|||
|
|||
Policy::ActionImpl* |
|||
Policies::Action::find(const std::string &name_) |
|||
{ |
|||
IFERT(IFERTA); |
|||
|
|||
return NULL; |
|||
} |
|||
|
|||
Policy::CreateImpl* |
|||
Policies::Create::find(const std::string &name_) |
|||
{ |
|||
IFERT(IFERTC); |
|||
|
|||
return NULL; |
|||
} |
|||
|
|||
Policy::SearchImpl* |
|||
Policies::Search::find(const std::string &name_) |
|||
{ |
|||
IFERT(IFERTS); |
|||
|
|||
return NULL; |
|||
} |
|||
|
|||
Policy::All::Action Policies::Action::all; |
|||
Policy::EPAll::Action Policies::Action::epall; |
|||
Policy::EPFF::Action Policies::Action::epff; |
|||
Policy::EPLFS::Action Policies::Action::eplfs; |
|||
Policy::EPLUS::Action Policies::Action::eplus; |
|||
Policy::EPMFS::Action Policies::Action::epmfs; |
|||
Policy::EPPFRD::Action Policies::Action::eppfrd; |
|||
Policy::EPRand::Action Policies::Action::eprand; |
|||
Policy::ERoFS::Action Policies::Action::erofs; |
|||
Policy::FF::Action Policies::Action::ff; |
|||
Policy::LFS::Action Policies::Action::lfs; |
|||
Policy::LUS::Action Policies::Action::lus; |
|||
Policy::MFS::Action Policies::Action::mfs; |
|||
Policy::MSPLFS::Action Policies::Action::msplfs; |
|||
Policy::MSPLUS::Action Policies::Action::msplus; |
|||
Policy::MSPMFS::Action Policies::Action::mspmfs; |
|||
Policy::MSPPFRD::Action Policies::Action::msppfrd; |
|||
Policy::Newest::Action Policies::Action::newest; |
|||
Policy::PFRD::Action Policies::Action::pfrd; |
|||
Policy::Rand::Action Policies::Action::rand; |
|||
|
|||
Policy::All::Create Policies::Create::all; |
|||
Policy::EPAll::Create Policies::Create::epall; |
|||
Policy::EPFF::Create Policies::Create::epff; |
|||
Policy::EPLFS::Create Policies::Create::eplfs; |
|||
Policy::EPLUS::Create Policies::Create::eplus; |
|||
Policy::EPMFS::Create Policies::Create::epmfs; |
|||
Policy::EPPFRD::Create Policies::Create::eppfrd; |
|||
Policy::EPRand::Create Policies::Create::eprand; |
|||
Policy::ERoFS::Create Policies::Create::erofs; |
|||
Policy::FF::Create Policies::Create::ff; |
|||
Policy::LFS::Create Policies::Create::lfs; |
|||
Policy::LUS::Create Policies::Create::lus; |
|||
Policy::MFS::Create Policies::Create::mfs; |
|||
Policy::MSPLFS::Create Policies::Create::msplfs; |
|||
Policy::MSPLUS::Create Policies::Create::msplus; |
|||
Policy::MSPMFS::Create Policies::Create::mspmfs; |
|||
Policy::MSPPFRD::Create Policies::Create::msppfrd; |
|||
Policy::Newest::Create Policies::Create::newest; |
|||
Policy::PFRD::Create Policies::Create::pfrd; |
|||
Policy::Rand::Create Policies::Create::rand; |
|||
|
|||
Policy::All::Search Policies::Search::all; |
|||
Policy::EPAll::Search Policies::Search::epall; |
|||
Policy::EPFF::Search Policies::Search::epff; |
|||
Policy::EPLFS::Search Policies::Search::eplfs; |
|||
Policy::EPLUS::Search Policies::Search::eplus; |
|||
Policy::EPMFS::Search Policies::Search::epmfs; |
|||
Policy::EPPFRD::Search Policies::Search::eppfrd; |
|||
Policy::EPRand::Search Policies::Search::eprand; |
|||
Policy::ERoFS::Search Policies::Search::erofs; |
|||
Policy::FF::Search Policies::Search::ff; |
|||
Policy::LFS::Search Policies::Search::lfs; |
|||
Policy::LUS::Search Policies::Search::lus; |
|||
Policy::MFS::Search Policies::Search::mfs; |
|||
Policy::MSPLFS::Search Policies::Search::msplfs; |
|||
Policy::MSPLUS::Search Policies::Search::msplus; |
|||
Policy::MSPMFS::Search Policies::Search::mspmfs; |
|||
Policy::MSPPFRD::Search Policies::Search::msppfrd; |
|||
Policy::Newest::Search Policies::Search::newest; |
|||
Policy::PFRD::Search Policies::Search::pfrd; |
|||
Policy::Rand::Search Policies::Search::rand; |
@ -1,121 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2020, Antonio SJ Musumeci <trapexit@spawn.link> |
|||
|
|||
Permission to use, copy, modify, and/or distribute this software for any |
|||
purpose with or without fee is hereby granted, provided that the above |
|||
copyright notice and this permission notice appear in all copies. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
*/ |
|||
|
|||
#pragma once
|
|||
|
|||
#include "policy_all.hpp"
|
|||
#include "policy_epall.hpp"
|
|||
#include "policy_epff.hpp"
|
|||
#include "policy_eplfs.hpp"
|
|||
#include "policy_eplus.hpp"
|
|||
#include "policy_epmfs.hpp"
|
|||
#include "policy_eppfrd.hpp"
|
|||
#include "policy_eprand.hpp"
|
|||
#include "policy_erofs.hpp"
|
|||
#include "policy_ff.hpp"
|
|||
#include "policy_lfs.hpp"
|
|||
#include "policy_lus.hpp"
|
|||
#include "policy_mfs.hpp"
|
|||
#include "policy_msplfs.hpp"
|
|||
#include "policy_msplus.hpp"
|
|||
#include "policy_mspmfs.hpp"
|
|||
#include "policy_msppfrd.hpp"
|
|||
#include "policy_newest.hpp"
|
|||
#include "policy_pfrd.hpp"
|
|||
#include "policy_rand.hpp"
|
|||
|
|||
struct Policies |
|||
{ |
|||
struct Action |
|||
{ |
|||
static Policy::ActionImpl *find(const std::string &name); |
|||
|
|||
static Policy::All::Action all; |
|||
static Policy::EPAll::Action epall; |
|||
static Policy::EPFF::Action epff; |
|||
static Policy::EPLFS::Action eplfs; |
|||
static Policy::EPLUS::Action eplus; |
|||
static Policy::EPMFS::Action epmfs; |
|||
static Policy::EPPFRD::Action eppfrd; |
|||
static Policy::EPRand::Action eprand; |
|||
static Policy::ERoFS::Action erofs; |
|||
static Policy::FF::Action ff; |
|||
static Policy::LFS::Action lfs; |
|||
static Policy::LUS::Action lus; |
|||
static Policy::MFS::Action mfs; |
|||
static Policy::MSPLFS::Action msplfs; |
|||
static Policy::MSPLUS::Action msplus; |
|||
static Policy::MSPMFS::Action mspmfs; |
|||
static Policy::MSPPFRD::Action msppfrd; |
|||
static Policy::Newest::Action newest; |
|||
static Policy::PFRD::Action pfrd; |
|||
static Policy::Rand::Action rand; |
|||
}; |
|||
|
|||
struct Create |
|||
{ |
|||
static Policy::CreateImpl *find(const std::string &name); |
|||
|
|||
static Policy::All::Create all; |
|||
static Policy::EPAll::Create epall; |
|||
static Policy::EPFF::Create epff; |
|||
static Policy::EPLFS::Create eplfs; |
|||
static Policy::EPLUS::Create eplus; |
|||
static Policy::EPMFS::Create epmfs; |
|||
static Policy::EPPFRD::Create eppfrd; |
|||
static Policy::EPRand::Create eprand; |
|||
static Policy::ERoFS::Create erofs; |
|||
static Policy::FF::Create ff; |
|||
static Policy::LFS::Create lfs; |
|||
static Policy::LUS::Create lus; |
|||
static Policy::MFS::Create mfs; |
|||
static Policy::MSPLFS::Create msplfs; |
|||
static Policy::MSPLUS::Create msplus; |
|||
static Policy::MSPMFS::Create mspmfs; |
|||
static Policy::MSPPFRD::Create msppfrd; |
|||
static Policy::Newest::Create newest; |
|||
static Policy::PFRD::Create pfrd; |
|||
static Policy::Rand::Create rand; |
|||
}; |
|||
|
|||
struct Search |
|||
{ |
|||
static Policy::SearchImpl *find(const std::string &name); |
|||
|
|||
static Policy::All::Search all; |
|||
static Policy::EPAll::Search epall; |
|||
static Policy::EPFF::Search epff; |
|||
static Policy::EPLFS::Search eplfs; |
|||
static Policy::EPLUS::Search eplus; |
|||
static Policy::EPMFS::Search epmfs; |
|||
static Policy::EPPFRD::Search eppfrd; |
|||
static Policy::EPRand::Search eprand; |
|||
static Policy::ERoFS::Search erofs; |
|||
static Policy::FF::Search ff; |
|||
static Policy::LFS::Search lfs; |
|||
static Policy::LUS::Search lus; |
|||
static Policy::MFS::Search mfs; |
|||
static Policy::MSPLFS::Search msplfs; |
|||
static Policy::MSPLUS::Search msplus; |
|||
static Policy::MSPMFS::Search mspmfs; |
|||
static Policy::MSPPFRD::Search msppfrd; |
|||
static Policy::Newest::Search newest; |
|||
static Policy::PFRD::Search pfrd; |
|||
static Policy::Rand::Search rand; |
|||
}; |
|||
}; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue