New feature to allow to register components with different names for same class:...
[anna.git] / include / anna / app / functions.hpp
index 9998558..c078917 100644 (file)
@@ -28,36 +28,19 @@ struct functions : public anna::functions {
   */
   static Application& getApp() throw(RuntimeException);
 
-  /**
-     Patron para obtener facilmente la instancia de un determinado componente.
-     Estos dos parametros suelen ser sustituidos por la macro C <b>FILE_LOCATION</b>.
-
-     \param fromFile Fichero desde el que se invoca a este metodo
-     \param fromLine Numero de linea desde el que se invoca a este metodo.
-
-     \return La instancia del componente de la clase recibida como parametro.
-     \warning La clase T de implementar un metodo de la forma:
-     \code
-         static const char* getClassName () throw ();
-     \endcode
-     \see Component
-  */
-  template <typename T> static T* component(const char* fromFile, const int fromLine)
-  throw(anna::RuntimeException) {
-    return component<T> (T::getClassName(), fromFile, fromLine);
-  }
 
   /**
-     Patron para obtener facilmente la instancia de un determinado componente.
-     Estos dos parametros suelen ser sustituidos por la macro C <b>FILE_LOCATION</b>.
-     \param className Nombre del componente buscado.
-     \param fromFile Fichero desde el que se invoca a este metodo
-     \param fromLine Numero de linea desde el que se invoca a este metodo.
+     Pattern to obtain a multi named application component instance easily.
+     Parameters are usually replaced by the macro C <b>FILE_LOCATION</b>.
+
+     \param className Application component class name
+     \param fromFile File which called the method
+     \param fromLine Line number within the file from where the method is called.
 
-     \return La instancia del componente de la clase recibida como parametro.
+     \return Application component instance for the class provided at the pattern
      \see Component
   */
-  template <typename T> static T* component(const char* className, const char* fromFile, const int fromLine)
+  template <typename T> static T* componentByName(const char *className, const char* fromFile, const int fromLine)
   throw(anna::RuntimeException) {
     T* result = static_cast <T*>(functions::getApp().find(className));
 
@@ -71,6 +54,25 @@ struct functions : public anna::functions {
   }
 };
 
+  /**
+     Pattern to obtain a single named application component instance easily.
+     Parameters are usually replaced by the macro C <b>FILE_LOCATION</b>.
+
+     \param fromFile File which called the method
+     \param fromLine Line number within the file from where the method is called.
+
+     \return Application component instance for the class provided at the pattern
+     \warning T class must implement a method in the form:
+     \code
+         static const char* getClassName () throw ();
+     \endcode
+     \see Component
+  */
+  template <typename T> static T* component(const char* fromFile, const int fromLine)
+  throw(RuntimeException) {
+    return functions::componentByName<T> (T::getClassName(), fromFile, fromLine);
+  }
+
 }
 }