Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp	(revision 29)
@@ -0,0 +1,28 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interface::Interface  (string                name         ,
+			 direction_t           direction    ,
+			 localisation_t        localisation ):
+    _name         (name        ),
+    _direction    (direction   ),
+    _localisation (localisation)
+  {
+  };
+  
+  Interface::~Interface ()
+  {
+  };
+  
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_comment.cpp	(revision 29)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::get_comment (void)
+  {
+    return _comment;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_get_signal.cpp	(revision 29)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::get_signal (void)
+  {
+    uint32_t               depth          = 0;
+    string                 separator      = ",\n";
+    bool                   last_separator = false;
+
+
+    list<Signal>::iterator i     = _list_signal.begin();
+    bool                   empty = _list_signal.empty();
+
+    string                 tab   = string(depth,'\t');
+    ostringstream          text;
+
+    if (not empty)
+      {
+	// First
+	if (i != _list_signal.end())
+	  {
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	while (i != _list_signal.end())
+	  {
+	    text << separator;
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	if (last_separator)
+	  text << separator;
+      }
+
+    return text.str();
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_print.cpp	(revision 29)
@@ -0,0 +1,24 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Interface & x)
+  {
+    output_stream << x._name + "\t"+toString(x._localisation)+"\t"+toString(x._direction) << endl;
+    output_stream << x.get_comment() << endl;
+    output_stream << x.get_signal () << endl;
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_comment.cpp	(revision 29)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface::set_comment (string comment)
+  {
+    _comment = _comment + comment;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_port.cpp	(revision 29)
@@ -0,0 +1,51 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interface::set_port (Vhdl * & vhdl)
+  {
+    if (not _list_signal.empty())
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+	
+	while (i != _list_signal.end())
+	  {
+	    presence_port_t p = (*i)._presence_port;
+	    if ((p == PORT_VHDL_YES_TESTBENCH_YES) or
+		(p == PORT_VHDL_YES_TESTBENCH_NO ) )
+	      vhdl->set_port ((*i)._name,(*i)._direction,(*i)._size);
+	    ++i;
+	  }
+      }
+  };
+
+  void Interface::set_port (Vhdl_Testbench * & vhdl_testbench)
+  {
+    if (not _list_signal.empty())
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+	
+	while (i != _list_signal.end())
+	  {
+	    presence_port_t p = (*i)._presence_port;
+	    if ((p == PORT_VHDL_YES_TESTBENCH_YES) or
+		(p == PORT_VHDL_NO_TESTBENCH_YES ) )
+	      vhdl_testbench->set_port ((*i)._name,(*i)._direction,(*i)._size);
+	    ++i;
+	  }
+      }
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp	(revision 29)
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Include/ChangeCase.h"
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interface::set_signal (Signal signal)
+  {
+    return set_signal(signal._name     ,
+		      signal._direction,
+		      signal._size     );
+    
+  };
+
+  string Interface::set_signal (string          name     ,
+				direction_t     direction,
+				uint32_t        size     ,
+				presence_port_t presence_port)
+  {
+    string str_direction =  toString(direction);
+    string str_interface = _name;
+    string str_signal    =  name;
+
+    LowerCase(str_direction);    
+    UpperCase(str_interface);
+    UpperCase(str_signal   );
+    
+    string signame = str_direction;
+    if (_name != "")
+      signame += "_"+str_interface;
+    if (name  != "")
+      signame += "_"+str_signal;
+    
+    _list_signal.push_back (Signal (signame      ,
+				    direction    ,
+				    size         ,
+				    presence_port));
+
+    return signame;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_toXML.cpp	(revision 29)
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interface.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Interface::toXML (void)
+  {
+    XML xml ("interface");
+    
+    xml.balise_open_begin ("interface");
+    xml.  attribut        ("name"         ,_name                 );
+    xml.  attribut        ("direction"   ,toString(_direction   ));
+    xml.  attribut        ("localisation",toString(_localisation));
+    xml.balise_open_end   ();
+    xml.  text            (get_comment());
+
+    if (_list_signal.empty()== false)
+      {
+	list<Signal>::iterator i     = _list_signal.begin();
+
+	while (i != _list_signal.end())
+	  {
+	    xml.  insert_XML ((*i).toXML());
+	    ++i;
+	  }
+      }
+
+    xml.balise_close      ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp	(revision 29)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Interfaces::Interfaces  (void)
+  {
+  };
+  
+  Interfaces::~Interfaces ()
+  {
+  };
+  
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_get_interface.cpp	(revision 29)
@@ -0,0 +1,51 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  string Interfaces::get_interface (void)
+  {
+    uint32_t               depth          = 0;
+    string                 separator      = ",\n";
+    bool                   last_separator = false;
+
+
+    list<Interface>::iterator i  = _list_interface.begin();
+    bool                   empty = _list_interface.empty();
+
+    string                 tab   = string(depth,'\t');
+    ostringstream          text;
+
+    if (not empty)
+      {
+	// First
+	if (i != _list_interface.end())
+	  {
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	while (i != _list_interface.end())
+	  {
+	    text << separator;
+	    text << tab << *i;
+	    ++i;
+	  }
+	
+	if (last_separator)
+	  text << separator;
+      }
+
+    return text.str();
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_print.cpp	(revision 29)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Interfaces & x)
+  {
+    output_stream << x.get_interface () << endl;
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_interface.cpp	(revision 29)
@@ -0,0 +1,20 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interfaces::set_interface (Interface interface)
+  {
+    _list_interface.push_back (interface);
+  };
+
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_set_port.cpp	(revision 29)
@@ -0,0 +1,45 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+
+namespace morpheo              {
+namespace behavioural          {
+
+  void Interfaces::set_port (Vhdl * & vhdl)
+  {
+    if (not _list_interface.empty())
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+	
+	while (i != _list_interface.end())
+	  {
+	    (*i).set_port (vhdl);
+	    ++i;
+	  }
+      }
+  };
+
+  void Interfaces::set_port (Vhdl_Testbench * & vhdl_testbench)
+  {
+    if (not _list_interface.empty())
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+	
+	while (i != _list_interface.end())
+	  {
+	    (*i).set_port (vhdl_testbench);
+	    ++i;
+	  }
+      }
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_toXML.cpp	(revision 29)
@@ -0,0 +1,36 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Interfaces.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Interfaces::toXML (void)
+  {
+    XML xml ("interfaces");
+    
+//     xml.balise_open ("interfaces");
+
+    if (_list_interface.empty()== false)
+      {
+	list<Interface>::iterator i     = _list_interface.begin();
+
+	while (i != _list_interface.end())
+	  {
+	    xml.  insert_XML ((*i).toXML());
+	    ++i;
+	  }
+      }
+
+//     xml.balise_close      ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal.cpp	(revision 29)
@@ -0,0 +1,30 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  Signal::Signal  (string          name         ,
+		   direction_t     direction    ,
+		   uint32_t        size         ,
+		   presence_port_t presence_port):
+    _name          (name         ),
+    _direction     (direction    ),
+    _size          (size         ),
+    _presence_port (presence_port)
+  {
+  };
+  
+  Signal::~Signal ()
+  {
+  };
+  
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_print.cpp	(revision 29)
@@ -0,0 +1,25 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+
+  
+
+namespace behavioural          {
+
+  ostream& operator<< (ostream& output_stream,
+		       morpheo::behavioural::Signal & x)
+  {
+    output_stream << x._name + "\t{"+toString(x._size)+"}\t"+toString(x._direction) +"\t"+toString(x._presence_port);
+
+    return output_stream;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_toXML.cpp	(revision 29)
@@ -0,0 +1,27 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Signal.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  XML Signal::toXML (void)
+  {
+    XML xml ("signal");
+    
+    xml.singleton_begin ("signal");
+    xml.attribut        ("name"     ,_name               );
+    xml.attribut        ("direction",toString(_direction));
+    xml.attribut        ("size"     ,toString(_size     ));
+    xml.singleton_end   ();
+     
+    return xml;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 29)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_insert_XML.cpp	(revision 29)
@@ -0,0 +1,22 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/XML.h"
+
+namespace morpheo              {
+namespace behavioural          {
+
+  bool XML::insert_XML (XML xml)
+  {
+    //return text (xml.get_body());
+    _body += xml.get_body(depth());
+
+    return true;
+  };
+
+}; // end namespace behavioural          
+}; // end namespace morpheo              
