123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- /* 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/. */
- /* CSS Custom Property assignments for a Declaration at a given priority */
- #ifndef mozilla_CSSVariableDeclarations_h
- #define mozilla_CSSVariableDeclarations_h
- #include "nsDataHashtable.h"
- namespace mozilla {
- class CSSVariableResolver;
- } // namespace mozilla
- struct nsRuleData;
- namespace mozilla {
- class CSSVariableDeclarations
- {
- public:
- CSSVariableDeclarations();
- CSSVariableDeclarations(const CSSVariableDeclarations& aOther);
- #ifdef DEBUG
- ~CSSVariableDeclarations();
- #endif
- CSSVariableDeclarations& operator=(const CSSVariableDeclarations& aOther);
- /**
- * Returns whether this set of variable declarations includes a variable
- * with a given name.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name).
- */
- bool Has(const nsAString& aName) const;
- /**
- * Represents the type of a variable value.
- */
- enum Type {
- eTokenStream, // a stream of CSS tokens (the usual type for variables)
- eInitial, // 'initial'
- eInherit, // 'inherit'
- eUnset // 'unset'
- };
- /**
- * Gets the value of a variable in this set of variable declarations.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name).
- * @param aType Out parameter into which the type of the variable value will
- * be stored.
- * @param aValue Out parameter into which the value of the variable will
- * be stored. If the variable is 'initial', 'inherit' or 'unset', this will
- * be the empty string.
- * @return Whether a variable with the given name was found. When false
- * is returned, aType and aValue will not be modified.
- */
- bool Get(const nsAString& aName, Type& aType, nsString& aValue) const;
- /**
- * Adds or modifies an existing entry in this set of variable declarations
- * to have the value 'initial'.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name) whose value is to be set.
- */
- void PutInitial(const nsAString& aName);
- /**
- * Adds or modifies an existing entry in this set of variable declarations
- * to have the value 'inherit'.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name) whose value is to be set.
- */
- void PutInherit(const nsAString& aName);
- /**
- * Adds or modifies an existing entry in this set of variable declarations
- * to have the value 'unset'.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name) whose value is to be set.
- */
- void PutUnset(const nsAString& aName);
- /**
- * Adds or modifies an existing entry in this set of variable declarations
- * to have a token stream value.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name) whose value is to be set.
- * @param aTokenStream The CSS token stream.
- */
- void PutTokenStream(const nsAString& aName, const nsString& aTokenStream);
- /**
- * Removes an entry in this set of variable declarations.
- *
- * @param aName The variable name (not including any "--" prefix that would
- * be part of the custom property name) whose entry is to be removed.
- */
- void Remove(const nsAString& aName);
- /**
- * Returns the number of entries in this set of variable declarations.
- */
- uint32_t Count() const { return mVariables.Count(); }
- /**
- * Copies each variable value from this object into aRuleData, unless that
- * variable already exists on aRuleData.
- */
- void MapRuleInfoInto(nsRuleData* aRuleData);
- /**
- * Copies the variables from this object into aResolver, marking them as
- * specified values.
- */
- void AddVariablesToResolver(CSSVariableResolver* aResolver) const;
- size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
- private:
- /**
- * Adds all the variable declarations from aOther into this object.
- */
- void CopyVariablesFrom(const CSSVariableDeclarations& aOther);
- nsDataHashtable<nsStringHashKey, nsString> mVariables;
- };
- } // namespace mozilla
- #endif
|