/*! @header ECObject @abstract Module of Encore @availability OS X, GNUstep @copyright 2004, 2005, 2006 Oliver Langer Author: Oliver Langer This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  -------------------------------------------------------------------------
  Modification history

  24.02.05 ola     initial version
  22.08.06 ola     license changed
  -------------------------------------------------------------------------
  
*/ #if !defined(__ECObject_H) #define __ECObject_H #include #if !defined(OBJC_WITH_GC) #ifdef MACOSX #if !defined(RETAIN) /** * @macro RETAIN * @description [objc retain] */ #define RETAIN(__r_object) [(__r_object) retain] #endif #if !defined(RELEASE) /** * @macro RELEASE * @description [objc release] */ #define RELEASE(__r_object) [(__r_object) release] #endif #if !defined(ASSIGN) /** * @macro ASSIGN * @param __a_variable target variable * @param __a_object source object reference * assigns __a_object to __a_variable */ #define ASSIGN(__a_variable,__a_object) ({\ if( (__a_variable) != (__a_object)) {\ id tmp = (__a_variable);\ if( nil != (__a_object) ) {\ [__a_object retain];\ }\ __a_variable = __a_object;\ if( nil != tmp ) {\ [tmp release];\ }\ }\ }) #endif #if !defined(DESTROY) /** * @macro DESTROY * @param ___d_object * @description releases the referred object and assigns nil to the * given variable */ #define DESTROY(___d_object ) ({\ if( nil != (___d_object) ) {\ id toRelease = (___d_object);\ (___d_object) = nil;\ [toRelease release];\ }) #endif #if !defined(AUTORELEASE) /** * @macro AUTORELEASE * @param __ar_obj object to auto release * @description mark an object for auto releasing */ #define AUTORELEASE(__ar_obj) [(__ar_obj) autorelease] #endif #endif //defined(MACOSX) #endif //!defined(OBJC_WITH_GC) /*! * @protocol ECObject * @abstract protocol of all ec based classes */ @protocol ECObject @end /*! * @class ECObject * @abstract base class of all ec related classes */ @interface ECObject : NSObject @end #endif