//
// NamedTuple.h
//
// Library: Foundation
// Package: Core
// Module: NamedTuple
//
// Definition of the NamedTuple class.
//
// Copyright (c) 2007, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef Foundation_NamedTuple_INCLUDED
#define Foundation_NamedTuple_INCLUDED
#include "Poco/Foundation.h"
#include "Poco/Tuple.h"
#include "Poco/TypeList.h"
#include "Poco/DynamicAny.h"
#include "Poco/SharedPtr.h"
#include "Poco/Format.h"
namespace Poco {
template<class T0,
class T1 = NullTypeList,
class T2 = NullTypeList,
class T3 = NullTypeList,
class T4 = NullTypeList,
class T5 = NullTypeList,
class T6 = NullTypeList,
class T7 = NullTypeList,
class T8 = NullTypeList,
class T9 = NullTypeList,
class T10 = NullTypeList,
class T11 = NullTypeList,
class T12 = NullTypeList,
class T13 = NullTypeList,
class T14 = NullTypeList,
class T15 = NullTypeList,
class T16 = NullTypeList,
class T17 = NullTypeList,
class T18 = NullTypeList,
class T19 = NullTypeList>
struct NamedTuple: public Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>
{
typedef Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19> TupleType;
typedef typename Tuple<T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19>::Type Type;
typedef std::vector<std::string> NameVec;
typedef SharedPtr<NameVec> NameVecPtr;
NamedTuple(): _pNames(0)
{
init();
}
NamedTuple(const NameVecPtr& rNames)
{
if (rNames->size() != TupleType::length)
throw InvalidArgumentException("Wrong names vector length.");
_pNames = rNames;
}
NamedTuple(typename TypeWrapper<T0>::CONSTTYPE& t0,
typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)):
TupleType(t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19),
_pNames(0)
{
init();
}
NamedTuple(const NameVecPtr& rNames,
typename TypeWrapper<T0>::CONSTTYPE& t0,
typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)):
TupleType(t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19)
{
if (rNames->size() != TupleType::length)
throw InvalidArgumentException("Wrong names vector length.");
_pNames = rNames;
}
NamedTuple(const std::string& n0,
typename TypeWrapper<T0>::CONSTTYPE& t0,
const std::string& n1 = "B",
typename TypeWrapper<T1>::CONSTTYPE& t1 = POCO_TYPEWRAPPER_DEFAULTVALUE(T1),
const std::string& n2 = "C",
typename TypeWrapper<T2>::CONSTTYPE& t2 = POCO_TYPEWRAPPER_DEFAULTVALUE(T2),
const std::string& n3 = "D",
typename TypeWrapper<T3>::CONSTTYPE& t3 = POCO_TYPEWRAPPER_DEFAULTVALUE(T3),
const std::string& n4 = "E",
typename TypeWrapper<T4>::CONSTTYPE& t4 = POCO_TYPEWRAPPER_DEFAULTVALUE(T4),
const std::string& n5 = "F",
typename TypeWrapper<T5>::CONSTTYPE& t5 = POCO_TYPEWRAPPER_DEFAULTVALUE(T5),
const std::string& n6 = "G",
typename TypeWrapper<T6>::CONSTTYPE& t6 = POCO_TYPEWRAPPER_DEFAULTVALUE(T6),
const std::string& n7 = "H",
typename TypeWrapper<T7>::CONSTTYPE& t7 = POCO_TYPEWRAPPER_DEFAULTVALUE(T7),
const std::string& n8 = "I",
typename TypeWrapper<T8>::CONSTTYPE& t8 = POCO_TYPEWRAPPER_DEFAULTVALUE(T8),
const std::string& n9 = "J",
typename TypeWrapper<T9>::CONSTTYPE& t9 = POCO_TYPEWRAPPER_DEFAULTVALUE(T9),
const std::string& n10 = "K",
typename TypeWrapper<T10>::CONSTTYPE& t10 = POCO_TYPEWRAPPER_DEFAULTVALUE(T10),
const std::string& n11 = "L",
typename TypeWrapper<T11>::CONSTTYPE& t11 = POCO_TYPEWRAPPER_DEFAULTVALUE(T11),
const std::string& n12 = "M",
typename TypeWrapper<T12>::CONSTTYPE& t12 = POCO_TYPEWRAPPER_DEFAULTVALUE(T12),
const std::string& n13 = "N",
typename TypeWrapper<T13>::CONSTTYPE& t13 = POCO_TYPEWRAPPER_DEFAULTVALUE(T13),
const std::string& n14 = "O",
typename TypeWrapper<T14>::CONSTTYPE& t14 = POCO_TYPEWRAPPER_DEFAULTVALUE(T14),
const std::string& n15 = "P",
typename TypeWrapper<T15>::CONSTTYPE& t15 = POCO_TYPEWRAPPER_DEFAULTVALUE(T15),
const std::string& n16 = "Q",
typename TypeWrapper<T16>::CONSTTYPE& t16 = POCO_TYPEWRAPPER_DEFAULTVALUE(T16),
const std::string& n17 = "R",
typename TypeWrapper<T17>::CONSTTYPE& t17 = POCO_TYPEWRAPPER_DEFAULTVALUE(T17),
const std::string& n18 = "S",
typename TypeWrapper<T18>::CONSTTYPE& t18 = POCO_TYPEWRAPPER_DEFAULTVALUE(T18),
const std::string& n19 = "T",
typename TypeWrapper<T19>::CONSTTYPE& t19 = POCO_TYPEWRAPPER_DEFAULTVALUE(T19)):
TupleType(t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19),
_pNames(0)
{
init(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,n18,n19);
}
const DynamicAny get(const std::string& name) const
{
NameVec::const_iterator it = _pNames->begin();
NameVec::const_iterator itEnd = _pNames->end();
for(std::size_t counter = 0; it != itEnd; ++it, ++counter)
{
if (name == *it)
{
switch (counter)
{
case 0: return TupleType::template get<0>();
case 1: return TupleType::template get<1>(
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于ubuntu16.04编译的Poco库 Poco库版本:1.8.0.1 POCO库是强大的的跨平台C++库,可以用来编写多平台的网络应用程序,这些平台包括桌面端、服务端、移动端、IOT(物联网)、嵌入式系统等。总的来说是一个非常强大的综合性库。 Poco库的官网地址:https://pocoproject.org/index.html Poco库的项目地址:https://github.com/pocoproject/poco/tree/master
资源推荐
资源详情
资源评论
收起资源包目录
基于ubuntu16.04编译的Poco库 (797个子文件)
libPocoDatad.so.50 14.42MB
libPocoFoundationd.so.50 11.03MB
libPocoNetd.so.50 7.81MB
libPocoDataSQLited.so.50 4MB
libPocoXMLd.so.50 3.88MB
libPocoUtild.so.50 3.62MB
libPocoZipd.so.50 2.78MB
libPocoNetSSLd.so.50 2.48MB
libPocoJSONd.so.50 2.45MB
libPocoData.so.50 2.2MB
libPocoFoundation.so.50 2.02MB
libPocoMongoDBd.so.50 1.77MB
libPocoCryptod.so.50 1.45MB
libPocoNet.so.50 1.22MB
libPocoDataSQLite.so.50 1.1MB
libPocoRedisd.so.50 1018KB
libPocoXML.so.50 667KB
libPocoUtil.so.50 483KB
libPocoJSON.so.50 348KB
libPocoZip.so.50 317KB
libPocoNetSSL.so.50 310KB
libPocoCrypto.so.50 233KB
libPocoMongoDB.so.50 228KB
libPocoRedis.so.50 175KB
libPocoDatad.a 30.22MB
libPocoFoundationd.a 24.88MB
libPocoNetd.a 20.2MB
libPocoXMLd.a 8.84MB
libPocoUtild.a 8.28MB
libPocoZipd.a 7.09MB
libPocoDataSQLited.a 6.62MB
libPocoData.a 6.08MB
libPocoJSONd.a 6.06MB
libPocoNetSSLd.a 6.05MB
libPocoMongoDBd.a 4.53MB
libPocoFoundation.a 4.52MB
libPocoNet.a 3.69MB
libPocoCryptod.a 3.63MB
libPocoRedisd.a 2.17MB
libPocoDataSQLite.a 1.94MB
libPocoXML.a 1.41MB
libPocoJSON.a 1.24MB
libPocoUtil.a 1.15MB
libPocoMongoDB.a 844KB
libPocoNetSSL.a 828KB
libPocoZip.a 790KB
libPocoRedis.a 515KB
libPocoCrypto.a 505KB
NamedTuple.h 135KB
zlib.h 94KB
TypeHandler.h 80KB
VarHolder.h 68KB
Logger.h 57KB
Tuple.h 54KB
Var.h 54KB
expat.h 41KB
Units.h 32KB
Binding.h 31KB
NumberFormatter.h 28KB
Statement.h 22KB
SSLManager.h 18KB
Extraction.h 18KB
RecordSet.h 17KB
Application.h 17KB
String.h 17KB
StatementImpl.h 17KB
AbstractEvent.h 16KB
zconf.h 16KB
XMLStreamParser.h 16KB
SocketImpl.h 15KB
NumericString.h 15KB
Session.h 15KB
Socket.h 14KB
FIFOBuffer.h 14KB
Context.h 14KB
AbstractConfiguration.h 14KB
IPAddress.h 14KB
XMLWriter.h 14KB
Object.h 13KB
Any.h 13KB
URI.h 13KB
FTPClientSession.h 13KB
ZipLocalFileHeader.h 13KB
ZipFileInfo.h 13KB
Path.h 12KB
AbstractBinder.h 12KB
PriorityDelegate.h 12KB
HTTPClientSession.h 11KB
ParserEngine.h 11KB
AbstractPreparator.h 11KB
Node.h 11KB
ContentHandler.h 11KB
RegularExpression.h 11KB
LinearHashTable.h 11KB
ZipArchiveInfo.h 11KB
NetworkInterface.h 11KB
FileChannel.h 11KB
SocketDefs.h 11KB
AbstractExtractor.h 11KB
LocalDateTime.h 11KB
共 797 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
不会抓狼的羊
- 粉丝: 2
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功