# HG changeset patch # User frosch # Date 2012-04-22 16:28:09 # Node ID b0c685c8a315b1e14e956e95ca14d2dd1507f479 # Parent 64cd03705a3ed345ac870d40fe03a6d4686b4838 (svn r24165) -Codechange: Split parts of static NewGRFClass::Assign() into non-static Insert(). diff --git a/src/newgrf_class.h b/src/newgrf_class.h --- a/src/newgrf_class.h +++ b/src/newgrf_class.h @@ -39,6 +39,8 @@ public: uint32 global_id; ///< Global ID for class, e.g. 'DFLT', 'WAYP', etc. StringID name; ///< Name of this class. + void Insert(Tspec *spec); + static void Reset(); static Tid Allocate(uint32 global_id); static void Assign(Tspec *spec); diff --git a/src/newgrf_class_func.h b/src/newgrf_class_func.h --- a/src/newgrf_class_func.h +++ b/src/newgrf_class_func.h @@ -71,6 +71,18 @@ DEFINE_NEWGRF_CLASS_METHOD(Tid)::Allocat } /** + * Insert a spec into the class. + * @param spec The spec to insert. + */ +DEFINE_NEWGRF_CLASS_METHOD(void)::Insert(Tspec *spec) +{ + uint i = this->count++; + this->spec = ReallocT(this->spec, this->count); + + this->spec[i] = spec; +} + +/** * Assign a spec to one of the classes. * @param spec The spec to assign. * @note The spec must have a valid class id set. @@ -78,12 +90,7 @@ DEFINE_NEWGRF_CLASS_METHOD(Tid)::Allocat DEFINE_NEWGRF_CLASS_METHOD(void)::Assign(Tspec *spec) { assert(spec->cls_id < Tmax); - NewGRFClass *cls = &classes[spec->cls_id]; - - uint i = cls->count++; - cls->spec = ReallocT(cls->spec, cls->count); - - cls->spec[i] = spec; + Get(spec->cls_id)->Insert(spec); } /** @@ -169,6 +176,7 @@ DEFINE_NEWGRF_CLASS_METHOD(const Tspec * template void name::ResetClass(); \ template void name::Reset(); \ template Tid name::Allocate(uint32 global_id); \ + template void name::Insert(Tspec *spec); \ template void name::Assign(Tspec *spec); \ template NewGRFClass *name::Get(Tid cls_id); \ template uint name::GetCount(); \