Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
vector.h@113:db67ae00550e, 2015-04-16 (annotated)
- Committer:
- klauss
- Date:
- Thu Apr 16 12:57:13 2015 +0000
- Revision:
- 113:db67ae00550e
- Parent:
- 109:a5b8264ffbbc
- Child:
- 114:472502b31a12
valide esse fw
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 69:65665afbad5d | 1 | /** |
klauss | 69:65665afbad5d | 2 | * @file vector.h |
klauss | 69:65665afbad5d | 3 | * @Synopsis A classe Vector representa uma lista de Objects. O objetivo dessa classe é manter de forma organizada na memória as |
klauss | 69:65665afbad5d | 4 | * instâncias da classe Object. |
klauss | 69:65665afbad5d | 5 | * @author Jhonatan Casale |
klauss | 69:65665afbad5d | 6 | * @version 1 |
klauss | 69:65665afbad5d | 7 | * @date 2014-10-31 |
klauss | 69:65665afbad5d | 8 | * \class Vector |
klauss | 69:65665afbad5d | 9 | * \note Não preserva ordem dos seus elementos. |
klauss | 69:65665afbad5d | 10 | */ |
klauss | 69:65665afbad5d | 11 | |
klauss | 0:4d17cd9c8f9d | 12 | #ifndef __VECTOR_H__ |
klauss | 0:4d17cd9c8f9d | 13 | #define __VECTOR_H__ |
klauss | 0:4d17cd9c8f9d | 14 | |
klauss | 0:4d17cd9c8f9d | 15 | #include <stdlib.h> |
klauss | 0:4d17cd9c8f9d | 16 | #include "object.h" |
klauss | 4:de46f0d9b14d | 17 | #include "debug.h" |
klauss | 0:4d17cd9c8f9d | 18 | |
klauss | 0:4d17cd9c8f9d | 19 | class Vector{ |
klauss | 0:4d17cd9c8f9d | 20 | private: |
klauss | 0:4d17cd9c8f9d | 21 | Object **objects; |
klauss | 0:4d17cd9c8f9d | 22 | int elements; |
klauss | 0:4d17cd9c8f9d | 23 | |
klauss | 0:4d17cd9c8f9d | 24 | public: |
klauss | 69:65665afbad5d | 25 | /** |
klauss | 69:65665afbad5d | 26 | * Cria um objeto do tipo vetor pronto para uso. |
klauss | 69:65665afbad5d | 27 | * |
klauss | 69:65665afbad5d | 28 | * Exemplo: |
klauss | 69:65665afbad5d | 29 | * @code |
klauss | 69:65665afbad5d | 30 | * ... |
klauss | 69:65665afbad5d | 31 | * Vector * v = new Vector(); |
klauss | 69:65665afbad5d | 32 | * ... |
klauss | 69:65665afbad5d | 33 | * @endcode |
klauss | 69:65665afbad5d | 34 | */ |
klauss | 0:4d17cd9c8f9d | 35 | Vector(); |
klauss | 69:65665afbad5d | 36 | |
klauss | 69:65665afbad5d | 37 | /** |
klauss | 69:65665afbad5d | 38 | * Deleta todos os elementos do vetor |
klauss | 69:65665afbad5d | 39 | * \note Preserva os elementos originais |
klauss | 69:65665afbad5d | 40 | */ |
klauss | 0:4d17cd9c8f9d | 41 | ~Vector(); |
klauss | 69:65665afbad5d | 42 | |
klauss | 69:65665afbad5d | 43 | /** |
klauss | 69:65665afbad5d | 44 | * @Synopsis Adiciona o elemento @f$e@f$ ao final do vetor |
klauss | 69:65665afbad5d | 45 | * |
klauss | 69:65665afbad5d | 46 | * @param e Um ponteiro para algum objeto da clase Object |
klauss | 69:65665afbad5d | 47 | * |
klauss | 69:65665afbad5d | 48 | * Exemplo: |
klauss | 69:65665afbad5d | 49 | * @code |
klauss | 69:65665afbad5d | 50 | * ... |
klauss | 69:65665afbad5d | 51 | * v->add( new * Object ); |
klauss | 69:65665afbad5d | 52 | * ... |
klauss | 69:65665afbad5d | 53 | * @endcode |
klauss | 69:65665afbad5d | 54 | */ |
klauss | 0:4d17cd9c8f9d | 55 | void add( Object * e ); |
klauss | 69:65665afbad5d | 56 | |
klauss | 69:65665afbad5d | 57 | /** |
klauss | 69:65665afbad5d | 58 | * @Synopsis Retorna elementos contidos no vetor |
klauss | 69:65665afbad5d | 59 | * |
klauss | 69:65665afbad5d | 60 | * @param position A posicao do elemento de interesse |
klauss | 69:65665afbad5d | 61 | * |
klauss | 69:65665afbad5d | 62 | * @return Um objeto da classe Object caso position seja |
klauss | 69:65665afbad5d | 63 | * maior do que zero e menor que o numero de elementos |
klauss | 69:65665afbad5d | 64 | * do vetor, NULL caso contrario |
klauss | 69:65665afbad5d | 65 | * |
klauss | 69:65665afbad5d | 66 | * Exemplo: |
klauss | 69:65665afbad5d | 67 | * @code |
klauss | 69:65665afbad5d | 68 | * ... |
klauss | 69:65665afbad5d | 69 | * Object obj = v->get_element( 0x01 ); |
klauss | 69:65665afbad5d | 70 | * ... |
klauss | 69:65665afbad5d | 71 | * @endcode |
klauss | 69:65665afbad5d | 72 | */ |
klauss | 0:4d17cd9c8f9d | 73 | Object * get_element( int position ); |
klauss | 69:65665afbad5d | 74 | |
klauss | 69:65665afbad5d | 75 | /** |
klauss | 69:65665afbad5d | 76 | * @Synopsis Remove elementos contidos no vetor |
klauss | 69:65665afbad5d | 77 | * |
klauss | 69:65665afbad5d | 78 | * @param position Remove o elemento na posição position, |
klauss | 69:65665afbad5d | 79 | * desde de, position seja maior do que 0 e menor do que o |
klauss | 69:65665afbad5d | 80 | * numero de elementos do vetor. |
klauss | 69:65665afbad5d | 81 | * |
klauss | 69:65665afbad5d | 82 | */ |
klauss | 0:4d17cd9c8f9d | 83 | void remove_element( int position ); |
klauss | 69:65665afbad5d | 84 | |
klauss | 69:65665afbad5d | 85 | /** |
klauss | 69:65665afbad5d | 86 | * @Synopsis Executa procedimento de busca nos elementos do vetor |
klauss | 69:65665afbad5d | 87 | * |
klauss | 69:65665afbad5d | 88 | * @param e Verifica se o elemento @f$e@f$ esta contido no vetor |
klauss | 69:65665afbad5d | 89 | * |
klauss | 69:65665afbad5d | 90 | * @return Um inteiro maior ou igual a zero caso o elemento estiver |
klauss | 69:65665afbad5d | 91 | * contido no vetor, -3 caso o elemento ainda nao pertença. |
klauss | 69:65665afbad5d | 92 | * |
klauss | 69:65665afbad5d | 93 | * Exemplo: |
klauss | 69:65665afbad5d | 94 | * @code |
klauss | 69:65665afbad5d | 95 | * ... |
klauss | 69:65665afbad5d | 96 | * Object * obj = new Obj(); |
klauss | 69:65665afbad5d | 97 | * return( v->find_element( e ) ); |
klauss | 69:65665afbad5d | 98 | * ... |
klauss | 69:65665afbad5d | 99 | * @endcode |
klauss | 69:65665afbad5d | 100 | */ |
klauss | 0:4d17cd9c8f9d | 101 | int find_element( Object * e ); |
klauss | 69:65665afbad5d | 102 | |
klauss | 69:65665afbad5d | 103 | /** |
klauss | 69:65665afbad5d | 104 | * @Synopsis Executa procedimento de busca nos elementos do vetor |
klauss | 69:65665afbad5d | 105 | * |
klauss | 69:65665afbad5d | 106 | * @param ext Verifica se existe algum elemento com este ramal contido no vetor |
klauss | 69:65665afbad5d | 107 | * @param port Verifica se existe algum elemento com esta porta contido no vetor |
klauss | 69:65665afbad5d | 108 | * \note Este método não esta completamente implementado. |
klauss | 69:65665afbad5d | 109 | * |
klauss | 69:65665afbad5d | 110 | * @return Um ponteiro para o objeto de interesse. NULL, caso este objeto não tenha |
klauss | 69:65665afbad5d | 111 | * sido encontrado. |
klauss | 69:65665afbad5d | 112 | * |
klauss | 69:65665afbad5d | 113 | * Exemplo: |
klauss | 69:65665afbad5d | 114 | * @code |
klauss | 69:65665afbad5d | 115 | * ... |
klauss | 69:65665afbad5d | 116 | * return( find_element( 1011, 1011 ); |
klauss | 69:65665afbad5d | 117 | * ... |
klauss | 69:65665afbad5d | 118 | * @endcode |
klauss | 69:65665afbad5d | 119 | */ |
klauss | 0:4d17cd9c8f9d | 120 | Object * find_element( int ext, int port ); |
klauss | 69:65665afbad5d | 121 | |
klauss | 69:65665afbad5d | 122 | /** |
klauss | 69:65665afbad5d | 123 | * @Synopsis Representa o numero de elementos contidos no vetor. |
klauss | 69:65665afbad5d | 124 | * |
klauss | 69:65665afbad5d | 125 | * @return O numero de elementos contidos no vetor |
klauss | 69:65665afbad5d | 126 | * |
klauss | 69:65665afbad5d | 127 | * Exemplo: |
klauss | 69:65665afbad5d | 128 | * @code |
klauss | 69:65665afbad5d | 129 | * ... |
klauss | 69:65665afbad5d | 130 | * v->size(); |
klauss | 69:65665afbad5d | 131 | * ... |
klauss | 69:65665afbad5d | 132 | * @endcode |
klauss | 69:65665afbad5d | 133 | */ |
klauss | 0:4d17cd9c8f9d | 134 | int size(); |
klauss | 113:db67ae00550e | 135 | int print_yourself ( void ); |
klauss | 0:4d17cd9c8f9d | 136 | }; |
klauss | 0:4d17cd9c8f9d | 137 | #endif |