Example #1
0
void init_inRepeat(BlinkParams *params, char *i)			{ params->inFileRepeats = parse_repeat(i); }
Example #2
0
void init_dummySamplesRX(BlinkParams *params, char *siz)		{ params[1].dummySamples = parse_repeat(siz); }
Example #3
0
void init_dummySamples(BlinkParams *params, char *siz)		{ params->dummySamples = parse_repeat(siz); }
void CSSParserBorderImage::parse(const std::string &name, const std::vector<CSSToken> &tokens, std::vector<std::unique_ptr<CSSPropertyValue> > &inout_values)
{
    std::unique_ptr<CSSValueBorderImageSource> border_image_source(new CSSValueBorderImageSource());
    std::unique_ptr<CSSValueBorderImageSlice> border_image_slice(new CSSValueBorderImageSlice());
    std::unique_ptr<CSSValueBorderImageWidth> border_image_width(new CSSValueBorderImageWidth());
    std::unique_ptr<CSSValueBorderImageOutset> border_image_outset(new CSSValueBorderImageOutset());
    std::unique_ptr<CSSValueBorderImageRepeat> border_image_repeat(new CSSValueBorderImageRepeat());

    if (tokens.size() == 1 && tokens[0].type == CSSToken::type_ident && equals(tokens[0].value, "inherit"))
    {
        border_image_source->type = CSSValueBorderImageSource::type_inherit;
        border_image_slice->type = CSSValueBorderImageSlice::type_inherit;
        border_image_width->type = CSSValueBorderImageWidth::type_inherit;
        border_image_outset->type = CSSValueBorderImageOutset::type_inherit;
        border_image_repeat->type = CSSValueBorderImageRepeat::type_inherit;

        inout_values.push_back(std::move(border_image_source));
        inout_values.push_back(std::move(border_image_slice));
        inout_values.push_back(std::move(border_image_width));
        inout_values.push_back(std::move(border_image_outset));
        inout_values.push_back(std::move(border_image_repeat));

        return;
    }

    bool source_specified = false;
    bool slice_specified = false;
    bool repeat_specified = false;

    size_t pos = 0;
    do
    {
        if (!source_specified && parse_source(*border_image_source.get(), pos, tokens))
        {
            source_specified = true;
        }
        else if (!slice_specified && parse_slice(*border_image_slice.get(), pos, tokens))
        {
            slice_specified = true;

            size_t next_pos = pos;
            CSSToken token = next_token(next_pos, tokens);
            if (token.type == CSSToken::type_delim && token.value == "/")
            {
                pos = next_pos;
                if (parse_width(*border_image_width.get(), pos, tokens))
                {
                    next_pos = pos;
                    CSSToken token = next_token(next_pos, tokens);
                    if (token.type == CSSToken::type_delim && token.value == "/")
                    {
                        pos = next_pos;
                        if (!parse_outset(*border_image_outset.get(), pos, tokens))
                        {
                            return;
                        }
                    }
                }
                else if (!parse_outset(*border_image_outset.get(), pos, tokens))
                {
                    return;
                }
            }
        }
        else if (!repeat_specified && parse_repeat(*border_image_repeat.get(), pos, tokens))
        {
            repeat_specified = true;
        }
        else
        {
            return;
        }
    } while (pos != tokens.size());

    inout_values.push_back(std::move(border_image_source));
    inout_values.push_back(std::move(border_image_slice));
    inout_values.push_back(std::move(border_image_width));
    inout_values.push_back(std::move(border_image_outset));
    inout_values.push_back(std::move(border_image_repeat));
}