#include <bitArray.H>
Métodos públicos | |
BitArray (const size_t dim=0) throw (std::exception, std::bad_alloc) | |
void | reserve (size_t dim) |
size_t | size () const |
Retorna la dimensión del arreglo de bits. | |
void | set_size (const size_t sz) |
Reajusta la dimensión del arreglo. | |
BitProxy | operator[] (const size_t i) const |
BitProxy | operator[] (const size_t i) |
int | read_bit (const size_t i) const |
void | write_bit (const size_t i, const unsigned int value) |
int | read (const size_t i) const |
void | write (const size_t i, const unsigned int value) |
void | push (const unsigned int value) |
Inserta al final del arreglo el valor value. | |
void | pop () |
Elimina el último bit del arreglo. | |
void | empty () |
Elimina todos los bits insertados. | |
BitArray (const BitArray &array) throw (std::exception, std::bad_alloc) | |
void | swap (BitArray &array) |
BitArray (BitArray &&array) | |
BitArray & | operator= (BitArray &&array) |
DynList< char > | bits_list () |
Lo convierte a una lista. | |
BitArray & | operator= (const BitArray &array) throw (std::exception, std::bad_alloc) |
void | save (ofstream &output) |
void | load (ifstream &input) |
BitArray (ifstream &input) | |
void | save_in_array_of_chars (const string &name, ofstream &output) |
void | load_from_array_of_chars (const unsigned char str[], const size_t num_bits) |
void | left_shift (const size_t n=1) |
void | right_shift (const size_t n=1) |
void | dyn_left_shift (const size_t n=1) |
void | dyn_right_shift (const size_t n=1) |
void | circular_left_shift (const size_t n=1) |
void | circular_right_shift (const size_t n=1) |
template<typename T > | |
void | set_num (T n) |
void | set_num (const char &c) |
void | set_num (const short &c) |
void | set_num (const int &c) |
void | set_num (const long &c) |
long | get_num () |
void | set_bit_str (const std::string &str) |
std::string | get_bit_str () const |
BitArray (const unsigned char str[], const size_t num_bits) | |
Amigas | |
ostream & | operator<< (ostream &out, const BitArray &array) |
Arreglo contiguo de bits.
BitArray define una arreglo contiguo de bits. El consumo de memoria es proporcional a la n/8; donde n es la cantidad de bits que se desean manejar.
El arreglo es dinámico, lo que implica que éste puede expandirse dinámicamente según la necesidad.
El acceso al i-ésimo bit puede realizarse mediante el operador []. Sin embargo, puesto que esta clase de acceso está implementada mediante una clase proxy, el acceso puede fallar en algunas expresiones donde el compilador no logre efectuar las transformaciones de tipos adecuadas.
|
inline |
Constructor de arreglo de dim bits.
[in] | dim | cantidad de bits. Por omisión es 256. |
bad_alloc | si no hay suficiente memoria para un bloque continuo de dim/8 bytes |
Hace referencia a Aleph::DynArray< T >::set_default_initial_value().
|
inline |
Constructor copia.
Instancia un arreglo de bits copia exacta de array.
[in] | array | el arreglo de bits a ser copiado. |
bad_alloc | si no hay suficiente memoria para un bloque continuo de dim/8 bytes |
|
inline |
|
inline |
Construye un nuevo arreglo de bits a partir de un arreglo de caracteres previamente generado con load_from_array_of_chars
Hace referencia a load_from_array_of_chars().
|
inline |
Desplaza los bits n posiciones a la izquierda circularmente.
Los bits son desplazados sin perderse ninguno, los n primeros bits pasan a ocupar las últimas n posiciones del arreglo.
[in] | n | la cantidad de posiciones que se van a desplazar los bits. |
Hace referencia a read_bit() y write_bit().
|
inline |
Desplaza los bits n posiciones a la derecha circularmente.
Los bits son desplazados sin perderse ninguno, los últimos n bits pasan a ocupar las primeras n posiciones del arreglo.
[in] | n | la cantidad de posiciones que se van a desplazar los bits. |
Hace referencia a read_bit() y write_bit().
|
inline |
Desplaza los bits n posiciones a la izquierda dinámicamente.
Los bits son desplazados sin perderse ninguno y el arreglo crece agregando n ceros a la derecha.
[in] | n | la cantidad de posiciones que se van a desplazar los bits. |
Hace referencia a push().
|
inline |
Desplaza los bits n posiciones a la derecha dinámicamente.
Los bits son desplazados sin perderse ninguno y el arreglo decrece eliminando los n ceros que quedarían a la izquierda
[in] | n | la cantidad de posiciones que se van a desplazar los bits. |
Hace referencia a read_bit(), Aleph::DynArray< T >::set_default_initial_value(), set_size() y write_bit().
|
inline |
Desplaza los bits n posiciones a la izquierda.
Los bits son desplazados y se considera al arreglo de tamaño fijo, es decir, los n primeros bits se pierden.
[in] | n | la cantidad de posiciones que se van a desplazar los bits. |
Hace referencia a read_bit() y write_bit().
|
inline |
Carga desde un archivo un arreglo de bits.
load(input) toma el archivo abierto en input, previamente guardado con el método load(), y restaura el arreglo al valro guardado.
[in] | input | stream de entrada donde se encuentra fguarado el arreglo y que debe haber sido previamente guardado con save(). |
Hace referencia a Aleph::DynArray< T >::cut() y Aleph::DynArray< T >::touch().
Referenciado por BitArray() y Aleph::load_tree().
|
inline |
Lee un arreglo de bits guardado en un arreglo de caracteres.
load_from_array_of_chars(str, num_bits) toma un arreglo str, previamente generado con save_in_array_of_chars, de num_bits de largo, y lo carga.
[in] | str | el arreglo de caracteres donde se encuentra el de bits. |
[in] | num_bits | la cantidad de bits del arreglo. Note que no es la misma que la cantidad de bytes. |
Hace referencia a Aleph::DynArray< T >::cut() y Aleph::DynArray< T >::touch().
Referenciado por BitArray() y Aleph::load_tree_from_array().
|
inline |
Asignación de arreglo de bits.
Libera toda la memoria de this, aparta nueva memoria para albergar array y copia exactamente los bits de array a this.
[in] | array | el arreglo de bits a ser copiado. |
bad_alloc | si no hay suficiente memoria para un bloque continuo de dim/8 bytes. |
|
inline |
Lectura rápida del bit i.
Lee el bit i sin verificar memoria
[in] | i | índice del bit a ser leído. |
Hace referencia a Aleph::DynArray< T >::access().
|
inline |
Lee el bit i.
[in] | i | índice del bit a ser leído. |
Referenciado por bits_list(), circular_left_shift(), circular_right_shift(), Aleph::Huffman_Decoder_Engine::decode(), dyn_right_shift(), left_shift() y right_shift().
|
inline |
Reserva por adelantado memoria para el arreglo de bits a la dimensión dim.
reserve() aparta por adelantado la memoria suficiente para guardar dim bits. De este modo, los accesos de escritura o lectura pueden hacerse directa y más rápidamente mediante los métodos read() y write().
bad_alloc | si no hay suficiente memoria |
Hace referencia a Aleph::DynArray< T >::reserve().
|
inline |
Desplaza los bits n posiciones a la derecha.
Los bits son desplazados y se considera al arreglo de tamaño fijo, es decir, los últimos n bits se pierden.
[in] | n | la cantidad de posiciones que se van a desplazar los bits. |
Hace referencia a read_bit() y write_bit().
|
inline |
Guarda en un archivo texto la secuencia de bits.
save() almacena en el archivo texto output, ya abierto, la secuencia de bits en formato decimal.
La primera línea siempre guarda el tamaño en bytes y en bits. Seguidamente se guardan en valor decimal los bytes secuenciales correspondientes al arreglo.
[in] | output | stream de salida abierto donde se guardaría el arreglo. |
Hace referencia a Aleph::DynArray< T >::access(), Aleph::DynArray< T >::exist() y Aleph::DynArray< T >::size().
Referenciado por Aleph::save_tree().
|
inline |
Guarda en un archivo texto una declaración estática de cadena de carateres que representa el arreglo.
save_in_array_of_chars(name, output) genera una declaración del tipo:
char name [ size ] = { valores del arreglo separados con comas };
La declaración es guardada en el stream de salida output y el nombre del arreglo es name.
[in] | name | nombre de la variable arreglo. |
[in] | output | stream de salida donde se desea guardar la declaración. |
Hace referencia a Aleph::DynArray< T >::access(), Aleph::DynArray< T >::exist() y Aleph::DynArray< T >::size().
Referenciado por Aleph::save_tree_in_array_of_chars().
|
inline |
Escribe el bit i con el valor value sin verificación de memoria.
[in] | i | índice del bit a ser escrito. |
[in] | value | valor a ser escrito en la posición i. |
Hace referencia a Aleph::DynArray< T >::access().
|
inline |
Escribe el bit i con el valor value
[in] | i | índice del bit a ser escrito. |
[in] | value | valor a ser escrito en la posición i. |
Hace referencia a Aleph::DynArray< T >::touch().
Referenciado por circular_left_shift(), circular_right_shift(), dyn_right_shift(), left_shift(), push() y right_shift().