Página principal | Lista de namespace | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros

Referencia de la Clase str_prtc

Esta clase incluye un arreglo de letras para almacenar una hilera. Más...

#include <str_prtc.h>

Lista de todos los miembros.

Tipos públicos

enum  { SIZE_in = 10, SIZE_out = 1 * SIZE_in, Fix_char = '!' }

Métodos públicos

 str_prtc ()
 Constructor de vector.
bool Ok ()
 Usa Check_Ok() para verificar la invariante de la clase.
void Fix ()
 Corrige el valor del objeto "*this" si no cumple con su invariante.
const char * operator= (const char *)
 Cambia el valor de la hilera "*this" para que contenga la hilera "res".
 operator char * ()
 Retorna el valor almacenado en la hilera.
const char * Before ()
 Referencia a la memoria que está antes de la hilera.
const char * After ()
 Referencia a la memoria que está después de la hilera.

Atributos privados

char _before [SIZE_out]
 Memoria [amortiguador] "_before" de la hilera.
char _s [SIZE_in]
 Valor de la hilera.
char _after [SIZE_out]
 Memoria [amortiguador] "después" de la hilera.

Amigas

bool Check_Ok (const str_prtc &)
 Verifica que se cumpla la invariante de la clase, o sea, que el objeto esté bien construido.


Descripción detallada

Esta clase incluye un arreglo de letras para almacenar una hilera.

    +--------------+--------------+--------------+
    |F(/"$'?);)=:~!| << hilera >> |0(/"$'?);)=:~!|
    +--------------+--------------+--------------+


Documentación de las enumeraciones miembro de la clase

anonymous enum
 

Valores de la enumeración:
SIZE_in  Tamaño máximo de una hilera.
SIZE_out  Tamaño del amortiguador alredor del valor de la hilera.
Fix_char  Letra de relleno al final de la hilera [chingolito].
00031          { SIZE_in  =          10, 
00032            SIZE_out = 1 * SIZE_in, 
00033            Fix_char = '!' 
00034     };


Documentación del constructor y destructor

str_prtc::str_prtc  )  [inline]
 

Constructor de vector.


Documentación de las funciones miembro

bool str_prtc::Ok  )  [inline]
 

Usa Check_Ok() para verificar la invariante de la clase.

void str_prtc::Fix  ) 
 

Corrige el valor del objeto "*this" si no cumple con su invariante.

  • En muchas ocasiones Fix() puede implementarse como un constructor, pero puede que esto no sea ni lo mejor o ni lo menos costoso.
  • Para muchas objetos o clases es imposible implementar esta operación.
  • Si esta es una operación de la clase, lo razonable es que también lo sea Ok().

Ver también:
http://www.di-mare.com/adolfo/binder/c04.htm#sc12
00043                    {
00044     if ( Ok() ) { // Si Fix() está implementada, también lo está Ok()
00045         return;
00046     }
00047     unsigned i;
00048 
00049     _after[0] = 0; // pone un EOS==0 al final de la hilera "_s"
00050     for (i = 0; i < SIZE_out; ++i) {
00051         _before[i] = ((char)0xFF ^ _after[i]);
00052     }
00053 
00054     for (i = 0; i < sizeof(str_prtc::_s); ++i) {
00055         _s[i] = Fix_char; // llena toda la hilera "_s" de "chingolitos"
00056     }
00057 }

const char * str_prtc::operator= const char *  res  ) 
 

Cambia el valor de la hilera "*this" para que contenga la hilera "res".

  • Sólo copia la parte de la hilera "res" que cabe en "*this"
00021                                                  {
00022     memset( _s, Fix_char, SIZE_in ); // blanque "*this"
00023     unsigned res_size = 1+strlen( res ); // incluye el EOS
00024     if (res_size <= SIZE_in) { // sólo asigna si la hilera cabe
00025         memcpy( _s, res, res_size );
00026     } else {
00027         memcpy( _s, res, SIZE_in );
00028         _s[ SIZE_in - 1 ] = 0; // trunca
00029     }
00030     return _s;
00031 }

str_prtc::operator char *  )  [inline]
 

Retorna el valor almacenado en la hilera.

const char* str_prtc::Before  )  [inline]
 

Referencia a la memoria que está antes de la hilera.

const char* str_prtc::After  )  [inline]
 

Referencia a la memoria que está después de la hilera.


Documentación de las funciones relacionadas y clases amigas

bool Check_Ok const str_prtc STR  )  [friend]
 

Verifica que se cumpla la invariante de la clase, o sea, que el objeto esté bien construido.

  • La razón por la que esta función no es un método es continuar la costumbre de muchos programadores quienes no definen la invariante para sus clases, pues en muchos casos sobra hacerlo.
  • Esta función en general es difícil de implementar, y en algunos casos es imposible pues, cuando el objeto no está bien construido, puede ocurrir que la función no retorne.
  • En general, la implementáción de esta función no es completa pues hay casos en que es imposible verificar la invariante de una clase.

Postcondición:
Retorna "true" si el la hilera es un objeto bien construido
Ver también:
http://www.di-mare.com/adolfo/binder/c04.htm#sc11
00076                                    {
00077     unsigned i;
00078     if (STR._after[0] != 0) { // verifica EOS al final de la hilera
00079 //          i = i;
00080         return false;
00081     }
00082 
00083     for (i = 0; i < str_prtc::SIZE_out; ++i) {
00084         if (STR._before[i] != ((char)0xFF ^ STR._after[i])) {
00085             return false; // verifica que los [amortiguadores] alrededor
00086         }                 // de la hilera no están [manchados]
00087     }
00088 
00089     i = str_prtc::SIZE_in;
00090     do {
00091         i--;
00092         if (0 == STR._s[i]) { // encontró EOS y todo está bien
00093             break;
00094         } else if (STR._s[i] != str_prtc::Fix_char) {
00095             return false; // se queja porque no hay [chingolitos] después de la hilera
00096         }
00097     } while (i != 0);
00098     if ( i == 0 ) {
00099         return true;
00100     }
00101     // assert( i > 0 );
00102     do {
00103         i--;
00104         if (0 == STR._s[i]) {
00105             return false; // encontró más de un EOS
00106         }
00107     } while (i != 0);
00108 
00109     return true;
00110 }


Documentación de los datos miembro

char str_prtc::_before[SIZE_out] [private]
 

Memoria [amortiguador] "_before" de la hilera.

char str_prtc::_s[SIZE_in] [private]
 

Valor de la hilera.

char str_prtc::_after[SIZE_out] [private]
 

Memoria [amortiguador] "después" de la hilera.


La documentación para esta clase fué generada a partir de los siguientes archivos:
Generado el Sun Nov 13 21:54:53 2005 para A21551 y 791572 Tarea Programada #8 por  doxygen 1.4.4
Hosted by www.Geocities.ws

1