summaryrefslogtreecommitdiff
path: root/ace/Service_Templates.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Service_Templates.cpp')
-rw-r--r--ace/Service_Templates.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/ace/Service_Templates.cpp b/ace/Service_Templates.cpp
new file mode 100644
index 00000000000..a4f073d3272
--- /dev/null
+++ b/ace/Service_Templates.cpp
@@ -0,0 +1,74 @@
+// $Id$
+
+#include "ace/Service_Templates.h"
+
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+template class ACE_Node<ACE_Static_Svc_Descriptor *>;
+template class ACE_Unbounded_Set<ACE_Static_Svc_Descriptor *>;
+template class ACE_Unbounded_Set_Iterator<ACE_Static_Svc_Descriptor *>;
+template class ACE_Node<ACE_TString>;
+template class ACE_Unbounded_Queue<ACE_TString>;
+template class ACE_Unbounded_Queue_Iterator<ACE_TString>;
+template class ACE_Unbounded_Set<ACE_TString>;
+template class ACE_Unbounded_Set_Iterator<ACE_TString>;
+template class auto_ptr<ACE_Obstack>;
+template class ACE_Auto_Basic_Ptr<ACE_Obstack>;
+
+template class ACE_Message_Queue<ACE_SYNCH>;
+template class ACE_Message_Queue_Iterator<ACE_SYNCH>;
+template class ACE_Message_Queue_Reverse_Iterator<ACE_SYNCH>;
+template class ACE_Message_Queue_Factory<ACE_SYNCH>;
+template class ACE_Dynamic_Message_Queue<ACE_SYNCH>;
+template class ACE_Module<ACE_SYNCH>;
+template class ACE_Stream<ACE_SYNCH>;
+template class ACE_Stream_Head<ACE_SYNCH>;
+template class ACE_Stream_Tail<ACE_SYNCH>;
+template class ACE_Task<ACE_SYNCH>;
+template class ACE_Thru_Task<ACE_SYNCH>;
+
+// Even with threads, these ACE_NULL_SYNCH specializations are necessary.
+#if defined (ACE_HAS_THREADS)
+ template class ACE_Message_Queue<ACE_NULL_SYNCH>;
+ template class ACE_Message_Queue_Iterator<ACE_NULL_SYNCH>;
+ template class ACE_Message_Queue_Reverse_Iterator<ACE_NULL_SYNCH>;
+ template class ACE_Message_Queue_Factory<ACE_NULL_SYNCH>;
+ template class ACE_Dynamic_Message_Queue<ACE_NULL_SYNCH>;
+ template class ACE_Module<ACE_NULL_SYNCH>;
+ template class ACE_Task<ACE_NULL_SYNCH>;
+ template class ACE_Thru_Task<ACE_NULL_SYNCH>;
+#endif /* ACE_HAS_THREADS */
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#pragma instantiate ACE_Node<ACE_Static_Svc_Descriptor *>
+#pragma instantiate ACE_Unbounded_Set<ACE_Static_Svc_Descriptor *>
+#pragma instantiate ACE_Unbounded_Set_Iterator<ACE_Static_Svc_Descriptor *>
+#pragma instantiate ACE_Node<ACE_TString>
+#pragma instantiate ACE_Unbounded_Queue<ACE_TString>
+#pragma instantiate ACE_Unbounded_Queue_Iterator<ACE_TString>
+#pragma instantiate ACE_Unbounded_Set<ACE_TString>
+#pragma instantiate ACE_Unbounded_Set_Iterator<ACE_TString>
+#pragma instantiate auto_ptr<ACE_Obstack>
+#pragma instantiate ACE_Auto_Basic_Ptr<ACE_Obstack>
+
+#pragma instantiate ACE_Message_Queue<ACE_SYNCH>
+#pragma instantiate ACE_Message_Queue_Iterator<ACE_SYNCH>
+#pragma instantiate ACE_Message_Queue_Reverse_Iterator<ACE_SYNCH>
+#pragma instantiate ACE_Message_Queue_Factory<ACE_SYNCH>
+#pragma instantiate ACE_Dynamic_Message_Queue<ACE_SYNCH>
+#pragma instantiate ACE_Module<ACE_SYNCH>
+#pragma instantiate ACE_Stream<ACE_SYNCH>
+#pragma instantiate ACE_Stream_Head<ACE_SYNCH>
+#pragma instantiate ACE_Stream_Tail<ACE_SYNCH>
+#pragma instantiate ACE_Task<ACE_SYNCH>
+#pragma instantiate ACE_Thru_Task<ACE_SYNCH>
+// Even with threads, these ACE_NULL_SYNCH specializations are necessary.
+#if defined (ACE_HAS_THREADS)
+ #pragma instantiate ACE_Message_Queue<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Message_Queue_Iterator<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Message_Queue_Reverse_Iterator<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Message_Queue_Factory<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Dynamic_Message_Queue<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Module<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Task<ACE_NULL_SYNCH>
+ #pragma instantiate ACE_Thru_Task<ACE_NULL_SYNCH>
+#endif /* ACE_HAS_THREADS */
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */