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