From f5b24988989ea4c647609c3159288fe0c4d4193d Mon Sep 17 00:00:00 2001 From: David Rose Date: Mon, 25 Jun 2001 22:14:01 +0000 Subject: [PATCH] export template functions properly from DLL --- panda/src/graph/Sources.pp | 4 ++-- panda/src/graph/nodeTransitions.I | 30 ------------------------------ panda/src/graph/nodeTransitions.h | 11 +++++++++++ panda/src/graph/{wrt.I => wrt.T} | 2 +- panda/src/graph/wrt.h | 4 +--- 5 files changed, 15 insertions(+), 36 deletions(-) rename panda/src/graph/{wrt.I => wrt.T} (99%) diff --git a/panda/src/graph/Sources.pp b/panda/src/graph/Sources.pp index 8bc596c1d8..2b0c15fdcf 100644 --- a/panda/src/graph/Sources.pp +++ b/panda/src/graph/Sources.pp @@ -43,7 +43,7 @@ pt_NodeRelation.h setTransitionHelpers.T \ setTransitionHelpers.h transitionDirection.h \ traverserVisitor.T traverserVisitor.h vector_PT_Node.h \ - vector_PT_NodeRelation.h vector_NodeRelation_star.h wrt.I \ + vector_PT_NodeRelation.h vector_NodeRelation_star.h wrt.T \ wrt.h #define INCLUDED_SOURCES \ @@ -97,7 +97,7 @@ setTransitionHelpers.T setTransitionHelpers.h \ transitionDirection.h traverserVisitor.T traverserVisitor.h \ vector_PT_Node.h vector_PT_NodeRelation.h vector_NodeRelation_star.h \ - wrt.I wrt.h + wrt.T wrt.h #define IGATESCAN all diff --git a/panda/src/graph/nodeTransitions.I b/panda/src/graph/nodeTransitions.I index 2598b9463a..572feacb72 100644 --- a/panda/src/graph/nodeTransitions.I +++ b/panda/src/graph/nodeTransitions.I @@ -63,36 +63,6 @@ end() const { return _transitions.end(); } -//////////////////////////////////////////////////////////////////// -// Function: get_transition_into -// Description: This external template function is handy for -// extracting a transition of a particular type from the -// set. If the transition exists, it is automatically -// downcasted to the correct type and stored in the -// pointer given in the first parameter, and the return -// value is true. If the transition does not exist, the -// pointer is filled with NULL and the return value is -// false. -//////////////////////////////////////////////////////////////////// -template -INLINE_GRAPH bool -get_transition_into(Transition *&ptr, const NodeTransitions &trans, - TypeHandle transition_type) { - NodeTransition *nt = trans.get_transition(transition_type); - if (nt == (NodeTransition *)NULL) { - ptr = (Transition *)NULL; - return false; - } - DCAST_INTO_R(ptr, nt, false); - return true; -} - -template -INLINE_GRAPH bool -get_transition_into(Transition *&ptr, const NodeTransitions &trans) { - return get_transition_into(ptr, trans, Transition::get_class_type()); -} - INLINE_GRAPH ostream &operator << (ostream &out, const NodeTransitions &nts) { nts.output(out); return out; diff --git a/panda/src/graph/nodeTransitions.h b/panda/src/graph/nodeTransitions.h index bf50487653..dbd2628d86 100644 --- a/panda/src/graph/nodeTransitions.h +++ b/panda/src/graph/nodeTransitions.h @@ -88,8 +88,19 @@ private: INLINE_GRAPH ostream &operator << (ostream &out, const NodeTransitions &nts); +template +INLINE_GRAPH bool +get_transition_into(Transition *&ptr, const NodeTransitions &trans, + TypeHandle transition_type); + +template +INLINE_GRAPH bool +get_transition_into(Transition *&ptr, const NodeTransitions &trans); + #ifndef DONT_INLINE_GRAPH #include "nodeTransitions.I" #endif +#include "nodeTransitions.T" + #endif diff --git a/panda/src/graph/wrt.I b/panda/src/graph/wrt.T similarity index 99% rename from panda/src/graph/wrt.I rename to panda/src/graph/wrt.T index c1bdf4410e..6b36b6b7ef 100644 --- a/panda/src/graph/wrt.I +++ b/panda/src/graph/wrt.T @@ -1,4 +1,4 @@ -// Filename: wrt.I +// Filename: wrt.T // Created by: drose (26Oct98) // //////////////////////////////////////////////////////////////////// diff --git a/panda/src/graph/wrt.h b/panda/src/graph/wrt.h index 2a3e7148df..4d7e47dd27 100644 --- a/panda/src/graph/wrt.h +++ b/panda/src/graph/wrt.h @@ -146,8 +146,6 @@ wrt_subtree(NodeRelation *arc, Node *to, UpdateSeq as_of, UpdateSeq now, extern EXPCL_PANDA PStatCollector _wrt_pcollector; extern EXPCL_PANDA PStatCollector _wrt_subtree_pcollector; -#ifndef DONT_INLINE_GRAPH -#include "wrt.I" -#endif +#include "wrt.T" #endif