From: Vsevolod Stakhov Date: Fri, 15 Jan 2021 20:23:47 +0000 (+0000) Subject: [Project] Add a simple css rule definition X-Git-Tag: 3.0~753 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=016a6ee86defe6e78ef94c90290353b4939b99b6;p=rspamd.git [Project] Add a simple css rule definition --- diff --git a/src/libserver/css/css_rule.hxx b/src/libserver/css/css_rule.hxx new file mode 100644 index 000000000..ca49ba33b --- /dev/null +++ b/src/libserver/css/css_rule.hxx @@ -0,0 +1,57 @@ +/*- + * Copyright 2021 Vsevolod Stakhov + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef RSPAMD_CSS_RULE_HXX +#define RSPAMD_CSS_RULE_HXX + +#include "css_value.hxx" +#include "css_property.hxx" +#include +#include + +namespace rspamd { + +namespace css { + +class css_rule { + css_property prop; + using css_values_vec = std::vector >; + css_values_vec values; +public: + /* We must create css rule explicitly from a property and values */ + css_rule() = delete; + css_rule(const css_rule &other) = delete; + /* Constructors */ + css_rule(css_rule &&other) = default; + explicit css_rule(css_property &&prop, css_values_vec &&values) : + prop(prop), values(values) {} + explicit css_rule(css_property &&prop) : prop(prop), values{} {} + /* Methods */ + void add_value(std::unique_ptr &&value) { + values.emplace_back(std::forward>(value)); + } + void add_value(const css_value &value) { + values.emplace_back(std::make_unique(css_value{value})); + } + const css_values_vec& get_values(void) { return values; } + const css_property& get_prop(void) { return prop; } +}; + +} + +} + +#endif //RSPAMD_CSS_RULE_HXX