diff options
Diffstat (limited to 'layout/style/nsCSSPropertyID.h.in')
-rw-r--r-- | layout/style/nsCSSPropertyID.h.in | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/layout/style/nsCSSPropertyID.h.in b/layout/style/nsCSSPropertyID.h.in new file mode 100644 index 0000000000..81247321ab --- /dev/null +++ b/layout/style/nsCSSPropertyID.h.in @@ -0,0 +1,92 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. */ + +/* enum types for CSS properties and their values */ + +#ifndef nsCSSPropertyID_h___ +#define nsCSSPropertyID_h___ + +#include <nsHashKeys.h> + +/* + Declare the enum list using the magic of preprocessing + enum values are "eCSSProperty_foo" (where foo is the property) + + To change the list of properties, see ServoCSSPropList.h + + */ +enum nsCSSPropertyID { + eCSSProperty_UNKNOWN = -1, + +$property_ids + + // Some of the values below could probably overlap with each other + // if we had a need for them to do so. + + // Extra values for use in the values of the 'transition-property' + // property. + eCSSPropertyExtra_no_properties, + eCSSPropertyExtra_all_properties, + + // Extra value to represent custom properties (--*). + eCSSPropertyExtra_variable, +}; + +// MOZ_DBG support is defined in nsCSSProps.h since it depends on +// nsCSSProps::GetStringValue + +const nsCSSPropertyID + eCSSProperty_COUNT_no_shorthands = $longhand_count; +const nsCSSPropertyID + eCSSProperty_COUNT = $shorthand_count; +const nsCSSPropertyID + eCSSProperty_COUNT_with_aliases = eCSSPropertyExtra_no_properties; + +namespace mozilla { + +template<> +inline PLDHashNumber +Hash<nsCSSPropertyID>(const nsCSSPropertyID& aValue) +{ + return uint32_t(aValue); +} + +} // namespace mozilla + +// The "descriptors" that can appear in a @font-face rule. +// They have the syntax of properties but different value rules. +enum nsCSSFontDesc { + eCSSFontDesc_UNKNOWN = -1, +#define CSS_FONT_DESC(name_, method_) eCSSFontDesc_##method_, +#include "nsCSSFontDescList.h" +#undef CSS_FONT_DESC + eCSSFontDesc_COUNT +}; + +// The "descriptors" that can appear in a @counter-style rule. +// They have the syntax of properties but different value rules. +enum nsCSSCounterDesc { + eCSSCounterDesc_UNKNOWN = -1, +#define CSS_COUNTER_DESC(name_, method_) eCSSCounterDesc_##method_, +#include "nsCSSCounterDescList.h" +#undef CSS_COUNTER_DESC + eCSSCounterDesc_COUNT +}; + +namespace mozilla { + +// FIXME: The underlying type of this enum should be uint8_t, but we can't do +// that because of https://bugs.llvm.org/show_bug.cgi?id=44228. +enum class CountedUnknownProperty : uint32_t { +#define COUNTED_UNKNOWN_PROPERTY(name_, method_) method_, +#include "mozilla/CountedUnknownProperties.h" +#undef COUNTED_UNKNOWN_PROPERTY + Count, +}; + +} // namespace mozilla + +#endif /* nsCSSPropertyID_h___ */ |