summaryrefslogtreecommitdiff
path: root/src/inc/factory.inl
diff options
context:
space:
mode:
Diffstat (limited to 'src/inc/factory.inl')
-rw-r--r--src/inc/factory.inl32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/inc/factory.inl b/src/inc/factory.inl
new file mode 100644
index 0000000000..b49b90a749
--- /dev/null
+++ b/src/inc/factory.inl
@@ -0,0 +1,32 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+#ifndef _FACTORY_INL_
+#define _FACTORY_INL_
+
+#include "factory.h"
+
+template<typename PRODUCT, DWORD MAX_FACTORY_PRODUCT>
+PRODUCT* InlineFactory<PRODUCT, MAX_FACTORY_PRODUCT>::Create()
+{
+ WRAPPER_NO_CONTRACT;
+
+ if (m_cProduct == MAX_FACTORY_PRODUCT)
+ {
+ InlineFactory* pNext = GetNext();
+ if (pNext)
+ {
+ return pNext->Create();
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+ return &m_product[m_cProduct++];
+}
+
+#endif
+