summaryrefslogtreecommitdiffstats
path: root/khtml/dom/dom2_events.h
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/dom/dom2_events.h')
-rw-r--r--khtml/dom/dom2_events.h846
1 files changed, 0 insertions, 846 deletions
diff --git a/khtml/dom/dom2_events.h b/khtml/dom/dom2_events.h
deleted file mode 100644
index 285a0c10e..000000000
--- a/khtml/dom/dom2_events.h
+++ /dev/null
@@ -1,846 +0,0 @@
-/*
- * This file is part of the DOM implementation for KDE.
- *
- * Copyright (C) 2001 Peter Kelly (pmk@post.com)
- * (C) 2003 Apple Computer, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef _DOM_Events_h_
-#define _DOM_Events_h_
-
-#include <dom/dom_node.h>
-#include <dom/dom_misc.h>
-
-namespace DOM {
-
-class Event;
-class EventException;
-class UIEvent;
-class MouseEvent;
-class TextEvent;
-class MutationEvent;
-class AbstractView;
-
-class EventListenerImpl;
-class EventImpl;
-class UIEventImpl;
-class MouseEventImpl;
-class KeyEventBaseImpl;
-class MutationEventImpl;
-
-
-
-/**
- * Introduced in DOM Level 2
- *
- * The EventListener interface is the primary method for handling events.
- * Users implement the EventListener interface and register their listener on
- * an EventTarget using the AddEventListener method. The users should also
- * remove their EventListener from its EventTarget after they have completed
- * using the listener.
- *
- * When a Node is copied using the cloneNode method the EventListeners attached
- * to the source Node are not attached to the copied Node. If the user wishes
- * the same EventListeners to be added to the newly created copy the user must
- * add them manually.
- *
- */
-class KHTML_EXPORT EventListener : public DomShared {
-public:
- EventListener();
- virtual ~EventListener();
-
- /**
- * This method is called whenever an event occurs of the type for which the
- * EventListener interface was registered. Parameters
- *
- * @param evt The Event contains contextual information about the event. It
- * also contains the stopPropagation and preventDefault methods which are
- * used in determining the event's flow and default action.
- *
- */
- virtual void handleEvent(Event &evt);
-
- /**
- * @internal
- * not part of the DOM
- *
- * Returns a name specifying the type of listener. Useful for checking
- * if an event is of a particular sublass.
- *
- */
- virtual DOMString eventListenerType();
-
-protected:
- /**
- * @internal
- * Reserved. Do not use in your subclasses.
- */
- EventListenerImpl *impl;
-};
-
-
-/**
- * Introduced in DOM Level 2
- *
- * The Event interface is used to provide contextual information about an event
- * to the handler processing the event. An object which implements the Event
- * interface is generally passed as the first parameter to an event handler.
- * More specific context information is passed to event handlers by deriving
- * additional interfaces from Event which contain information directly relating
- * to the type of event they accompany. These derived interfaces are also
- * implemented by the object passed to the event listener.
- *
- */
-class KHTML_EXPORT Event {
- friend class Document;
- friend class NodeImpl;
- friend class DocumentImpl;
-public:
- Event();
- Event(const Event &other);
- virtual ~Event();
-
- Event & operator = (const Event &other);
-
- /**
- * An integer indicating which phase of event flow is being processed.
- *
- * AT_TARGET: The event is currently being evaluated at the target
- * EventTarget.
- *
- * BUBBLING_PHASE: The current event phase is the bubbling phase.
- *
- * CAPTURING_PHASE: The current event phase is the capturing phase.
- *
- */
- enum PhaseType {
- CAPTURING_PHASE = 1,
- AT_TARGET = 2,
- BUBBLING_PHASE = 3
- };
-
- /**
- * The name of the event (case-insensitive). The name must be an XML name.
- *
- */
- DOMString type() const;
-
- /**
- * Used to indicate the EventTarget to which the event was originally
- * dispatched.
- *
- */
- Node target() const;
-
- /**
- * Used to indicate the EventTarget whose EventListeners are currently
- * being processed. This is particularly useful during capturing and
- * bubbling.
- *
- */
- Node currentTarget() const;
-
- /**
- * Used to indicate which phase of event flow is currently being evaluated.
- *
- */
- unsigned short eventPhase() const;
-
- /**
- * Used to indicate whether or not an event is a bubbling event. If the
- * event can bubble the value is true, else the value is false.
- *
- */
- bool bubbles() const;
-
- /**
- * Used to indicate whether or not an event can have its default action
- * prevented. If the default action can be prevented the value is true,
- * else the value is false.
- *
- */
- bool cancelable() const;
-
- /**
- * Used to specify the time (in milliseconds relative to the epoch) at
- * which the event was created. Due to the fact that some systems may not
- * provide this information the value of timeStamp may be not available for
- * all events. When not available, a value of 0 will be returned. Examples
- * of epoch time are the time of the system start or 0:0:0 UTC 1st January 1970.
- *
- */
- DOMTimeStamp timeStamp() const;
-
- /**
- * The stopPropagation method is used prevent further propagation of an
- * event during event flow. If this method is called by any EventListener
- * the event will cease propagating through the tree. The event will
- * complete dispatch to all listeners on the current EventTarget before
- * event flow stops. This method may be used during any stage of event flow.
- *
- */
- void stopPropagation();
-
- /**
- * If an event is cancelable, the preventDefault method is used to signify
- * that the event is to be canceled, meaning any default action normally
- * taken by the implementation as a result of the event will not occur. If,
- * during any stage of event flow, the preventDefault method is called the
- * event is canceled. Any default action associated with the event will not
- * occur. Calling this method for a non-cancelable event has no effect.
- * Once preventDefault has been called it will remain in effect throughout
- * the remainder of the event's propagation. This method may be used during
- * any stage of event flow.
- *
- */
- void preventDefault();
-
- /**
- * The initEvent method is used to initialize the value of an Event created
- * through the DocumentEvent interface. This method may only be called
- * before the Event has been dispatched via the dispatchEvent method,
- * though it may be called multiple times during that phase if necessary.
- * If called multiple times the final invocation takes precedence. If
- * called from a subclass of Event interface only the values specified in
- * the initEvent method are modified, all other attributes are left
- * unchanged.
- *
- * @param eventTypeArg Specifies the event type. This type may be any event
- * type currently defined in this specification or a new event type.. The
- * string must be an XML name.
- *
- * Any new event type must not begin with any upper, lower, or mixed case
- * version of the string "DOM". This prefix is reserved for future DOM
- * event sets. It is also strongly recommended that third parties adding
- * their own events use their own prefix to avoid confusion and lessen the
- * probability of conflicts with other new events.
- *
- * @param canBubbleArg Specifies whether or not the event can bubble.
- *
- * @param cancelableArg Specifies whether or not the event's default action can be prevented.
- *
- */
- void initEvent(const DOMString &eventTypeArg, bool canBubbleArg, bool cancelableArg);
-
- /**
- * @internal
- * not part of the DOM
- */
- EventImpl *handle() const;
- bool isNull() const;
-
-protected:
- Event(EventImpl *i);
- EventImpl *impl;
-};
-
-
-/**
- * Introduced in DOM Level 2:
- *
- * Event operations may throw an EventException as specified in their method
- * descriptions.
- *
- */
-class KHTML_EXPORT EventException
-{
-public:
- EventException(unsigned short _code);
- EventException(const EventException &other);
- EventException & operator = (const EventException &other);
- virtual ~EventException() {}
-
- /**
- * An integer indicating the type of error generated.
- *
- * UNSPECIFIED_EVENT_TYPE_ERR: If the Event's type was not specified by
- * initializing the event before the method was called. Specification of
- * the Event's type as null or an empty string will also trigger this
- * exception.
- *
- */
- enum EventExceptionCode {
- UNSPECIFIED_EVENT_TYPE_ERR = 0
- };
-
- unsigned short code;
-};
-
-
-/**
- * Introduced in DOM Level 2
- *
- * The UIEvent interface provides specific contextual information associated
- * with User Interface events.
- *
- */
-class KHTML_EXPORT UIEvent : public Event {
-public:
- UIEvent();
- UIEvent(const UIEvent &other);
- UIEvent(const Event &other);
- UIEvent & operator = (const UIEvent &other);
- UIEvent & operator = (const Event &other);
- virtual ~UIEvent();
-
- /**
- * The view attribute identifies the AbstractView from which the event was
- * generated.
- *
- */
- AbstractView view() const;
-
- /**
- * Specifies some detail information about the Event, depending on the type
- * of event.
- *
- */
- long detail() const;
-
- /**
- * Non-standard extension to support IE-style keyCode event property.
- *
- */
- int keyCode() const;
-
- /**
- * Non-standard extension to support IE-style charCode event property.
- *
- */
- int charCode() const;
-
- /**
- * Non-standard extensions to support Netscape-style pageX and pageY event properties.
- *
- */
- int pageX() const;
- int pageY() const;
-
- /**
- * Non-standard extensions to support Netscape-style layerX and layerY event properties.
- *
- */
- int layerX() const;
- int layerY() const;
-
- /**
- * Non-standard extension to support Netscape-style "which" event property.
- *
- */
- int which() const;
-
- /**
- * The initUIEvent method is used to initialize the value of a UIEvent
- * created through the DocumentEvent interface. This method may only be
- * called before the UIEvent has been dispatched via the dispatchEvent
- * method, though it may be called multiple times during that phase if
- * necessary. If called multiple times, the final invocation takes
- * precedence.
- *
- * @param typeArg Specifies the event type.
- *
- * @param canBubbleArg Specifies whether or not the event can bubble.
- *
- * @param cancelableArg Specifies whether or not the event's default action
- * can be prevented.
- *
- * @param viewArg Specifies the Event's AbstractView.
- *
- * @param detailArg Specifies the Event's detail.
- *
- */
- void initUIEvent(const DOMString &typeArg,
- bool canBubbleArg,
- bool cancelableArg,
- const AbstractView &viewArg,
- long detailArg);
-protected:
- UIEvent(UIEventImpl *impl);
-};
-
-
-
-
-/**
- * Introduced in DOM Level 2
- *
- * The MouseEvent interface provides specific contextual information associated
- * with Mouse events.
- *
- * The detail attribute inherited from UIEvent indicates the number of times a
- * mouse button has been pressed and released over the same screen location
- * during a user action. The attribute value is 1 when the user begins this
- * action and increments by 1 for each full sequence of pressing and releasing.
- * If the user moves the mouse between the mousedown and mouseup the value will
- * be set to 0, indicating that no click is occurring.
- *
- * In the case of nested elements mouse events are always targeted at the most
- * deeply nested element. Ancestors of the targeted element may use bubbling to
- * obtain notification of mouse events which occur within its descendent elements.
- *
- */
-class KHTML_EXPORT MouseEvent : public UIEvent {
-public:
- MouseEvent();
- MouseEvent(const MouseEvent &other);
- MouseEvent(const Event &other);
- MouseEvent & operator = (const MouseEvent &other);
- MouseEvent & operator = (const Event &other);
- virtual ~MouseEvent();
-
- /**
- * The horizontal coordinate at which the event occurred relative to the
- * origin of the screen coordinate system.
- *
- */
- long screenX() const;
-
- /**
- * The vertical coordinate at which the event occurred relative to the
- * origin of the screen coordinate system.
- *
- */
- long screenY() const;
-
- /**
- * The horizontal coordinate at which the event occurred relative to the
- * DOM implementation's client area.
- *
- */
- long clientX() const;
-
- /**
- * The vertical coordinate at which the event occurred relative to the DOM
- * implementation's client area.
- *
- */
- long clientY() const;
-
- /**
- * Used to indicate whether the 'ctrl' key was depressed during the firing
- * of the event.
- */
- bool ctrlKey() const;
-
- /**
- * Used to indicate whether the 'shift' key was depressed during the firing
- * of the event.
- *
- */
- bool shiftKey() const;
-
- /**
- * Used to indicate whether the 'alt' key was depressed during the firing
- * of the event. On some platforms this key may map to an alternative key
- * name.
- *
- */
- bool altKey() const;
-
- /**
- * Used to indicate whether the 'meta' key was depressed during the firing
- * of the event. On some platforms this key may map to an alternative key
- * name.
- *
- */
- bool metaKey() const;
-
- /**
- * During mouse events caused by the depression or release of a mouse
- * button, button is used to indicate which mouse button changed state. The
- * values for button range from zero to indicate the left button of the
- * mouse, one to indicate the middle button if present, and two to indicate
- * the right button. For mice configured for left handed use in which the
- * button actions are reversed the values are instead read from right to
- * left.
- *
- */
- unsigned short button() const;
-
- /**
- * Used to identify a secondary EventTarget related to a UI event.
- * Currently this attribute is used with the mouseover event to indicate
- * the EventTarget which the pointing device exited and with the mouseout
- * event to indicate the EventTarget which the pointing device entered.
- *
- */
- Node relatedTarget() const;
-
- /**
- * The initMouseEvent method is used to initialize the value of a
- * MouseEvent created through the DocumentEvent interface. This method may
- * only be called before the MouseEvent has been dispatched via the
- * dispatchEvent method, though it may be called multiple times during that
- * phase if necessary. If called multiple times, the final invocation takes
- * precedence. Parameters
- *
- * @param typeArg Specifies the event type.
- *
- * @param canBubbleArg Specifies whether or not the event can bubble.
- *
- * @param cancelableArg Specifies whether or not the event's default action can be prevented.
- *
- * @param viewArg Specifies the Event's AbstractView.
- *
- * @param detailArg Specifies the Event's mouse click count.
- *
- * @param screenXArg Specifies the Event's screen x coordinate
- *
- * @param screenYArg Specifies the Event's screen y coordinate
- *
- * @param clientXArg Specifies the Event's client x coordinate
- *
- * @param clientYArg Specifies the Event's client y coordinate
- *
- * @param ctrlKeyArg Specifies whether or not control key was depressed during the Event.
- *
- * @param altKeyArg Specifies whether or not alt key was depressed during the Event.
- *
- * @param shiftKeyArg Specifies whether or not shift key was depressed during the Event.
- *
- * @param metaKeyArg Specifies whether or not meta key was depressed during the Event.
- *
- * @param buttonArg Specifies the Event's mouse button.
- *
- * @param relatedTargetArg Specifies the Event's related EventTarget.
- *
- */
- void initMouseEvent(const DOMString &typeArg,
- bool canBubbleArg,
- bool cancelableArg,
- const AbstractView &viewArg,
- long detailArg,
- long screenXArg,
- long screenYArg,
- long clientXArg,
- long clientYArg,
- bool ctrlKeyArg,
- bool altKeyArg,
- bool shiftKeyArg,
- bool metaKeyArg,
- unsigned short buttonArg,
- const Node &relatedTargetArg);
-protected:
- MouseEvent(MouseEventImpl *impl);
-};
-
-// Introduced in DOM Level 3:
-/**
- * DOM::TextEvent
- * The detail attribute inherited from UIEvent is used to indicate
- * the number of keypresses which have occurred during key repetition.
- * If this information is not available this value should be 0.
- *
- * ### KDE4: split this up into proper KeyboardEvent and TextEvent classes
- * as specified in current DOM3 Events revision. This is doing heavy emulation
- * at the moment
- */
-class KHTML_EXPORT TextEvent : public UIEvent {
-public:
- TextEvent();
- TextEvent(const TextEvent &other);
- TextEvent(const Event &other);
- TextEvent & operator = (const TextEvent &other);
- TextEvent & operator = (const Event &other);
- virtual ~TextEvent();
-
- /**
- * initTextEvent
- *
- * The initTextEvent method is used to initialize the value of a
- * MouseEvent created through the DocumentEvent interface. This
- * method may only be called before the TextEvent has been dispatched
- * via the dispatchEvent method, though it may be called multiple
- * times during that phase if necessary. If called multiple times,
- * the final invocation takes precedence. This method has no effect
- * if called after the event has been dispatched.
- *
- * Parameters:
- *
- * typeArg of type DOMString
- * Specifies the event type.
- * canBubbleArg of type boolean
- * Specifies whether or not the event can bubble.
- * cancelableArg of type boolean
- * Specifies whether or not the event's default action can be prevent.
- * viewArg of type views::AbstractView
- * Specifies the TextEvent's AbstractView.
- * detailArg of type unsigned short
- * Specifies the number of repeated keypresses, if available.
- * outputStringArg of type DOMString
- * Specifies the TextEvent's outputString attribute
- * keyValArg of type unsigned long
- * Specifies the TextEvent's keyValattribute
- * virtKeyValArg of type unsigned long
- * Specifies the TextEvent's virtKeyValattribute
- * inputGeneratedArg of type boolean
- * Specifies the TextEvent's inputGeneratedattribute
- * numPadArg of type boolean
- * Specifies the TextEvent's numPadattribute
- *
- * No Return Value.
- * No Exceptions.
- */
- void initTextEvent(const DOMString &typeArg,
- bool canBubbleArg,
- bool cancelableArg,
- const AbstractView &viewArg,
- long detailArg,
- const DOMString &outputStringArg,
- unsigned long keyValArg,
- unsigned long virtKeyValArg,
- bool inputGeneratedArg,
- bool numPadArg);
-
- /**
- * initModifier
- *
- * The initModifier method is used to initialize the values of any
- * modifiers associated with a TextEvent created through the
- * DocumentEvent interface. This method may only be called before the
- * TextEvent has been dispatched via the dispatchEvent method, though
- * it may be called multiple times during that phase if necessary. If
- * called multiple times with the same modifier property the final
- * invocation takes precedence. Unless explicitly give a value of
- * true, all modifiers have a value of false. This method has no
- * effect if called after the event has been dispatched. The list of
- * keys below represents the allowable modifier parameters for this
- * method (note: this was not documented properly in earlier versions):
- *
- * Qt::ShiftButton, Qt::AltButton, Qt::ControlButton, Qt::MetaButton
- *
- * Parameters:
- *
- * modifier of type unsigned long
- * The modifier which the user wishes to initialize
- * value of type boolean
- * The new value of the modifier.
- *
- * No Return Value
- * No Exceptions
- */
- void initModifier(unsigned long modifierArg, bool valueArg);
-
- /**
- * inputGenerated of type boolean
- *
- * The inputGenerated attribute indicates whether the key event will
- * normally cause visible output. If the key event does not
- * generate any visible output, such as the use of a function key
- * or the combination of certain modifier keys used in conjunction
- * with another key, then the value will be false. If visible
- * output is normally generated by the key event then the value
- * will be true. The value of inputGenerated does not guarantee
- * the creation of a character. If a key event causing visible
- * output is cancelable it may be prevented from causing
- * output. This attribute is intended primarily to differentiate
- * between keys events which may or may not produce visible output
- * depending on the system state.
- */
- bool inputGenerated() const;
-
- /** keyVal of type unsigned long
- *
- * The value of keyVal holds the value of the Unicode character
- * associated with the depressed key. If the key has no Unicode
- * representation or no Unicode character is available the value is
- * 0.
- */
- unsigned long keyVal() const;
-
- /** numPad of type boolean
- *
- * The numPad attribute indicates whether or not the key event was
- * generated on the number pad section of the keyboard. If the number
- * pad was used to generate the key event the value is true,
- * otherwise the value is false.
- */
- bool numPad() const;
-
- /**
- *outputString of type DOMString
- *
- * outputString holds the value of the output generated by the key
- * event. This may be a single Unicode character or it may be a
- * string. It may also be null in the case where no output was
- * generated by the key event.
- */
-
- DOMString outputString() const;
- /** virtKeyVal of type unsigned long
- *
- * When the key associated with a key event is not representable via
- * a Unicode character virtKeyVale holds the virtual key code
- * associated with the depressed key. If the key has a Unicode
- * representation or no virtual code is available the value is
- * DOM_VK_UNDEFINED.
- */
- unsigned long virtKeyVal() const;
-
- /**
- * checkModifier
- *
- * Note: the below description does not match the actual behavior.
- * it's extended in a way that you can query multiple modifiers
- * at once by logically OR`ing them.
- * also, we use the Qt modifier enum instead of the DOM one.
- *
- * The CheckModifier method is used to check the status of a single
- * modifier key associated with a TextEvent. The identifier of the
- * modifier in question is passed into the CheckModifier function. If
- * the modifier is triggered it will return true. If not, it will
- * return false. The list of keys below represents the allowable
- * modifier parameters for this method (warning: this was not documented
- * properly in earlier versions):
- * Qt::ShiftButton, Qt::AltButton, Qt::ControlButton, Qt::MetaButton
- *
- * Parameters:
- *
- * modifier of type unsigned long
- * The modifier which the user wishes to query.
- *
- * Return Value: boolean
- * The status of the modifier represented as a boolean.
- *
- * No Exceptions
- */
- bool checkModifier(unsigned long modifierArg); // ### KDE 4: const!
-
-protected:
- TextEvent(KeyEventBaseImpl *impl);
-};
-
-
-/**
- * Introduced in DOM Level 2
- *
- * The MutationEvent interface provides specific contextual information
- * associated with Mutation events.
- *
- */
-class KHTML_EXPORT MutationEvent : public Event {
-public:
- MutationEvent();
- MutationEvent(const MutationEvent &other);
- MutationEvent(const Event &other);
- MutationEvent & operator = (const MutationEvent &other);
- MutationEvent & operator = (const Event &other);
- virtual ~MutationEvent();
-
- /**
- * An integer indicating in which way the Attr was changed.
- *
- * ADDITION: The Attr was just added.
- *
- * MODIFICATION: The Attr was modified in place.
- *
- * REMOVAL: The Attr was just removed.
- *
- */
- enum attrChangeType {
- MODIFICATION = 1,
- ADDITION = 2,
- REMOVAL = 3
- };
-
-
- /**
- * relatedNode is used to identify a secondary node related to a mutation
- * event. For example, if a mutation event is dispatched to a node
- * indicating that its parent has changed, the relatedNode is the changed
- * parent. If an event is instead dispatched to a subtree indicating a node
- * was changed within it, the relatedNode is the changed node. In the case
- * of the DOMAttrModified event it indicates the Attr node which was
- * modified, added, or removed.
- *
- */
- Node relatedNode() const;
-
- /**
- * prevValue indicates the previous value of the Attr node in
- * DOMAttrModified events, and of the CharacterData node in
- * DOMCharDataModified events.
- *
- */
- DOMString prevValue() const;
-
- /**
- * newValue indicates the new value of the Attr node in DOMAttrModified
- * events, and of the CharacterData node in DOMCharDataModified events.
- *
- */
- DOMString newValue() const;
-
- /**
- * attrName indicates the name of the changed Attr node in a
- * DOMAttrModified event.
- *
- */
- DOMString attrName() const;
-
- /**
- * attrChange indicates the type of change which triggered the
- * DOMAttrModified event. The values can be MODIFICATION, ADDITION, or
- * REMOVAL.
- *
- */
- unsigned short attrChange() const;
-
- /**
- * The initMutationEvent method is used to initialize the value of a
- * MutationEvent created through the DocumentEvent interface. This method
- * may only be called before the MutationEvent has been dispatched via the
- * dispatchEvent method, though it may be called multiple times during that
- * phase if necessary. If called multiple times, the final invocation takes
- * precedence.
- *
- * @param typeArg Specifies the event type.
- *
- * @param canBubbleArg Specifies whether or not the event can bubble.
- *
- * @param cancelableArg Specifies whether or not the event's default action can be prevented.
- *
- * @param relatedNodeArg Specifies the Event's related Node.
- *
- * @param prevValueArg Specifies the Event's prevValue attribute. This value may be null.
- *
- * @param newValueArg Specifies the Event's newValue attribute. This value may be null.
- *
- * @param attrNameArg Specifies the Event's attrName attribute. This value may be null.
- *
- * @param attrChangeArg Specifies the Event's attrChange attribute
- *
- */
- void initMutationEvent(const DOMString &typeArg,
- bool canBubbleArg,
- bool cancelableArg,
- const Node &relatedNodeArg,
- const DOMString &prevValueArg,
- const DOMString &newValueArg,
- const DOMString &attrNameArg,
- unsigned short attrChangeArg);
-protected:
- MutationEvent(MutationEventImpl *impl);
-};
-
-
-
-} //namespace
-#endif