From aba691ad721a55c08edc2f76ab985bcf2fb14f66 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Wed, 14 Aug 2013 21:59:10 -0500 Subject: [PATCH] Implement NewClassPointer() --- src/dobjtype.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/dobjtype.cpp b/src/dobjtype.cpp index 190f92597b..443fd35b79 100644 --- a/src/dobjtype.cpp +++ b/src/dobjtype.cpp @@ -579,6 +579,25 @@ void PClassPointer::GetTypeIDs(intptr_t &id1, intptr_t &id2) const id2 = (intptr_t)ClassRestriction; } +//========================================================================== +// +// NewClassPointer +// +// Returns a PClassPointer for the restricted type. +// +//========================================================================== + +PClassPointer *NewClassPointer(PClass *restrict) +{ + size_t bucket; + PType *ptype = TypeTable.FindType(RUNTIME_CLASS(PPointer), (intptr_t)RUNTIME_CLASS(PClass), (intptr_t)restrict, &bucket); + if (ptype == NULL) + { + ptype = new PClassPointer(restrict); + TypeTable.AddType(ptype, RUNTIME_CLASS(PPointer), (intptr_t)RUNTIME_CLASS(PClass), (intptr_t)restrict, bucket); + } + return static_cast(ptype); +} /* PEnum ******************************************************************/