Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile	(revision 56)
@@ -0,0 +1,22 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_MORPHEO			= ../../..
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libQueue_Control.a
+
+#-----[ include ]------------------------------------------
+
+all				: $(LIBRARY_NEED)
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile.deps	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/Makefile.deps	(revision 56)
@@ -0,0 +1,25 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Queue_Control			= yes
+
+#-----[ Library ]------------------------------------------
+Queue_Control_LIBRARY		= -lQueue_Control
+
+Queue_Control_DIR_LIBRARY	= -L$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control/lib
+
+#-----[ Rules ]--------------------------------------------
+
+Queue_Control_library		:
+				@\
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control --makefile=Makefile ;
+	
+Queue_Control_library_clean	:
+				@\
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Generic/Queue_Control --makefile=Makefile clean;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/include/Queue_Control.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/include/Queue_Control.h	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/include/Queue_Control.h	(revision 56)
@@ -0,0 +1,55 @@
+#ifndef morpheo_behavioural_generic_queue_control_Queue_Control_h
+#define morpheo_behavioural_generic_queue_control_Queue_Control_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include <iostream>
+#include <vector>
+
+#include "Common/include/ErrorMorpheo.h"
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+  class Queue_Control
+  {
+  private : const uint32_t     _nb_elt_max;
+  private : uint32_t           _nb_elt;
+  private : vector<uint32_t> * _tab;
+    
+  public  :          Queue_Control  (uint32_t nb_elt_max);
+  public  :          ~Queue_Control (void);
+    
+  public  : uint32_t nb_elt   (void);
+  public  : bool     full     (void);
+  public  : bool     empty    (void);
+  public  : void     clear    (void);
+
+  public  : uint32_t push     (void);
+  public  : uint32_t push_ovf (void);
+  public  : void     pop      (uint32_t);
+  public  : void     pop      (void);
+  public  : void     pop_ovf  (uint32_t);
+  public  : void     pop_ovf  (void);
+    
+  public : uint32_t operator[] (uint32_t);
+  public : ostream& operator<< (ostream& output_stream);
+  };
+  
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
+
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control.cpp	(revision 56)
@@ -0,0 +1,34 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::Queue_Control"
+  Queue_Control::Queue_Control  (uint32_t nb_elt_max):
+    _nb_elt_max (nb_elt_max)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+	
+    _tab = new vector<uint32_t>;
+
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::~Queue_Control"
+  Queue_Control::~Queue_Control (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+    
+    delete _tab;
+
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_clear.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_clear.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_clear.cpp	(revision 56)
@@ -0,0 +1,26 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::clear"
+  void Queue_Control::clear  (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+	
+    // clear all element in control.
+    _nb_elt = 0;
+    
+    _tab->clear();
+    for (uint32_t i=0; i<_nb_elt_max; i++)
+      _tab->push_back(i);
+
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_flags.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_flags.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_flags.cpp	(revision 56)
@@ -0,0 +1,33 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::full"
+  bool Queue_Control::full (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+    uint32_t _return = (_nb_elt == _nb_elt_max);
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+    
+    return _return;
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::empty"
+  bool Queue_Control::empty (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+    uint32_t _return = (_nb_elt == 0);
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+    
+    return _return;
+  };
+
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_nb_elt.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_nb_elt.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_nb_elt.cpp	(revision 56)
@@ -0,0 +1,23 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::nb_elt"
+  uint32_t Queue_Control::nb_elt  (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+	
+    uint32_t _return = _nb_elt;
+
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+    
+    return _return;
+  };
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_operator.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_operator.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_operator.cpp	(revision 56)
@@ -0,0 +1,34 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::operator<<"
+  ostream& Queue_Control::operator<< (ostream& output_stream)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+	
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+    
+    return output_stream;
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::operator[]"
+  uint32_t Queue_Control::operator[] (uint32_t index)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+	
+    uint32_t _return = (*_tab)[index];
+
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+    
+    return _return;
+  }
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_pop.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_pop.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_pop.cpp	(revision 56)
@@ -0,0 +1,64 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::pop"
+  void Queue_Control::pop (uint32_t index)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+
+    uint32_t val = (*_tab)[index];
+    _tab->erase (_tab->begin()+index);
+    _tab->push_back(val);
+    _nb_elt --;
+	
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::pop"
+  void Queue_Control::pop (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+
+    pop (0);
+	
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::pop_ovf"
+  void Queue_Control::pop_ovf (uint32_t index)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+
+    if (empty() or (index >= _nb_elt_max))
+      {
+	ErrorMorpheo ("<Queue_Control::pop_ovf> Queue Overflow");
+      }
+
+    pop(index);
+	
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::pop_ovf"
+  void Queue_Control::pop_ovf (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+
+    pop_ovf(0);
+
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+  };
+
+
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_push.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_push.cpp	(revision 56)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue_Control/src/Queue_Control_push.cpp	(revision 56)
@@ -0,0 +1,43 @@
+#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace generic {
+namespace queue_control {
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::push"
+  uint32_t Queue_Control::push (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+
+    uint32_t _return = (*_tab)[_nb_elt];
+    _nb_elt ++;
+	
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+
+    return _return;
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Queue_Control::push_ovf"
+  uint32_t Queue_Control::push_ovf (void)
+  {
+    log_printf(FUNC,Queue_Control,FUNCTION,"Begin");
+
+    if (full())
+      {
+	ErrorMorpheo ("<Queue_Control::push_ovf> Queue Overflow");
+      }
+
+    uint32_t _return = push();
+	
+    log_printf(FUNC,Queue_Control,FUNCTION,"End");
+
+    return _return;
+  };
+
+}; // end namespace queue_control
+}; // end namespace generic
+}; // end namespace behavioural
+}; // end namespace morpheo              
