]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/include/plaqui/server/string.h
Se pasa la conexion suicida al finish del TCPServer para que sea 'transparente'.
[z.facultad/75.42/plaqui.git] / Server / include / plaqui / server / string.h
index 74c27cd96c175742f8c856ccc107cd9ae6ca7697..9c0d72a38550e69ba1b4e19179c13f1641dcfb9f 100644 (file)
 #define PLAQUI_STRING_H
 
 #include <string>
+#include <sstream>
 #include <vector>
 
 namespace PlaQui {
 
 namespace Server {
 
-       /// Conexión.
+       /**
+        * Convierte de un tipo a otro (de p1 a p2) a través de un stringstream.
+        *
+        * \param p1 Parámetro origen.
+        * \param p2 Parámetro destino, al que se quiere convertir.
+        *
+        * \return Referencia a p2.
+        */
+       template < class T1, class T2 > static T2& to(const T1& p1, T2& p2) {
+               std::stringstream ss(p1);
+               ss << p1;
+               ss >> p2;
+               return p2;
+       }
+
+       /// String con varios métodos útiles.
        class String: public std::string {
 
+               /////////////////////////////////////////////////////////////////////
+               // Métodos.
+
                public:
 
                        /// Caracteres que son considerados espacios a la hora de parsear.
@@ -48,6 +67,11 @@ namespace Server {
                         */
                        virtual ~String(void);
 
+                       /**
+                        * Constructor.
+                        */
+                       String(void);
+
                        /**
                         * Constructor.
                         *
@@ -69,7 +93,7 @@ namespace Server {
                        /**
                         * Elmina caracteres al inicio y fin de un string.
                         *
-                        * \param c Lista de caracteres a eliminar.
+                        * \param clist Lista de caracteres a eliminar.
                         */
                        String& trim(const String& clist = SPACE_CHARS);
 
@@ -99,6 +123,29 @@ namespace Server {
                        static String join(const std::vector<std::string>& v,
                                        const std::string& sep);
 
+                       /**
+                        * Convierte un string a otro tipo.
+                        *
+                        * \param p Parametro del tipo al que se quiere convertir.
+                        */
+                       template < class T > T& to(T& p) const {
+                               std::stringstream ss(*this);
+                           ss >> p;
+                           return p;
+                       }
+
+                       /**
+                        * Convierte un tipo a string.
+                        *
+                        * \param p Parametro del tipo que se quiere convertir a string.
+                        */
+                       template < class T > String& from(const T& p) {
+                               std::stringstream ss;
+                           ss << p;
+                           ss >> (*this);
+                           return *this;
+                       }
+
        };
 
 }