19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef __CHARACTER_IMPL__
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define __CHARACTER_IMPL__
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "NodeImpl.h"
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "DOMString.h"
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass CharacterDataImpl : public NodeImpl
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate:
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DOMString* charData;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic:
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     /**
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      * Default Constructor for CharacterDataImpl.
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      */
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     CharacterDataImpl();
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     /**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      * Constructor for CharacterDataImpl.
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      * @param data The specify character data.
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      */
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     CharacterDataImpl(const DOMString* data);
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The character data of the node that implements this interface. The DOM
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation may not put arbitrary limits on the amount of data
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that may be stored in a <code>CharacterData</code> node. However,
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation limits may mean that the entirety of a node's data may
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not fit into a single <code>DOMString</code>. In such cases, the user
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may call <code>substringData</code> to retrieve the data in
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * appropriately sized pieces.
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception DOMException
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception DOMException
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   DOMSTRING_SIZE_ERR: Raised when it would return more characters than
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   fit in a <code>DOMString</code> variable on the implementation
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   platform.
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the character data.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const DOMString* getData() const throw (DOMException);
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The character data of the node that implements this interface. The DOM
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation may not put arbitrary limits on the amount of data
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that may be stored in a <code>CharacterData</code> node. However,
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * implementation limits may mean that the entirety of a node's data may
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * not fit into a single <code>DOMString</code>. In such cases, the user
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may call <code>substringData</code> to retrieve the data in
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * appropriately sized pieces.
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param data the specify character data.
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception DOMException
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception DOMException
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   DOMSTRING_SIZE_ERR: Raised when it would return more characters than
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   fit in a <code>DOMString</code> variable on the implementation
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   platform.
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setData(const DOMString* data) throw (DOMException);
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The number of 16-bit units that are available through <code>data</code>
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and the <code>substringData</code> method below. This may have the
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * value zero, i.e., <code>CharacterData</code> nodes may be empty.
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the size of characters data.
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getLength() const;
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Append the string to the end of the character data of the node. Upon
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * success, <code>data</code> provides access to the concatenation of
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>data</code> and the <code>DOMString</code> specified.
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arg The <code>DOMString</code> to append.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception DOMException
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void appendData(const DOMString* arg) throw(DOMException);
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Override getNodeValue() method in NodeImpl.h.*/
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    const DOMString* getNodeValue() const throw(DOMException);
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Override setNodeValue() method in NodeImpl.h */
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setNodeValue(DOMString* nodeValue) throw(DOMException);
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ~CharacterDataImpl();
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project};
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif /*__CHARACTER_IMPL__*/
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
103