00001 #ifndef RefCountedImpl_HEADER_GUARD_ 00002 #define RefCountedImpl_HEADER_GUARD_ 00003 /* 00004 * The Apache Software License, Version 1.1 00005 * 00006 * Copyright (c) 1999-2000 The Apache Software Foundation. All rights 00007 * reserved. 00008 * 00009 * Redistribution and use in source and binary forms, with or without 00010 * modification, are permitted provided that the following conditions 00011 * are met: 00012 * 00013 * 1. Redistributions of source code must retain the above copyright 00014 * notice, this list of conditions and the following disclaimer. 00015 * 00016 * 2. Redistributions in binary form must reproduce the above copyright 00017 * notice, this list of conditions and the following disclaimer in 00018 * the documentation and/or other materials provided with the 00019 * distribution. 00020 * 00021 * 3. The end-user documentation included with the redistribution, 00022 * if any, must include the following acknowledgment: 00023 * "This product includes software developed by the 00024 * Apache Software Foundation (http://www.apache.org/)." 00025 * Alternately, this acknowledgment may appear in the software itself, 00026 * if and wherever such third-party acknowledgments normally appear. 00027 * 00028 * 4. The names "Xerces" and "Apache Software Foundation" must 00029 * not be used to endorse or promote products derived from this 00030 * software without prior written permission. For written 00031 * permission, please contact apache\@apache.org. 00032 * 00033 * 5. Products derived from this software may not be called "Apache", 00034 * nor may "Apache" appear in their name, without prior written 00035 * permission of the Apache Software Foundation. 00036 * 00037 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 00038 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00039 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00040 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 00041 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00042 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00043 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 00044 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00045 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00046 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 00047 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00048 * SUCH DAMAGE. 00049 * ==================================================================== 00050 * 00051 * This software consists of voluntary contributions made by many 00052 * individuals on behalf of the Apache Software Foundation, and was 00053 * originally based on software copyright (c) 1999, International 00054 * Business Machines, Inc., http://www.ibm.com . For more information 00055 * on the Apache Software Foundation, please see 00056 * <http://www.apache.org/>. 00057 */ 00058 00059 /* 00060 * $Log: RefCountedImpl.hpp,v $ 00061 * Revision 1.1 2002/05/11 19:58:06 bhavani 00062 * CR#CR062582# adding xercesc 1.7 file 00063 * 00064 * Revision 1.1.1.1 2002/02/01 22:21:49 peiyongz 00065 * sane_include 00066 * 00067 * Revision 1.4 2000/03/02 19:54:04 roddey 00068 * This checkin includes many changes done while waiting for the 00069 * 1.1.0 code to be finished. I can't list them all here, but a list is 00070 * available elsewhere. 00071 * 00072 * Revision 1.3 2000/02/24 20:11:31 abagchi 00073 * Swat for removing Log from API docs 00074 * 00075 * Revision 1.2 2000/02/06 07:47:34 rahulj 00076 * Year 2K copyright swat. 00077 * 00078 * Revision 1.1.1.1 1999/11/09 01:09:19 twl 00079 * Initial checkin 00080 * 00081 * Revision 1.3 1999/11/08 20:44:33 rahul 00082 * Swat for adding in Product name and CVS comment log variable. 00083 * 00084 */ 00085 00086 // 00087 // This file is part of the internal implementation of the C++ XML DOM. 00088 // It should NOT be included or used directly by application programs. 00089 // 00090 // Applications should include the file <dom/DOM.hpp> for the entire 00091 // DOM API, or DOM_*.hpp for individual DOM classes, where the class 00092 // name is substituded for the *. 00093 // 00094 00095 00096 00097 #include <xercesc/util/XercesDefs.hpp> 00098 00099 00100 class CDOM_EXPORT RefCountedImpl 00101 { 00102 public: 00103 int nodeRefCount; 00104 00105 RefCountedImpl(); 00106 virtual ~RefCountedImpl(); 00107 00108 static void addRef(RefCountedImpl *thisNode); 00109 static void removeRef(RefCountedImpl *thisNode); 00110 00111 virtual void referenced(); // This function will be called by 00112 // the reference counting implementation 00113 // whenever the reference count transitions 00114 // from 0 to 1. 00115 00116 virtual void unreferenced(); // unreferenced() is called whenever the 00117 // the ref count goes from 1 to 0. (Nodes are 00118 // not deleted when the ref count goes to zero 00119 // if they are in the doc tree and the tree 00120 // is still referenced, so a nodes referenced / 00121 // unreferenced state may switch many times 00122 // over its life time.) 00123 }; 00124 00125 #endif