csutil/nobjvec.h
Go to the documentation of this file.00001 /* 00002 Crystal Space: Named Object Vector class 00003 Copyright (C) 1998,1999 by Andrew Zabolotny <[email protected]> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with this library; if not, write to the Free 00017 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 */ 00019 00020 #ifndef __CS_NOBJVEC_H__ 00021 #define __CS_NOBJVEC_H__ 00022 00023 //----------------------------------------------------------------------------- 00024 // Note *1*: The explicit "this->" is needed by modern compilers (such as gcc 00025 // 3.4.x) which distinguish between dependent and non-dependent names in 00026 // templates. See: http://gcc.gnu.org/onlinedocs/gcc/Name-lookup.html 00027 //----------------------------------------------------------------------------- 00028 00029 #include "csextern.h" 00030 #include "csutil/refarr.h" 00031 #include "iutil/object.h" 00032 00037 /* Workaround for deprecation warnings caused by types used as the template 00038 * parameter */ 00039 #include "csutil/win32/msvc_deprecated_warn_off.h" 00040 00050 template <class T> 00051 class csRefArrayObject : public csRefArray<T> 00052 { 00053 public: 00054 csRefArrayObject (int ilimit = 0, int ithreshold = 0) 00055 : csRefArray<T> (ilimit, ithreshold) 00056 { 00057 } 00058 00059 size_t GetIndexByName (const char* name) const 00060 { 00061 size_t i; 00062 for (i = 0 ; i < this->Length () ; i++) // see *1* 00063 { 00064 T* o = (*this)[i]; 00065 const char* n = o->QueryObject ()->GetName (); 00066 if (n && !strcmp (n, name)) 00067 return i; 00068 } 00069 return csArrayItemNotFound; 00070 } 00071 00072 T* FindByName (const char* name) const 00073 { 00074 size_t i = GetIndexByName (name); 00075 if (i != csArrayItemNotFound) 00076 return (*this)[i]; 00077 else 00078 return 0; 00079 } 00080 }; 00081 00084 #include "csutil/win32/msvc_deprecated_warn_on.h" 00085 00086 #endif // __CS_NOBJVEC_H__
Generated for Crystal Space by doxygen 1.4.7