]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/include/iconector.h
- Se modifica el logo para tener una tipografia mas copada. Ahora el XCF fue
[z.facultad/75.42/plaqui.git] / Model / include / iconector.h
index bbb3c258339db5d4978c168ff229d7e705aa29cc..44e1e32295ab00cbaa23851803d6658e273c4b61 100644 (file)
@@ -12,7 +12,7 @@ namespace PlaQui {
 class IConector {
 public:
        /// Constructor
-       IConector();
+       IConector(unsigned in, unsigned out);
        /// Destructor
        virtual ~IConector();
 
@@ -22,12 +22,25 @@ public:
         *  a la salida.
         *  \param where Donde enviar el mensage, IConector::IN o IConector::OUT
         *  \param msg Mensage a enviar
-        *  \return Respuesta al mensage. Se interpreta dependiendo del mensage
         */
-       int send_msg(int where, int msg);
+       void send_msg(int where, int msg);
        
-       /// Recive un mensage
-       virtual void recieve_msg(int msg, IConector *who);
+       /** Recibe un mensage
+        *
+        *  Este procedimiento atiende los mensages enviados por otros objetos.
+        *  El mensage \e msg es enviado por \e who, quien puede enviar opcionalmente
+        *  un dato en \e data. El campo \e data debe ser interpretado en forma
+        *  correcta dependiendo del mensage enviado.
+        *  El objeto que recibe un mensage puede, de ser necesario, responder al
+        *  objeto que lo envió llamando directamente al método recieve_msg del objeto
+        *  \e who. No se recomienda enviar un mensage mediante send_msg ya que puede
+        *  ocacionar que objetos que no esten esperando una respuesta se comporte de
+        *  manera indeterminada.
+        *  \param msg ID del mensage enviado.
+        *  \param who Objeto que envía el mensage.
+        *  \param data Dato opcional a enviar.
+        */
+       virtual void recieve_msg(int msg, IConector *who, void *data);
 
        /** Conecta un objeto con otro
         *
@@ -63,10 +76,20 @@ public:
                MSG_LAST
        };
 protected:
-       std::list<IConector *> entradas;
-       std::list<IConector *> salidas;
-       unsigned int cant_entradas;
-       unsigned int cant_salidas;
+       /// Lista de objetos conectados a las entradas
+       std::list<IConector *> in_list;
+       /// Lista de objetos conectados a las salidas
+       std::list<IConector *> out_list;
+       /// Cantidad de entradas disponibles
+       unsigned int in_slots;
+       /// Canitidad de salidas disponibles
+       unsigned int out_slots;
+
+private:
+       // Oculto copia entre clases
+       IConector() {}
+       IConector(const IConector &) {}
+       IConector &operator = (const IConector &) { return (*this); }
 };
 
 }