00001 /* 00002 * NOTE: "zlib/libpng" style License 00003 * 00004 * ----=== s t d n e t ===---- 00005 * 00006 * Copyright (c) 2002 Warwick Molloy w-molloy@users.sf.net 00007 * 00008 * Copyright (c) 2002 Stdnet Community 00009 * HTTP://Sourceforge.net/projects/stdnet 00010 * 00011 * All references to "software" refer to the stdnet. 00012 * 00013 * This software is provided 'as-is', without any express or 00014 * implied warranty. In no event will the authors be held liable 00015 * for any damages arising from the use of this software. 00016 * 00017 * Permission is granted to anyone to use this software for any 00018 * purpose, including commercial applications, and to alter it 00019 * and redistribute it freely, subject to the following 00020 * restrictions: 00021 * 00022 * 1. The origin of this software must not be misrepresented; 00023 * you must not claim that you wrote the original software. 00024 * If you use this software in a product, an acknowledgment 00025 * in the product documentation would be appreciated but 00026 * is not required. 00027 * 00028 * 2. Altered source versions must be plainly marked as such, 00029 * and must not be misrepresented as being the original 00030 * software. 00031 * 00032 * 3. This notice may not be removed or altered from any source 00033 * distribution. 00034 */ 00035 00036 #include <stdnet/config.h> 00037 #include <stdnet/system/String> 00038 00039 #include <stdio.h> 00040 00041 namespace stdbase { 00042 namespace system { 00043 00044 // These methods are the standard, all-platform 00045 // methods required for Object. 00046 // 00047 00048 Object:: 00049 Object( void ) 00050 : count(0), 00051 lock() 00052 {} 00053 00054 Object:: 00055 ~Object( void ) 00056 { count = 0; } 00057 00058 void Object:: 00059 inc() const 00060 { 00061 lock.seize(); 00062 count++; 00063 lock.release(); 00064 } 00065 00066 unsigned Object:: 00067 dec() const 00068 { 00069 unsigned u; 00070 00071 lock.seize(); 00072 u = --count; 00073 lock.release(); 00074 return u; 00075 } 00076 00077 bool Object:: 00078 equals( ObjectRef object ) 00079 { 00080 return object.get() == this; 00081 } 00082 00083 system::reference<String> Object:: 00084 toString() const 00085 { 00086 char buffer[64]; 00087 sprintf( buffer, " Object@0x08X ", this ); 00088 return system::String::create( buffer ); 00089 } 00090 00091 00092 } // -- end namespace system -- 00093 } //------- end namespace stdbase -- 00094 00095