layout/style/ServoBindings.toml
author Benjamin Bouvier <benj@benj.me>
Tue, 09 Oct 2018 15:01:52 +0200
changeset 441237 1f5478a63db8a1f606ad2fd6ead34b5d91712357
parent 441211 8819dd315519624abe75cb340aa1ae8cfd62ca86
child 441720 23ee4dcfdbaf0d4508d76ac9f8cb9bbcf3e61db7
permissions -rw-r--r--
Bug 1495669: Share bindgen flags globally; r=emilio, r=froydnj

[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/CORSMode.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/GeckoBindings.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::StyleDisplayMode",
    "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::StyleScrollbarWidth",
    "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_.*",
    "NS_ATTRVALUE_.*",
    "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.*",
    "RawServoAnimationValueMap",  # TODO(heycam): Handle this elsewhere.
    "mozilla::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::StyleDisplayMode",
    "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::PointerCapabilities",
    "mozilla::LookAndFeel",
    "mozilla::gfx::Float",
    "mozilla::gfx::FontVariation",
    "mozilla::StyleImageLayerAttachment",
    "mozilla::StyleComputedFontStretchRange",
    "mozilla::StyleComputedFontStyleDescriptor",
    "mozilla::StyleComputedFontWeightRange",
    "mozilla::StyleFontDisplay",
    "mozilla::StyleUnicodeRange",
    "mozilla::StyleFontLanguageOverride",
    "mozilla::StyleFontFaceSourceListComponent",
    "gfxFontFeature",
    "gfxFontVariation",
    ".*ThreadSafe.*Holder",
    "AnonymousContent",
    "AudioContext",
    "CapturingContentInfo",
    "DefaultDelete",
    "DOMIntersectionObserverEntry",
    "Element",
    "FontFamilyList",
    "FontFamilyName",
    "mozilla::FontSizePrefs",
    "FragmentOrURL",
    "FrameRequestCallback",
    "GeckoParserExtraData",
    "GeckoFontMetrics",
    "gfxAlternateValue",
    "gfxFontFeatureValueSet",
    "GridNamedArea",
    "mozilla::HalfCorner",
    "Image",
    "ImageURL",
    "Keyframe",
    "mozilla::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",
    "nsStyleUI",
    "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::RustCell", 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/GeckoBindings.h",
    # We include ServoBindings.h so we can type check the C function declarations
    # in there against the function definitions in servo/ports/gecko/glue.rs.
    "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::URLValue",
    "mozilla::dom::CallerType",
    "mozilla::dom::ShadowRoot",
    "mozilla::AnonymousCounterStyle",
    "mozilla::AtomArray",
    "mozilla::CORSMode",
    "mozilla::FontStretch",
    "mozilla::FontSlantStyle",
    "mozilla::FontWeight",
    "mozilla::MallocSizeOf",
    "mozilla::OriginFlags",
    "mozilla::StyleMotion",
    "mozilla::UniquePtr",
    "mozilla::StyleDisplayMode",
    "mozilla::StyleComputedFontStretchRange",
    "mozilla::StyleComputedFontStyleDescriptor",
    "mozilla::StyleComputedFontWeightRange",
    "mozilla::StyleFontDisplay",
    "mozilla::StyleUnicodeRange",
    "mozilla::StyleFontLanguageOverride",
    "mozilla::StyleFontFaceSourceListComponent",
    "gfxFontFeature",
    "mozilla::gfx::FontVariation",
    "ServoRawOffsetArc",
    "mozilla::DeclarationBlockMutationClosure",
    "nsAttrValue",
    "nsIContent",
    "nsINode",
    "nsIDocument",
    "nsIDocument_DocumentTheme",
    "nsSimpleContentList",
    "mozilla::MediumFeaturesChangedResult",
    "RawGeckoAnimationPropertySegment",
    "RawGeckoComputedTiming",
    "RawGeckoCSSPropertyIDList",
    "RawGeckoDocument",
    "RawGeckoElement",
    "Element",
    "RawGeckoKeyframeList",
    "RawGeckoPropertyValuePairList",
    "RawGeckoComputedKeyframeValuesList",
    "RawGeckoFontFaceRuleList",
    "RawGeckoNode",
    "RawServoAnimationValue",
    "RawServoFontFaceRule",
    "RawGeckoServoAnimationValueList",
    "RawServoMediaList",
    "RawServoStyleSheetContents",
    "RawServoDeclarationBlock",
    "RawServoStyleRule",
    "RawGeckoPresContext",
    "RawGeckoStyleAnimationList",
    "RawGeckoStyleChildrenIterator",
    "RawGeckoServoStyleRuleList",
    "RawGeckoURLExtraData",
    "RawGeckoXBLBinding",
    "RawServoSelectorList",
    "RawServoSourceSizeList",
    "RefPtr",
    "RustString",
    "StyleUseCounters",
    "CSSPseudoElementType",
    "ServoTraversalFlags",
    "ComputedTimingFunction_BeforeFlag",
    "CounterStylePtr",
    "FontFamilyType",
    "mozilla::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",
    "nsStyleUI",
    "nsStyleVisibility",
    "nsStyleXUL",
    "nsTimingFunction",
    "nscolor",
    "nscoord",
    "nsresult",
    "Loader",
    "LoaderReusableStyleSheets",
    "SheetLoadData",
    "SheetLoadDataHolder",
    "StyleSheet",
    "ServoComputedData",
    "ComputedStyleStrong",
    "EffectCompositor_CascadeLevel",
    "UpdateAnimationsTasks",
    "PointerCapabilities",
    "ParsingMode",
    "InheritTarget",
    "DocumentMatchingFunction",
    "StyleAnimation",
    "StyleRuleInclusion",
    "nsStyleTransformMatrix::MatrixTransformOperator",
    "RawGeckoGfxMatrix4x4",
    "FontFamilyName",
    "mozilla::SharedFontList",
    "RawServoAnimationValueMap",
]
array-types = [
    { cpp-type = "uintptr_t", rust-type = "usize" },
]
servo-immutable-borrow-types = [
    "RawServoDeclarationBlockStrong",
]
servo-borrow-types = [
    "RawServoAnimationValueMap",  # FIXME(heycam): Try to get rid of this.
]
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" },
]