40#ifndef DRAIN_SELECTOR_XML
41#define DRAIN_SELECTOR_XML
45#include <drain/StringWrapper.h>
64DRAIN_ENUM_CONV(PseudoClassCSS);
87 template <
class ...TT>
113 template <
class T,
class ...TT>
114 void set(
const T & arg, TT... args){
133 void set(
const T & arg){
147 void set(
const std::string & arg){
155 void set(
const char *arg){
174 void set(
const PseudoClassCSS & arg){
175 pseudoClass.set(arg);
186 pseudoClass.assign(p);
209 void setClass(
const T & arg){
223 pseudoClass.set(psCls);
237 void toStream(std::ostream & ostr)
const {
242 if (
static_cast<int>(elem) != 0){
243 ostr << drain::Enum<E>::dict.getKey(elem);
247 ostr << cls.strPrefixed();
250 if (!pseudoClass.empty()){
251 ostr <<
':' << pseudoClass;
256 const std::string & str()
const {
258 std::stringstream sstr;
260 currentStr = sstr.str();
266 operator const std::string &()
const {
273 E elem =
static_cast<E
>(0);
275 StringWrapper<PseudoClassCSS> pseudoClass;
281 std::string currentStr;
290DRAIN_ENUM_DICT(drain::PseudoClassCSS);
291DRAIN_ENUM_OSTREAM(drain::PseudoClassCSS)
A wrapper marking string an CSS effect.
Definition ClassXML.h:57
Definition SelectorXML.h:75
void set(const T &arg, TT... args)
Definition SelectorXML.h:114
void setPseudoClass(const T &psCls)
Set one of the element pseudo classes: focus, hover.
Definition SelectorXML.h:222
void set(const char *arg)
Set CSS class.
Definition SelectorXML.h:155
void set(const E &arg)
Set element.
Definition SelectorXML.h:127
void set(const StringWrapper< drain::PseudoClassCSS > &p)
Set one of the element pseudo classes: focus, hover.
Definition SelectorXML.h:185
void set(const PseudoClassCSS &arg)
Set one of the element pseudo classes: focus, hover.
Definition SelectorXML.h:174
void set(const std::string &arg)
Set CSS class.
Definition SelectorXML.h:147
void setElement(const T &arg)
Set element explicitly.
Definition SelectorXML.h:200
void set(const ClassXML &arg)
Set CSS class.
Definition SelectorXML.h:163
String-like object easily supporting conversion from other types, like Enum values.
Definition StringWrapper.h:51
std::ostream & operator<<(std::ostream &ostr, const PlainData< DT > &d)
Definition Data.h:631