X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fcore%2FSingleton.hpp;h=2c869fb35b5ed52d5b12e5b33d4e8d875afa2197;hb=93366a0bda79e6fd6e7dad6316bfcf8cc82f5731;hp=476fb5f3b82abeea1e42b564da1b4eedd133a73a;hpb=3e258840b15577cb8bda3cdedd0b9b88e16404b3;p=anna.git diff --git a/include/anna/core/Singleton.hpp b/include/anna/core/Singleton.hpp index 476fb5f..2c869fb 100644 --- a/include/anna/core/Singleton.hpp +++ b/include/anna/core/Singleton.hpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not Nothingness 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 @@ -45,14 +17,13 @@ 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 { 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 @@ -93,11 +64,11 @@ namespace anna { ... ... - void CualquierClase::cualquierFuncion () throw (RuntimeException) + void anyClass::anyFunction () throw (RuntimeException) { A& a (A::instantiate ()); - cout << a.obtenerDato () << endl; + cout << a.getData () << endl; } \endcode @@ -105,14 +76,14 @@ namespace anna { template 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); }