|
From: <got...@us...> - 2009-09-27 20:58:20
|
Revision: 381
http://scstudio.svn.sourceforge.net/scstudio/?rev=381&view=rev
Author: gotthardp
Date: 2009-09-27 20:58:04 +0000 (Sun, 27 Sep 2009)
Log Message:
-----------
Preparation for new beautifier: Added new dfs_events_traverser listeners to listen for MSC graph edges. Added FindLpSolve.cmake to search for lp_solve library.
Modified Paths:
--------------
trunk/src/data/dfs_events_traverser.cpp
trunk/src/data/dfs_events_traverser.h
Added Paths:
-----------
trunk/FindLpSolve.cmake
Added: trunk/FindLpSolve.cmake
===================================================================
--- trunk/FindLpSolve.cmake (rev 0)
+++ trunk/FindLpSolve.cmake 2009-09-27 20:58:04 UTC (rev 381)
@@ -0,0 +1,20 @@
+# set the default LPSOLVE_ROOT value
+IF(NOT LPSOLVE_ROOT)
+ SET(LPSOLVE_ROOT $ENV{LPSOLVE_ROOT} CACHE PATH "The LPSOLVE directory root.")
+ENDIF(NOT LPSOLVE_ROOT)
+
+FIND_LIBRARY(LPSOLVE_LIBRARY
+ NAMES lpsolve55
+ PATHS
+ ${LPSOLVE_ROOT}
+ DOC "The lp_solve library")
+
+FIND_PATH(LPSOLVE_INCLUDE_DIR
+ NAMES lpsolve/lp_lib.h
+ PATHS
+ ${LPSOLVE_ROOT}
+ DOC "The lp_solve include files")
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(lp_solve DEFAULT_MSG
+ LPSOLVE_LIBRARY LPSOLVE_INCLUDE_DIR)
Property changes on: trunk/FindLpSolve.cmake
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/data/dfs_events_traverser.cpp
===================================================================
--- trunk/src/data/dfs_events_traverser.cpp 2009-09-26 14:27:43 UTC (rev 380)
+++ trunk/src/data/dfs_events_traverser.cpp 2009-09-27 20:58:04 UTC (rev 381)
@@ -74,9 +74,13 @@
{
traverse_matching_event(event);
if(event->get_successor().get())
+ {
+ event_successor(event, event->get_successor().get());
traverse_strict_event(event->get_successor().get());
+ }
else
traverse_area(event->get_area()->get_next().get());
+
event_finished(event);
}
}
@@ -94,12 +98,14 @@
for(successor=successors.begin(); successor!=successors.end(); successor++)
{
m_reached_elements.push_back((*successor).get());
+ event_successor(event, (*successor)->get_successor());
traverse_coregion_event((*successor)->get_successor());
m_reached_elements.pop_back();
}
}
else
traverse_area(event->get_area()->get_next().get());
+
event_finished(event);
}
}
@@ -109,6 +115,8 @@
if(event->is_send() && event->get_matching_event())
{
m_reached_elements.push_back(event->get_message().get());
+ send_receive_pair(event, event->get_matching_event());
+
StrictEvent* strict = dynamic_cast<StrictEvent*>(event->get_matching_event());
if(strict)
{
@@ -119,6 +127,7 @@
CoregionEvent* e = dynamic_cast<CoregionEvent*>(event->get_matching_event());
traverse_coregion_event(e);
}
+
m_reached_elements.pop_back();
}
}
@@ -182,6 +191,20 @@
m_reached_elements.pop_back();
}
+void DFSEventsTraverser::event_successor(Event* event, Event* successor)
+{
+ EventSuccessorListenerPList::iterator l;
+ for(l=event_successor_listeners.begin();l!=event_successor_listeners.end();l++)
+ (*l)->on_event_successor(event, successor);
+}
+
+void DFSEventsTraverser::send_receive_pair(Event* send, Event* receive)
+{
+ SendReceivePairListenerPList::iterator l;
+ for(l=send_receive_pair_listeners.begin();l!=send_receive_pair_listeners.end();l++)
+ (*l)->on_send_receive_pair(send, receive);
+}
+
EventPListPtr DFSEventsTraverser::topology_order(BMscPtr b)
{
EventPListPtr topology(new EventPList);
@@ -217,12 +240,24 @@
event_finished_listeners.clear();
}
+void DFSEventsTraverser::remove_event_successor_listeners()
+{
+ event_successor_listeners.clear();
+}
+
+void DFSEventsTraverser::remove_send_receive_pair_listeners()
+{
+ send_receive_pair_listeners.clear();
+}
+
void DFSEventsTraverser::remove_all_listeners()
{
remove_white_event_found_listeners();
remove_gray_event_found_listeners();
remove_black_event_found_listeners();
remove_event_finished_listeners();
+ remove_event_successor_listeners();
+ remove_send_receive_pair_listeners();
}
// $Id$
Modified: trunk/src/data/dfs_events_traverser.h
===================================================================
--- trunk/src/data/dfs_events_traverser.h 2009-09-26 14:27:43 UTC (rev 380)
+++ trunk/src/data/dfs_events_traverser.h 2009-09-27 20:58:04 UTC (rev 381)
@@ -27,7 +27,7 @@
typedef std::list<MscElement*> MscElementPList;
/**
- * Listener of founded white Event
+ * Listener of detected white Event
*/
class SCMSC_EXPORT WhiteEventFoundListener
{
@@ -42,7 +42,7 @@
};
/**
- * Listener of founded white Event
+ * Listener of detected white Event
*/
class SCMSC_EXPORT GrayEventFoundListener
{
@@ -57,7 +57,7 @@
};
/**
- * Listener of founded black Event
+ * Listener of detected black Event
*/
class SCMSC_EXPORT BlackEventFoundListener
{
@@ -86,10 +86,42 @@
virtual void on_event_finished(Event* event)=0;
};
+/**
+ * Listener for event successor relations.
+ */
+class SCMSC_EXPORT EventSuccessorListener
+{
+public:
+
+ virtual ~EventSuccessorListener()
+ {
+
+ }
+
+ virtual void on_event_successor(Event* event, Event* successor)=0;
+};
+
+/**
+ * Listener for sender-receiver relations.
+ */
+class SCMSC_EXPORT SendReceivePairListener
+{
+public:
+
+ virtual ~SendReceivePairListener()
+ {
+
+ }
+
+ virtual void on_send_receive_pair(Event* send, Event* receive)=0;
+};
+
typedef std::list<EventFinishedListener*> EventFinishedListenerPList;
typedef std::list<WhiteEventFoundListener*> WhiteEventFoundListenerPList;
typedef std::list<GrayEventFoundListener*> GrayEventFoundListenerPList;
typedef std::list<BlackEventFoundListener*> BlackEventFoundListenerPList;
+typedef std::list<EventSuccessorListener*> EventSuccessorListenerPList;
+typedef std::list<SendReceivePairListener*> SendReceivePairListenerPList;
/**
* Processes Events during traversing BMsc's Events in depth first search manner.
@@ -144,7 +176,7 @@
}
/**
- * Adds EventFoundListener
+ * Adds BlackEventFoundListener
*/
void add_black_event_found_listener(BlackEventFoundListener* l)
{
@@ -152,6 +184,22 @@
}
/**
+ * Adds EventSuccessorListener
+ */
+ void add_event_successor_listener(EventSuccessorListener* l)
+ {
+ event_successor_listeners.push_back(l);
+ }
+
+ /**
+ * Adds SendReceivePairListenerPList
+ */
+ void add_send_receive_pair_listener(SendReceivePairListener* l)
+ {
+ send_receive_pair_listeners.push_back(l);
+ }
+
+ /**
* Cleans up set attributes.
*/
virtual void cleanup_traversing_attributes();
@@ -167,6 +215,8 @@
void remove_gray_event_found_listeners();
void remove_black_event_found_listeners();
void remove_event_finished_listeners();
+ void remove_event_successor_listeners();
+ void remove_send_receive_pair_listeners();
void remove_all_listeners();
protected:
@@ -187,26 +237,12 @@
* Holds listeners
*/
EventFinishedListenerPList event_finished_listeners;
-
- /**
- * Holds listeners
- */
WhiteEventFoundListenerPList white_event_found_listeners;
-
- /**
- * Holds listeners
- */
GrayEventFoundListenerPList gray_event_found_listeners;
-
- /**
- * Holds listeners
- */
BlackEventFoundListenerPList black_event_found_listeners;
-
- /**
- * Holds listeners
- */
GrayEventFoundListenerPList grey_event_found_listeners;
+ EventSuccessorListenerPList event_successor_listeners;
+ SendReceivePairListenerPList send_receive_pair_listeners;
virtual void traverse_area(EventArea* area);
@@ -239,6 +275,16 @@
void event_finished(Event* e);
/**
+ * Called when a relation event-->successor is found.
+ */
+ void event_successor(Event* event, Event* successor);
+
+ /**
+ * Called when a message send-->receive is found.
+ */
+ void send_receive_pair(Event* send, Event* receive);
+
+ /**
* Sets color attribute of e to c value .
*/
void set_color(Event* e, NodeColor c)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|