Remove dynamic exceptions
[anna.git] / include / anna / core / Singleton.hpp
index 897f0c0..4423587 100644 (file)
@@ -1,37 +1,9 @@
-// ANNA - Anna is Not 'N' Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// https://bitbucket.org/testillano/anna
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: eduardo.ramos.testillano@gmail.com
-//          cisco.tierra@gmail.com
+// ANNA - Anna is Not Nothingness Anymore                                                         //
+//                                                                                                //
+// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
+//                                                                                                //
+// See project site at http://redmine.teslayout.com/projects/anna-suite                           //
+// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
 
 
 #ifndef anna_core_Singleton_hpp
 namespace anna {
 
 /**
- Patrn Singleton. Limita la utilizacin de una determinada clase
- para que slo pueda existir una nica instancia.
+ Singleton pattern. Limits the use to a unique class instance.
 
- El contructor por defecto de la clase T debe ser privado, para evitar que
- esta clase se pueda instanciar desde el exterior.
- Vamos a ver un ejemplo de como se haria un Singleton sobre la clase A.
+ Default constructor for T must be private in order to avoid
+ external instantiation. Following, an example using class A:
 
- En el archivo de cabecera de la clase A tendriamos:
+
+ On A class header file, we will have:
  \code
 
  ...
@@ -62,21 +33,21 @@ namespace anna {
 
  class A : public anna::Singleton <A> {
  public:
-    // Accesores
-    int obtenerDato () const { return a_unDato; }
+    // getters
+    int getData () const { return a_data; }
 
-    // Modificadores
-    void establecerOtroDato (const ASD& otroDato) { a_otroDato = otroDato; }
+    // setters
+    void setOtherData (const ASD& otherData) { a_otherData = otherData; }
 
-    // Operadores
+    // operators
        ....
 
-    // Metodos
+    // methods
        ...
 
  private:
-    int a_unDato;
-    ASD a_otroDato;
+    int a_data;
+    ASD a_otherData;
 
     A ();
 
@@ -85,7 +56,7 @@ namespace anna {
 
 \endcode
 
Para hacer uso de la clase A:
To use A class:
 
  \code
 #include <A.h>
@@ -93,11 +64,11 @@ namespace anna {
 ...
 ...
 
- void CualquierClase::cualquierFuncion () throw (RuntimeException)
+ void anyClass::anyFunction () noexcept(false)
  {
     A& a (A::instantiate ());
 
-    cout << a.obtenerDato () << endl;
+    cout << a.getData () << endl;
  }
 
  \endcode
@@ -105,14 +76,14 @@ namespace anna {
 template <class T> class Singleton {
 public:
   /**
-     @return La instancia de la clase indicada en la creacin de la template.
+     @return Class instance provided on template creation.
   */
   static T& instantiate() { return *alloc(true); }
 
   /**
-     Libera la instancia de la clase indicada en la creacin de esta template.
-     Si no hay creada ninguna instancia simplemente se ignora. Este m�odo
-     slo deber� invocarse justo antes de la terminacin de nuestro programa.
+     Release the class instance provided in this template creation.
+     If no instance has been created, this will be ignored.
+     This method only have to be used during the program termination.
   */
   static void release() { alloc(false); }