mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 06:35:42 +00:00
41cdae473a
Backed out changeset 936703c75200 (bug 649142) Backed out changeset b0252d2620d8 (bug 649142) Backed out changeset 69ddb2036c50 (bug 649142) Backed out changeset 67748675e669 (bug 649142) Backed out changeset 15ed55c61f4e (bug 649142) Backed out changeset 35c42cd138e1 (bug 649142) Backed out changeset 1335630cf287 (bug 649142) Backed out changeset b5725cd39a31 (bug 649142) Backed out changeset b0eb691d6695 (bug 649142)
229 lines
6.4 KiB
C++
229 lines
6.4 KiB
C++
/* vim: set shiftwidth=4 tabstop=8 autoindent cindent expandtab: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* build (from code) lists of all supported CSS properties */
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
struct PropertyInfo {
|
|
const char *propName;
|
|
const char *domName;
|
|
const char *pref;
|
|
};
|
|
|
|
const PropertyInfo gLonghandProperties[] = {
|
|
|
|
#define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) publicname_
|
|
#define CSS_PROP(name_, id_, method_, flags_, pref_, parsevariant_, kwtable_, \
|
|
stylestruct_, stylestructoffset_, animtype_) \
|
|
{ #name_, #method_, pref_ },
|
|
|
|
#include "nsCSSPropList.h"
|
|
|
|
#undef CSS_PROP
|
|
#undef CSS_PROP_PUBLIC_OR_PRIVATE
|
|
|
|
};
|
|
|
|
/*
|
|
* These are the properties for which domName in the above list should
|
|
* be used. They're in the same order as the above list, with some
|
|
* items skipped.
|
|
*/
|
|
const char* gLonghandPropertiesWithDOMProp[] = {
|
|
|
|
#define CSS_PROP_LIST_EXCLUDE_INTERNAL
|
|
#define CSS_PROP(name_, id_, method_, flags_, pref_, parsevariant_, kwtable_, \
|
|
stylestruct_, stylestructoffset_, animtype_) \
|
|
#name_,
|
|
|
|
#include "nsCSSPropList.h"
|
|
|
|
#undef CSS_PROP
|
|
#undef CSS_PROP_LIST_EXCLUDE_INTERNAL
|
|
|
|
};
|
|
|
|
const PropertyInfo gShorthandProperties[] = {
|
|
|
|
#define CSS_PROP_PUBLIC_OR_PRIVATE(publicname_, privatename_) publicname_
|
|
// Need an extra level of macro nesting to force expansion of method_
|
|
// params before they get pasted.
|
|
#define LISTCSSPROPERTIES_INNER_MACRO(method_) #method_
|
|
#define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
|
|
{ #name_, LISTCSSPROPERTIES_INNER_MACRO(method_), pref_ },
|
|
|
|
#include "nsCSSPropList.h"
|
|
|
|
#undef CSS_PROP_SHORTHAND
|
|
#undef LISTCSSPROPERTIES_INNER_MACRO
|
|
#undef CSS_PROP_PUBLIC_OR_PRIVATE
|
|
|
|
#define CSS_PROP_ALIAS(name_, id_, method_, pref_) \
|
|
{ #name_, #method_, pref_ },
|
|
|
|
#include "nsCSSPropAliasList.h"
|
|
|
|
#undef CSS_PROP_ALIAS
|
|
|
|
};
|
|
|
|
/* see gLonghandPropertiesWithDOMProp */
|
|
const char* gShorthandPropertiesWithDOMProp[] = {
|
|
|
|
#define CSS_PROP_LIST_EXCLUDE_INTERNAL
|
|
#define CSS_PROP_SHORTHAND(name_, id_, method_, flags_, pref_) \
|
|
#name_,
|
|
|
|
#include "nsCSSPropList.h"
|
|
|
|
#undef CSS_PROP_SHORTHAND
|
|
#undef CSS_PROP_LIST_EXCLUDE_INTERNAL
|
|
|
|
#define CSS_PROP_ALIAS(name_, id_, method_, pref_) \
|
|
#name_,
|
|
|
|
#include "nsCSSPropAliasList.h"
|
|
|
|
#undef CSS_PROP_ALIAS
|
|
|
|
};
|
|
|
|
|
|
#define ARRAY_LENGTH(a_) (sizeof(a_)/sizeof((a_)[0]))
|
|
|
|
const char *gInaccessibleProperties[] = {
|
|
// Don't print the properties that aren't accepted by the parser, per
|
|
// CSSParserImpl::ParseProperty
|
|
"-x-cols",
|
|
"-x-lang",
|
|
"-x-span",
|
|
"-x-system-font",
|
|
"-x-text-zoom",
|
|
"border-end-color-value",
|
|
"border-end-style-value",
|
|
"border-end-width-value",
|
|
"border-left-color-value",
|
|
"border-left-color-ltr-source",
|
|
"border-left-color-rtl-source",
|
|
"border-left-style-value",
|
|
"border-left-style-ltr-source",
|
|
"border-left-style-rtl-source",
|
|
"border-left-width-value",
|
|
"border-left-width-ltr-source",
|
|
"border-left-width-rtl-source",
|
|
"border-right-color-value",
|
|
"border-right-color-ltr-source",
|
|
"border-right-color-rtl-source",
|
|
"border-right-style-value",
|
|
"border-right-style-ltr-source",
|
|
"border-right-style-rtl-source",
|
|
"border-right-width-value",
|
|
"border-right-width-ltr-source",
|
|
"border-right-width-rtl-source",
|
|
"border-start-color-value",
|
|
"border-start-style-value",
|
|
"border-start-width-value",
|
|
"margin-end-value",
|
|
"margin-left-value",
|
|
"margin-right-value",
|
|
"margin-start-value",
|
|
"margin-left-ltr-source",
|
|
"margin-left-rtl-source",
|
|
"margin-right-ltr-source",
|
|
"margin-right-rtl-source",
|
|
"padding-end-value",
|
|
"padding-left-value",
|
|
"padding-right-value",
|
|
"padding-start-value",
|
|
"padding-left-ltr-source",
|
|
"padding-left-rtl-source",
|
|
"padding-right-ltr-source",
|
|
"padding-right-rtl-source",
|
|
"-moz-control-character-visibility",
|
|
"-moz-script-level", // parsed by UA sheets only
|
|
"-moz-script-size-multiplier",
|
|
"-moz-script-min-size",
|
|
"-moz-math-variant",
|
|
"-moz-math-display" // parsed by UA sheets only
|
|
};
|
|
|
|
inline int
|
|
is_inaccessible(const char* aPropName)
|
|
{
|
|
for (unsigned j = 0; j < ARRAY_LENGTH(gInaccessibleProperties); ++j) {
|
|
if (strcmp(aPropName, gInaccessibleProperties[j]) == 0)
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void
|
|
print_array(const char *aName,
|
|
const PropertyInfo *aProps, unsigned aPropsLength,
|
|
const char * const * aDOMProps, unsigned aDOMPropsLength)
|
|
{
|
|
printf("var %s = [\n", aName);
|
|
|
|
int first = 1;
|
|
unsigned j = 0; // index into DOM prop list
|
|
for (unsigned i = 0; i < aPropsLength; ++i) {
|
|
const PropertyInfo *p = aProps + i;
|
|
|
|
if (is_inaccessible(p->propName))
|
|
// inaccessible properties never have DOM props, so don't
|
|
// worry about incrementing j. The assertion below will
|
|
// catch if they do.
|
|
continue;
|
|
|
|
if (first)
|
|
first = 0;
|
|
else
|
|
printf(",\n");
|
|
|
|
printf("\t{ name: \"%s\", prop: ", p->propName);
|
|
if (j >= aDOMPropsLength || strcmp(p->propName, aDOMProps[j]) != 0)
|
|
printf("null");
|
|
else {
|
|
++j;
|
|
if (strncmp(p->domName, "Moz", 3) == 0)
|
|
printf("\"%s\"", p->domName);
|
|
else
|
|
// lowercase the first letter
|
|
printf("\"%c%s\"", p->domName[0] + 32, p->domName + 1);
|
|
}
|
|
if (p->pref[0]) {
|
|
printf(", pref: \"%s\"", p->pref);
|
|
}
|
|
printf(" }");
|
|
}
|
|
|
|
if (j != aDOMPropsLength) {
|
|
fprintf(stderr, "Assertion failure %s:%d\n", __FILE__, __LINE__);
|
|
fprintf(stderr, "j==%d, aDOMPropsLength == %d\n", j, aDOMPropsLength);
|
|
exit(1);
|
|
}
|
|
|
|
printf("\n];\n\n");
|
|
}
|
|
|
|
int
|
|
main()
|
|
{
|
|
print_array("gLonghandProperties",
|
|
gLonghandProperties,
|
|
ARRAY_LENGTH(gLonghandProperties),
|
|
gLonghandPropertiesWithDOMProp,
|
|
ARRAY_LENGTH(gLonghandPropertiesWithDOMProp));
|
|
print_array("gShorthandProperties",
|
|
gShorthandProperties,
|
|
ARRAY_LENGTH(gShorthandProperties),
|
|
gShorthandPropertiesWithDOMProp,
|
|
ARRAY_LENGTH(gShorthandPropertiesWithDOMProp));
|
|
return 0;
|
|
}
|