summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf_class.h1
-rw-r--r--src/newgrf_class_func.h13
2 files changed, 14 insertions, 0 deletions
diff --git a/src/newgrf_class.h b/src/newgrf_class.h
index efbff9746..81ea4f879 100644
--- a/src/newgrf_class.h
+++ b/src/newgrf_class.h
@@ -34,6 +34,7 @@ struct NewGRFClass {
static Tid Allocate(uint32 global_id);
static void SetName(Tid cls_id, StringID name);
static void Assign(Tspec *spec);
+ static NewGRFClass *Get(Tid cls_id);
static StringID GetName(Tid cls_id);
static uint GetCount();
diff --git a/src/newgrf_class_func.h b/src/newgrf_class_func.h
index c4e9f7963..15cacd4e2 100644
--- a/src/newgrf_class_func.h
+++ b/src/newgrf_class_func.h
@@ -93,6 +93,18 @@ DEFINE_NEWGRF_CLASS_METHOD(void)::Assign(Tspec *spec)
}
/**
+ * Get a particular class.
+ * @param cls_id The id for the class.
+ * @pre cls_id < Tmax
+ */
+template <typename Tspec, typename Tid, Tid Tmax>
+NewGRFClass<Tspec, Tid, Tmax> *NewGRFClass<Tspec, Tid, Tmax>::Get(Tid cls_id)
+{
+ assert(cls_id < Tmax);
+ return classes + cls_id;
+}
+
+/**
* Get the name of a particular class.
* @param cls_id The class to get the name of.
* @pre index < GetCount(cls_id)
@@ -176,6 +188,7 @@ DEFINE_NEWGRF_CLASS_METHOD(const Tspec *)::GetByGrf(uint32 grfid, byte local_id,
template Tid name::Allocate(uint32 global_id); \
template void name::SetName(Tid cls_id, StringID name); \
template void name::Assign(Tspec *spec); \
+ template NewGRFClass<Tspec, Tid, Tmax> *name::Get(Tid cls_id); \
template StringID name::GetName(Tid cls_id); \
template uint name::GetCount(); \
template uint name::GetCount(Tid cls_id); \