blob: 457060f0e4c2e1601451339999db441ff99cb75c [file]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "core/css/properties/CSSPropertyDescriptor.h"
{% for api_class in api_classes %}
#include "core/css/properties/{{api_class.classname}}.h"
{% endfor %}
namespace blink {
static_assert(
std::is_pod<CSSPropertyDescriptor>::value,
"CSSPropertyDescriptor must be a POD to support using initializer lists.");
static CSSPropertyDescriptor cssPropertyDescriptors[] = {
// An invalid CSSPropertyDescriptor. When functions are added to
// CSSPropertyAPI, add a nullptr to represent their function pointers in the
// struct initaliser.
{ nullptr, false },
// When functions are added to CSSPropertyAPI, also add them to the struct
// initaliser below.
{% for api_class in api_classes %}
{ {{api_class.classname}}::parseSingleValue, true },
{% endfor %}
};
const CSSPropertyDescriptor& CSSPropertyDescriptor::get(CSSPropertyID id) {
// TODO(aazzam): We are currently using hard-coded indexes for
// cssPropertyDescriptor since we have only implemented a few properties.
// Later, generate this switch statement, or alternatively return
// cssPropertyDescriptors[id], and generate the cssPropertyDescriptors array
// to hold invalid descriptors for methods which haven't been implemented yet.
switch (id) {
{% for api_class in api_classes %}
{% for property_id in api_class.property_ids %}
case {{property_id}}:
{% endfor %}
return cssPropertyDescriptors[{{api_class.index}}];
{% endfor %}
default:
return cssPropertyDescriptors[0];
}
}
} // namespace blink