gecko-dev/layout/style/ServoBindings.toml

655 строки
20 KiB
TOML

[build]
args = [
"-x", "c++", "-std=c++14", "-fno-sized-deallocation",
"-DTRACING=1", "-DIMPL_LIBXUL", "-DMOZ_STYLO_BINDINGS=1",
"-DMOZILLA_INTERNAL_API", "-DRUST_BINDGEN"
]
"family=unix" = ["-DOS_POSIX=1"]
"os=solaris" = ["-DOS_SOLARIS=1"]
"os=dragonfly" = ["-DOS_BSD=1", "-DOS_DRAGONFLY=1"]
"os=freebsd" = ["-DOS_BSD=1", "-DOS_FREEBSD=1"]
"os=netbsd" = ["-DOS_BSD=1", "-DOS_NETBSD=1"]
"os=openbsd" = ["-DOS_BSD=1", "-DOS_OPENBSD=1"]
"os=macos" = [
"-DOS_MACOSX=1", "-stdlib=libc++",
# To disable the fixup bindgen applies which adds search
# paths from clang command line in order to avoid potential
# conflict with -stdlib=libc++.
"--target=x86_64-apple-darwin",
]
[build."os=linux"]
args = ["-DOS_LINUX=1"]
"arch=x86" = ["-m32"]
"arch=x86_64" = ["-m64"]
[build."os=android"]
args = ["-DOS_ANDROID=1"]
"arch=aarch64" = ["--target=aarch64-linux-android"]
"arch=arm" = ["--target=armv7-linux-androideabi"]
"arch=x86" = ["--target=i686-linux-android"]
[build."os=windows"."env=msvc"]
args = [
"-DOS_WIN=1", "-DWIN32=1",
# For compatibility with MSVC 2015
"-fms-compatibility-version=19",
# To enable the builtin __builtin_offsetof so that CRT wouldn't
# use reinterpret_cast in offsetof() which is not allowed inside
# static_assert().
"-D_CRT_USE_BUILTIN_OFFSETOF",
# Enable hidden attribute (which is not supported by MSVC and
# thus not enabled by default with a MSVC-compatibile build)
# to exclude hidden symbols from the generated file.
"-DHAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1",
]
"arch=x86" = ["--target=i686-pc-win32"]
"arch=x86_64" = ["--target=x86_64-pc-win32"]
[structs]
headers = [
"nsStyleStruct.h",
"mozilla/StyleAnimationValue.h",
"gfxFontConstants.h",
"gfxFontFeatures.h",
"nsStyleConsts.h",
"mozilla/css/Loader.h",
"mozilla/css/SheetLoadData.h",
"mozilla/DeclarationBlock.h",
"mozilla/dom/AnimationEffectBinding.h",
"mozilla/dom/HTMLSlotElement.h",
"mozilla/dom/KeyframeEffectBinding.h",
"mozilla/dom/MediaList.h",
"mozilla/dom/ShadowRoot.h",
"mozilla/AnimationPropertySegment.h",
"mozilla/ComputedTiming.h",
"mozilla/ComputedTimingFunction.h",
"mozilla/Keyframe.h",
"mozilla/ServoElementSnapshot.h",
"mozilla/ServoElementSnapshotTable.h",
"mozilla/dom/Element.h",
"mozilla/dom/ChildIterator.h",
"mozilla/dom/NameSpaceConstants.h",
"mozilla/LookAndFeel.h",
"mozilla/StaticPrefs.h",
"mozilla/ServoBindings.h",
"mozilla/ComputedStyle.h",
"mozilla/ServoTraversalStatistics.h",
"mozilla/SizeOfState.h",
"nsCSSProps.h",
"nsContentUtils.h",
"nsNameSpaceManager.h",
"nsMediaFeatures.h",
"nsXBLBinding.h",
]
raw-lines = [
# FIXME(emilio): Incrementally remove these "pub use"s. Probably
# mozilla::css and mozilla::dom are easier.
"pub use self::root::*;",
"pub use self::root::mozilla::*;",
"pub use self::root::mozilla::css::*;",
"pub use self::root::mozilla::dom::*;",
"use atomic_refcell::AtomicRefCell;",
"use data::ElementData;",
]
hide-types = [
"nsString",
".*char_traits",
".*incompatible_char_type",
# JS::Value uses alignas(8) which bindgen can't represent correctly on Linux
# 32-bit. See https://github.com/rust-lang-nursery/rust-bindgen/issues/917.
# It's also not used by Stylo. The following types are also hidden for
# making use of it and being similarly unused by Stylo.
"JS::Value",
"mozilla::binding_danger::TErrorResult.*",
"mozilla::ErrorResult.*", # Causes JSWhyMagic to be included & handled incorrectly.
"mozilla::dom::CallbackFunction",
"mozilla::dom::CallbackObject.*",
"nsINode_ErrorResult",
"nsDOMAttributeMap_ErrorResult",
# End of JS::Value related types
]
bitfield-enums = [
"nsChangeHint",
"nsRestyleHint",
"mozilla::OriginFlags",
]
rusty-enums = [
"nsCompatibility",
"mozilla::EffectCompositor_CascadeLevel",
"mozilla::SheetType",
"mozilla::dom::CallerType",
"mozilla::dom::IterationCompositeOperation",
"mozilla::dom::CompositeOperation",
"mozilla::InheritTarget",
"mozilla::FontFamilyType",
"mozilla::css::DocumentMatchingFunction",
"mozilla::css::SheetParsingMode",
"mozilla::StyleContentType",
"nsStyleSVGOpacitySource",
"nsStyleUnit",
"nsCSSKeyword",
"nsIDocument_DocumentTheme",
"nsIDocument_Type",
"nsCSSUnit",
"nsCSSFontDesc",
"nsCSSPropertyID",
"nsCSSCounterDesc",
"nsMediaFeature_RangeType",
"nsMediaFeature_ValueType",
"nsresult",
"nsAtom_AtomKind",
"nsStyleImageLayers_LayerType",
"nsTimingFunction_Type",
"mozilla::ServoElementSnapshotFlags",
"mozilla::Side",
"mozilla::dom::PlaybackDirection",
"mozilla::dom::FillMode",
"mozilla::HalfCorner",
"mozilla::StyleDisplay",
"mozilla::StyleFloatEdge",
"mozilla::StyleShapeRadius",
"mozilla::StyleWindowDragging",
"mozilla::StyleOrient",
"mozilla::StyleBoxSizing",
"mozilla::StyleClear",
"mozilla::StyleColumnFill",
"mozilla::StyleColumnSpan",
"mozilla::StyleComplexColor_Tag",
"mozilla::StyleFloat",
"mozilla::StyleImageOrientation",
"mozilla::StyleUserModify",
"mozilla::StyleUserInput",
"mozilla::StyleBoxDirection",
"mozilla::StyleTextJustify",
"mozilla::StyleHyphens",
"mozilla::StyleFillRule",
"mozilla::StyleShapeSourceType",
"mozilla::StyleBasicShapeType",
"nsStyleImageLayers_Size_DimensionType",
"mozilla::StyleStackSizing",
"mozilla::StyleBorderImageRepeat",
"mozilla::StyleBoxPack",
"mozilla::StyleBoxOrient",
"mozilla::StyleBoxAlign",
"mozilla::StyleUserFocus",
"mozilla::StyleUserSelect",
"mozilla::StyleImageLayerRepeat",
"mozilla::StyleImageLayerAttachment",
"mozilla::StyleBoxDecorationBreak",
"mozilla::StyleRuleInclusion",
"mozilla::StyleGridTrackBreadth",
"mozilla::StyleOverscrollBehavior",
"mozilla::StyleWhiteSpace",
"nsStyleImageType",
"nsStyleSVGPaintType",
"nsStyleSVGFallbackType",
"nsINode_BooleanFlag",
"mozilla::CSSPseudoElementType",
"mozilla::LookAndFeel_ColorID",
"mozilla::LookAndFeel_FontID",
"nsStyleTransformMatrix::MatrixTransformOperator",
"mozilla::StyleGeometryBox",
"mozilla::SystemColor",
]
whitelist-vars = [
"NS_AUTHOR_SPECIFIED_.*",
"NS_THEME_.*",
"NODE_.*",
"ELEMENT_.*",
"NS_FONT_.*",
"NS_STYLE_.*",
"NS_MATHML_.*",
"NS_RADIUS_.*",
"BORDER_COLOR_.*",
"BORDER_STYLE_.*",
"CSS_PSEUDO_ELEMENT_.*",
"SERVO_CSS_PSEUDO_ELEMENT_FLAGS_.*",
"kNameSpaceID_.*",
"kGenericFont_.*",
"kPresContext_.*",
"nsContentUtils_.*",
"GECKO_IS_NIGHTLY",
]
whitelist-types = [
"RawGecko.*",
"DeclarationBlockMutationClosure",
"mozilla::AnimationPropertySegment",
"mozilla::AnonymousCounterStyle",
"mozilla::AtomArray",
"mozilla::ComputedTiming",
"mozilla::ComputedTimingFunction",
"mozilla::ComputedTimingFunction::BeforeFlag",
"mozilla::SeenPtrs",
"mozilla::ServoElementSnapshot.*",
"mozilla::ComputedStyle",
"mozilla::StyleSheet",
"mozilla::ServoStyleSheetInner",
"mozilla::ServoStyleSetSizes",
"mozilla::ServoTraversalStatistics",
"mozilla::css::LoaderReusableStyleSheets",
"mozilla::css::SheetLoadData",
"mozilla::css::SheetLoadDataHolder",
"mozilla::css::SheetParsingMode",
"mozilla::css::DocumentMatchingFunction",
"mozilla::dom::IterationCompositeOperation",
"mozilla::dom::StyleChildrenIterator",
"mozilla::HalfCorner",
"mozilla::MallocSizeOf",
"mozilla::OriginFlags",
"mozilla::PropertyStyleAnimationValuePair",
"mozilla::ServoTraversalFlags",
"mozilla::StaticPrefs",
"mozilla::StyleShapeRadius",
"mozilla::StyleGrid.*",
"mozilla::UpdateAnimationsTasks",
"mozilla::LookAndFeel",
"mozilla::gfx::Float",
"mozilla::gfx::FontVariation",
"mozilla::StyleImageLayerAttachment",
".*ThreadSafe.*Holder",
"AnonymousContent",
"AudioContext",
"CapturingContentInfo",
"DefaultDelete",
"DOMIntersectionObserverEntry",
"Element",
"FontFamilyList",
"FontFamilyName",
"FontSizePrefs",
"FragmentOrURL",
"FrameRequestCallback",
"GeckoParserExtraData",
"GeckoFontMetrics",
"gfxAlternateValue",
"gfxFontFeature",
"gfxFontFeatureValueSet",
"gfxFontVariation",
"GridNamedArea",
"mozilla::HalfCorner",
"Image",
"ImageURL",
"Keyframe",
"MediumFeaturesChangedResult",
"nsAttrName",
"nsAttrValue",
"nscolor",
"nsChangeHint",
"nsCSSCounterDesc",
"nsCSSFontDesc",
"nsCSSKTableEntry",
"nsCSSKeyword",
"nsCSSKeywordAndBoolTableEntry",
"nsCSSPropertyID",
"nsCSSPropertyIDSet",
"nsCSSProps",
"nsCSSShadowArray",
"nsCSSValue",
"nsCSSValueList",
"nsCSSValueList_heap",
"nsCSSValuePair_heap",
"nsCSSValuePairList",
"nsCSSValuePairList_heap",
"nsCSSValueTriplet_heap",
"nsCursorImage",
"nsFont",
"nsAtom",
"nsDynamicAtom",
"nsMargin",
"nsMediaFeature",
"nsMediaFeatures",
"nsRect",
"nsRestyleHint",
"nsresult",
"nsSimpleContentList",
"nsSize",
"nsStyleBackground",
"nsStyleBorder",
"nsStyleColor",
"nsStyleColumn",
"nsStyleContent",
"nsStyleContentData",
"ComputedStyle",
"nsStyleCoord",
"nsStyleCounterData",
"nsStyleDisplay",
"nsStyleEffects",
"nsStyleFilter",
"nsStyleFont",
"nsStyleGradient",
"nsStyleGradientStop",
"nsStyleGridTemplate",
"nsStyleImage",
"nsStyleImageLayers",
"nsStyleList",
"nsStyleMargin",
"nsStyleOutline",
"nsStylePadding",
"nsStylePosition",
"nsStyleSides",
"nsStyleSVG",
"nsStyleSVGOpacitySource",
"nsStyleSVGPaint",
"nsStyleSVGReset",
"nsStyleTable",
"nsStyleTableBorder",
"nsStyleText",
"nsStyleTextReset",
"nsStyleUIReset",
"nsStyleUnion",
"nsStyleUnit",
"nsStyleUserInterface",
"nsStyleVisibility",
"nsStyleXUL",
"nsTArrayHeader",
"Position",
"PropertyValuePair",
"Runnable",
"ServoAttrSnapshot",
"ServoBundledURI",
"ServoComputedData",
"ServoComputedDataBorrowed",
"ServoElementSnapshot",
"ComputedStyleStrong",
"ComputedStyleBorrowed",
"ComputedStyleBorrowedOrNull",
"SheetParsingMode",
"StaticRefPtr",
"StyleAnimation",
"StyleBasicShapeType",
"StyleGeometryBox",
"StyleShapeSource",
"StyleTransition",
"ThemeWidgetType",
"mozilla::UniquePtr",
"mozilla::DeclarationBlock",
"mozilla::DefaultDelete",
"mozilla::Side",
"mozilla::binding_danger::AssertAndSuppressCleanupPolicy",
"mozilla::ParsingMode",
"mozilla::InheritTarget",
"mozilla::dom::MediaList",
"mozilla::StyleRuleInclusion",
"nsStyleTransformMatrix::MatrixTransformOperator",
]
opaque-types = [
"std::pair__PCCP",
"std::namespace::atomic___base", "std::atomic__My_base",
"std::atomic",
"std::atomic___base",
# We want everything but FontVariation and Float to be opaque but we don't
# have negative regexes.
"mozilla::gfx::(.{0,4}|.{6,12}|.{14,}|([^F][^o][^n][^t][^V][^a][^r][^i][^a][^t][^i][^o][^n])|([^F][^l][^o][^a][^t]))",
"mozilla::dom::Sequence",
"mozilla::SmallPointerArray",
"mozilla::dom::Optional",
"mozilla::dom::OwningNodeOrString_Value",
"mozilla::dom::Nullable",
"mozilla::external::AtomicRefCounted",
"RefPtr_Proxy",
"RefPtr_Proxy_member_function",
"nsAutoPtr_Proxy",
"nsAutoPtr_Proxy_member_function",
"mozilla::detail::PointerType",
"mozilla::Pair_Base",
"mozilla::SeenPtrs",
"mozilla::SupportsWeakPtr",
"SupportsWeakPtr",
"mozilla::detail::WeakReference",
"mozilla::WeakPtr",
"nsWritingIterator_reference", "nsReadingIterator_reference",
"nsTObserverArray", # <- Inherits from nsAutoTObserverArray<T, 0>
"nsTHashtable", # <- Inheriting from inner typedefs that clang
# doesn't expose properly.
"nsBaseHashtable", "nsRefPtrHashtable", "nsDataHashtable", "nsClassHashtable", # <- Ditto
"nsInterfaceHashtable", # <- Ditto
"nsIDocument_SelectorCache", # <- Inherits from nsExpirationTracker<.., 4>
"nsIPresShell_ScrollAxis", # <- For some reason the alignment of this is 4
# for clang.
"nsPIDOMWindow", # <- Takes the vtable from a template parameter, and we can't
# generate it conditionally.
"JS::Rooted",
"mozilla::Maybe",
"gfxSize", # <- union { struct { T width; T height; }; T components[2] };
"gfxSize_Super", # Ditto.
"mozilla::StyleAnimationValue",
"StyleAnimationValue", # pulls in a whole bunch of stuff we don't need in the bindings
"mozilla::dom::.*Callback", # Pulls in ErrorResult and other things that
# don't align properly on Linux 32-bit
"mozilla::SchedulerGroup", # Non-standard-layout packing of field into superclass
]
mapped-generic-types = [
{ generic = true, gecko = "mozilla::ServoUnsafeCell", servo = "::std::cell::UnsafeCell" },
{ generic = true, gecko = "mozilla::ServoCell", servo = "::std::cell::Cell" },
{ generic = false, gecko = "ServoNodeData", servo = "AtomicRefCell<ElementData>" },
{ generic = false, gecko = "mozilla::ServoWritingMode", servo = "::logical_geometry::WritingMode" },
{ generic = false, gecko = "mozilla::ServoCustomPropertiesMap", servo = "Option<::servo_arc::Arc<::custom_properties::CustomPropertiesMap>>" },
{ generic = false, gecko = "mozilla::ServoRuleNode", servo = "Option<::rule_tree::StrongRuleNode>" },
{ generic = false, gecko = "mozilla::ServoVisitedStyle", servo = "Option<::servo_arc::RawOffsetArc<::properties::ComputedValues>>" },
{ generic = false, gecko = "mozilla::ServoComputedValueFlags", servo = "::properties::computed_value_flags::ComputedValueFlags" },
{ generic = true, gecko = "mozilla::ServoRawOffsetArc", servo = "::servo_arc::RawOffsetArc" },
{ generic = false, gecko = "ComputedStyleStrong", servo = "::gecko_bindings::sugar::ownership::Strong<::properties::ComputedValues>" },
]
fixups = [
{ pat = "\\broot\\s*::\\s*nsString\\b", rep = "::nsstring::nsStringRepr" },
{ pat = "\\broot\\s*::\\s*nsTString\\s*<\\s*u16\\s*>", rep = "::nsstring::nsStringRepr" },
]
[bindings]
headers = ["mozilla/ServoBindings.h"]
hide-types = [
"nsACString_internal",
"nsAString_internal",
"ComputedStyleBorrowed",
"ComputedStyleBorrowedOrNull",
]
raw-lines = [
"pub use nsstring::{nsACString, nsAString, nsCString, nsString, nsStringRepr};",
"use gecko_bindings::structs::nsStyleTransformMatrix;",
"use gecko_bindings::structs::nsTArray;",
"type nsACString_internal = nsACString;",
"type nsAString_internal = nsAString;",
"pub type ComputedStyleBorrowed<'a> = &'a ::properties::ComputedValues;",
"pub type ComputedStyleBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;",
"pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;",
"pub type RawServoAnimationValueTableBorrowed<'a> = &'a ();"
]
whitelist-functions = ["Servo_.*", "Gecko_.*"]
structs-types = [
"mozilla::css::GridTemplateAreasValue",
"mozilla::css::ImageValue",
"mozilla::css::URLValue",
"mozilla::css::URLValueData",
"mozilla::dom::CallerType",
"mozilla::dom::ShadowRoot",
"mozilla::AnonymousCounterStyle",
"mozilla::AtomArray",
"mozilla::FontStretch",
"mozilla::FontSlantStyle",
"mozilla::FontWeight",
"mozilla::MallocSizeOf",
"mozilla::OriginFlags",
"mozilla::UniquePtr",
"ServoRawOffsetArc",
"DeclarationBlockMutationClosure",
"nsIContent",
"nsINode",
"nsIDocument",
"nsIDocument_DocumentTheme",
"nsSimpleContentList",
"MediumFeaturesChangedResult",
"RawGeckoAnimationPropertySegment",
"RawGeckoComputedTiming",
"RawGeckoCSSPropertyIDList",
"RawGeckoDocument",
"RawGeckoElement",
"Element",
"RawGeckoKeyframeList",
"RawGeckoPropertyValuePairList",
"RawGeckoComputedKeyframeValuesList",
"RawGeckoFontFaceRuleList",
"RawGeckoNode",
"RawServoAnimationValue",
"RawServoFontFaceRule",
"RawGeckoServoAnimationValueList",
"RawServoMediaList",
"RawServoStyleSheetContents",
"RawServoDeclarationBlock",
"RawServoStyleRule",
"RawGeckoPresContext",
"RawGeckoPresContextOwned",
"RawGeckoStyleAnimationList",
"RawGeckoStyleChildrenIterator",
"RawGeckoServoStyleRuleList",
"RawGeckoURLExtraData",
"RawGeckoXBLBinding",
"RawServoSelectorList",
"RawServoSourceSizeList",
"RefPtr",
"RustString",
"CSSPseudoElementType",
"ServoTraversalFlags",
"ComputedTimingFunction_BeforeFlag",
"CounterStylePtr",
"FontFamilyType",
"FontSizePrefs",
"GeckoFontMetrics",
"IterationCompositeOperation",
"Keyframe",
"PropertyValuePair",
"SeenPtrs",
"ServoBundledURI",
"ServoElementSnapshot",
"ServoElementSnapshotTable",
"ServoStyleSetSizes",
"SheetParsingMode",
"StyleBasicShapeType",
"StyleShapeSource",
"StyleTransition",
"gfxFontFeatureValueSet",
"nsCSSCounterDesc",
"nsCSSFontDesc",
"nsCSSKeyword",
"nsCSSPropertyID",
"nsCSSPropertyIDSet",
"nsCSSShadowArray",
"nsCSSUnit",
"nsCSSValue",
"nsCSSValueSharedList",
"nsChangeHint",
"nsCursorImage",
"nsFont",
"nsAtom",
"nsIURI",
"nsCompatibility",
"nsRestyleHint",
"nsStyleBackground",
"nsStyleBorder",
"nsStyleColor",
"nsStyleColumn",
"nsStyleContent",
"nsStyleContentData",
"nsStyleContentData_CounterFunction",
"mozilla::StyleContentType",
"ComputedStyle",
"nsStyleCoord",
"nsStyleCoord_Calc",
"nsStyleCoord_CalcValue",
"nsStyleDisplay",
"nsStyleEffects",
"nsStyleFilter",
"nsStyleFont",
"nsStyleGradient",
"nsStyleGradientStop",
"nsStyleGridTemplate",
"nsStyleImage",
"nsStyleImageLayers",
"nsStyleImageLayers_Layer",
"nsStyleImageLayers_LayerType",
"nsStyleImageRequest",
"nsStyleList",
"nsStyleMargin",
"nsStyleOutline",
"nsStylePadding",
"nsStylePosition",
"nsStyleQuoteValues",
"nsStyleSVG",
"nsStyleSVGOpacitySource",
"nsStyleSVGPaint",
"nsStyleSVGReset",
"nsStyleSides",
"nsStyleTable",
"nsStyleTableBorder",
"nsStyleText",
"nsStyleTextReset",
"nsStyleUIReset",
"nsStyleUnion",
"nsStyleUnit",
"nsStyleUserInterface",
"nsStyleVisibility",
"nsStyleXUL",
"nsTimingFunction",
"nscolor",
"nscoord",
"nsresult",
"Loader",
"LoaderReusableStyleSheets",
"SheetLoadData",
"SheetLoadDataHolder",
"StyleSheet",
"ServoComputedData",
"ComputedStyleStrong",
"EffectCompositor_CascadeLevel",
"UpdateAnimationsTasks",
"ParsingMode",
"InheritTarget",
"DocumentMatchingFunction",
"StyleAnimation",
"StyleRuleInclusion",
"nsStyleTransformMatrix::MatrixTransformOperator",
"RawGeckoGfxMatrix4x4",
"FontFamilyName",
"mozilla::SharedFontList",
]
array-types = [
{ cpp-type = "uintptr_t", rust-type = "usize" },
]
servo-owned-types = [
{ name = "RawServoStyleSet", opaque = true },
{ name = "RawServoAuthorStyles", opaque = true },
{ name = "RawServoSelectorList", opaque = false },
{ name = "RawServoSourceSizeList", opaque = false },
{ name = "ServoElementSnapshot", opaque = false },
{ name = "RawServoAnimationValueMap", opaque = true },
]
servo-immutable-borrow-types = [
"RawGeckoNode",
"RawGeckoElement",
"RawGeckoDocument",
"RawServoDeclarationBlockStrong",
"RawGeckoPresContext",
"RawGeckoXBLBinding",
]
servo-borrow-types = [
"nsCSSPropertyIDSet",
"nsCSSValue",
"nsTimingFunction",
"RawGeckoAnimationPropertySegment",
"RawGeckoComputedTiming",
"RawGeckoCSSPropertyIDList",
"RawGeckoKeyframeList",
"RawGeckoPropertyValuePairList",
"RawGeckoComputedKeyframeValuesList",
"RawGeckoFontFaceRuleList",
"RawGeckoServoStyleRuleList",
"RawGeckoServoAnimationValueList",
"RawGeckoStyleAnimationList",
"RawGeckoStyleChildrenIterator",
]
fixups = [
# Remap the templated string type to the helper type
{ pat = "\\bnsTString\\s*<\\s*u16\\s*>", rep = "nsString" },
# hack for gecko-owned string
{ pat = "<\\s*nsString\\s*", rep = "<nsStringRepr" },
]