1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_core_util_TextManager_hpp
10 #define anna_core_util_TextManager_hpp
14 #include <anna/core/functions.hpp>
15 #include <anna/core/mt/Mutex.hpp>
22 Gestor de textos con formato.
24 class TextManager : public Mutex {
29 TextManager(const char* name);
34 virtual ~TextManager() { clear(); }
37 Operador de acceso. El compositor solicitado deberia estar creado mediate #create.
38 \param composer Indica el numero de compositor al que deseamos acceder.
39 \return El compositor de textos.
41 TextComposer& operator [](const int composer) throw(RuntimeException) { return find(composer); }
44 Operador de acceso. El compositor solicitado deberia estar creado mediate #create.
45 \param composer Indica el numero de compositor al que deseamos acceder.
46 \return El compositor de textos.
48 const TextComposer& operator [](const int composer) const throw(RuntimeException) { return find(composer); }
51 Crea un nuevo compositor de textos.
52 \param composer Índice del compositor.
53 \param expression Expresion asociada al compositor que vamos a crear. El numero de variables que hay que
54 establecer antes de invocar a TextComposer::apply dependera de este texto.
56 void create(const int composer, const char* expression) throw(RuntimeException);
59 Devuelve el compositor de textos asociado al numero recibido como parametro.
60 El compositor solicitado deberia estar creado mediate #create.
61 \param composer Indica el numero de compositor al que deseamos acceder.
62 \return El compositor de textos.
64 TextComposer& find(const int composer) throw(RuntimeException);
67 Devuelve el compositor de textos asociado al numero recibido como parametro.
68 El compositor solicitado deberia estar creado mediate #create.
69 \param composer Indica el numero de compositor al que deseamos acceder.
70 \return El compositor de textos.
72 const TextComposer& find(const int composer) const throw(RuntimeException);
75 Elimina todos los compositores de texto creados hasta el momento.
80 Metodo que podemos reescribir para crear cualquier clase heredada de TextComposer.
81 Por defecto la impletacion sera:
83 return new util::TextComposer (composer, expression);
85 \warning La reimplementacion de este metodo nunca deberia devolver NULL.
87 virtual TextComposer* createTextComposer(const int composer, const char* expression) throw();
90 typedef std::vector <TextComposer*> TextComposerVector;
93 TextComposerVector a_composers;
95 TextManager(const TextManager&);
97 TextComposer* xfind(const int composer) throw();