~ubuntu-branches/ubuntu/edgy/libapt-front/edgy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/**
 * @file cache/component/debtags/serializer.h
 * @author Enrico Zini (enrico) <enrico@enricozini.org>
 */

#ifndef APTFRONT_CACHE_COMPONENT_DEBTAGS_SERIALIZER_H
#define APTFRONT_CACHE_COMPONENT_DEBTAGS_SERIALIZER_H

#include <apt-front/forward.h>
#include <apt-front/cache/component/base.h>
#include <tagcoll/Serializer.h>

namespace aptFront {
namespace cache {
namespace component {
namespace debtags {

/**
 * Convert Facets to ints
 */
class FacetIntConverter : public Implementation<FacetIntConverter>,
	public Tagcoll::Converter<aptFront::cache::entity::Facet, int>,
	public Tagcoll::Converter<int, aptFront::cache::entity::Facet>
{
	typedef aptFront::cache::entity::Facet Facet;
	typedef Tagcoll::OpSet<aptFront::cache::entity::Facet> FacetSet;
	typedef Tagcoll::OpSet<int> IntSet;
public:
	virtual int operator()(const aptFront::cache::entity::Facet& item) const;
	virtual aptFront::cache::entity::Facet operator()(const int& item) const;

	virtual IntSet operator()(const FacetSet& item) const
		{ return Tagcoll::Converter<Facet, int>::operator()(item); }
	virtual FacetSet operator()(const IntSet& item) const
		{ return Tagcoll::Converter<int, Facet>::operator()(item); }

	static std::string componentName();
};

/**
 * Convert Facets to strings
 */
class FacetStringConverter : public Implementation<FacetStringConverter>,
	public Tagcoll::Converter<aptFront::cache::entity::Facet, std::string>,
	public Tagcoll::Converter<std::string, aptFront::cache::entity::Facet>
{
	typedef aptFront::cache::entity::Facet Facet;
	typedef Tagcoll::OpSet<aptFront::cache::entity::Facet> FacetSet;
	typedef Tagcoll::OpSet<std::string> StringSet;
public:
	virtual std::string operator()(const aptFront::cache::entity::Facet& item) const;
	virtual aptFront::cache::entity::Facet operator()(const std::string& item) const;

	virtual StringSet operator()(const FacetSet& item) const
		{ return Tagcoll::Converter<Facet, std::string>::operator()(item); }
	virtual FacetSet operator()(const StringSet& item) const
		{ return Tagcoll::Converter<std::string, Facet>::operator()(item); }

	static std::string componentName();
};

/**
 * Convert Tags to ints
 */
class TagIntConverter : public Implementation<TagIntConverter>,
	public Tagcoll::Converter<aptFront::cache::entity::Tag, int>,
	public Tagcoll::Converter<int, aptFront::cache::entity::Tag>
{
	typedef aptFront::cache::entity::Tag Tag;
	typedef Tagcoll::OpSet<aptFront::cache::entity::Tag> TagSet;
	typedef Tagcoll::OpSet<int> IntSet;
public:
	virtual int operator()(const aptFront::cache::entity::Tag& item) const;
	virtual aptFront::cache::entity::Tag operator()(const int& item) const;

	virtual IntSet operator()(const TagSet& item) const
		{ return Tagcoll::Converter<Tag, int>::operator()(item); }
	virtual TagSet operator()(const IntSet& item) const
		{ return Tagcoll::Converter<int, Tag>::operator()(item); }

	static std::string componentName();
};

/**
 * Convert Tags to strings
 */
class TagStringConverter : public Implementation<TagStringConverter>,
	public Tagcoll::Converter<aptFront::cache::entity::Tag, std::string>,
	public Tagcoll::Converter<std::string, aptFront::cache::entity::Tag>
{
	typedef aptFront::cache::entity::Tag Tag;
	typedef Tagcoll::OpSet<aptFront::cache::entity::Tag> TagSet;
	typedef Tagcoll::OpSet<std::string> StringSet;
public:
	virtual std::string operator()(const Tag& item) const;
	virtual Tag operator()(const std::string& item) const;

	virtual StringSet operator()(const TagSet& item) const
		{ return Tagcoll::Converter<Tag, std::string>::operator()(item); }
	virtual TagSet operator()(const StringSet& item) const
		{ return Tagcoll::Converter<std::string, Tag>::operator()(item); }

	TagSet parseTagList(const std::string& str) const;

	static std::string componentName();
};

/**
 * Convert Packages to ints
 */
class PackageIntConverter : public Implementation<PackageIntConverter>,
	public Tagcoll::Converter<aptFront::cache::entity::Package, int>,
	public Tagcoll::Converter<int, aptFront::cache::entity::Package>
{
	typedef aptFront::cache::entity::Package Package;
	typedef Tagcoll::OpSet<aptFront::cache::entity::Package> PackageSet;
	typedef Tagcoll::OpSet<int> IntSet;
public:
	virtual int operator()(const Package& item) const;
	virtual Package operator()(const int& item) const;

	virtual IntSet operator()(const PackageSet& item) const
		{ return Tagcoll::Converter<Package, int>::operator()(item); }
	virtual PackageSet operator()(const IntSet& item) const
		{ return Tagcoll::Converter<int, Package>::operator()(item); }

	static std::string componentName();
};

/**
 * Convert Packages to strings
 */
class PackageStringConverter : public Implementation<PackageStringConverter>,
	public Tagcoll::Converter<aptFront::cache::entity::Package, std::string>,
	public Tagcoll::Converter<std::string, aptFront::cache::entity::Package>
{
	typedef aptFront::cache::entity::Package Package;
	typedef Tagcoll::OpSet<aptFront::cache::entity::Package> PackageSet;
	typedef Tagcoll::OpSet<std::string> StringSet;
public:
	virtual std::string operator()(const Package& item) const;
	virtual Package operator()(const std::string& item) const;

	virtual StringSet operator()(const PackageSet& item) const
		{ return Tagcoll::Converter<Package, std::string>::operator()(item); }
	virtual PackageSet operator()(const StringSet& item) const
		{ return Tagcoll::Converter<std::string, Package>::operator()(item); }

	static std::string componentName();
};

}
}
}
}

#endif