Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
vector.cpp@137:32dd35a6dbc9, 2015-11-24 (annotated)
- Committer:
- klauss
- Date:
- Tue Nov 24 14:06:22 2015 +0000
- Revision:
- 137:32dd35a6dbc9
- Parent:
- 135:2f4290590e51
core source of the .bin (09/21/2015) in the field
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 0:4d17cd9c8f9d | 1 | #include "vector.h" |
klauss | 0:4d17cd9c8f9d | 2 | |
klauss | 132:05cd37f7e007 | 3 | Vector::Vector () |
klauss | 132:05cd37f7e007 | 4 | { |
klauss | 132:05cd37f7e007 | 5 | this -> objects = NULL; |
klauss | 132:05cd37f7e007 | 6 | this -> elements = 0; |
klauss | 0:4d17cd9c8f9d | 7 | } |
klauss | 0:4d17cd9c8f9d | 8 | |
klauss | 132:05cd37f7e007 | 9 | Vector::~Vector () |
klauss | 132:05cd37f7e007 | 10 | { |
klauss | 132:05cd37f7e007 | 11 | if ( this -> objects != NULL ) free ( this -> objects ); |
klauss | 0:4d17cd9c8f9d | 12 | } |
klauss | 0:4d17cd9c8f9d | 13 | |
klauss | 132:05cd37f7e007 | 14 | void Vector::add ( Object * e ) |
klauss | 132:05cd37f7e007 | 15 | { |
klauss | 132:05cd37f7e007 | 16 | if ( e != NULL ) |
klauss | 132:05cd37f7e007 | 17 | { |
klauss | 132:05cd37f7e007 | 18 | this -> objects = ( Object ** ) realloc ( this -> objects, sizeof ( Object * ) * ++( this -> elements ) ); |
klauss | 132:05cd37f7e007 | 19 | if ( this -> objects == NULL ) |
klauss | 132:05cd37f7e007 | 20 | { |
klauss | 87:679ee0d594a9 | 21 | memory_is_over = true; |
klauss | 132:05cd37f7e007 | 22 | if ( debug_memory ) vz_debug ( "Vector add fail" ); |
klauss | 132:05cd37f7e007 | 23 | } else { |
klauss | 132:05cd37f7e007 | 24 | this -> objects [ this -> elements - 1 ] = e; |
klauss | 87:679ee0d594a9 | 25 | } |
klauss | 87:679ee0d594a9 | 26 | } |
klauss | 0:4d17cd9c8f9d | 27 | } |
klauss | 0:4d17cd9c8f9d | 28 | |
klauss | 132:05cd37f7e007 | 29 | Object * Vector::get_element ( int position ) |
klauss | 132:05cd37f7e007 | 30 | { |
klauss | 132:05cd37f7e007 | 31 | return ( position > -1 && position < this->elements ) ? ( Object * ) * ( this -> objects + position ) : NULL; |
klauss | 0:4d17cd9c8f9d | 32 | } |
klauss | 0:4d17cd9c8f9d | 33 | |
klauss | 132:05cd37f7e007 | 34 | void Vector::remove_element ( int position ) |
klauss | 132:05cd37f7e007 | 35 | { |
klauss | 132:05cd37f7e007 | 36 | if ( debug_vector ) vz_debug ( "Removing element %d", position ); |
klauss | 132:05cd37f7e007 | 37 | if ( position > -1 && position < this -> elements ) |
klauss | 132:05cd37f7e007 | 38 | { |
klauss | 132:05cd37f7e007 | 39 | if ( position == 0 && this -> elements == 1 ) |
klauss | 132:05cd37f7e007 | 40 | { |
klauss | 132:05cd37f7e007 | 41 | this -> elements = 0; |
klauss | 132:05cd37f7e007 | 42 | free ( this -> objects ); |
klauss | 132:05cd37f7e007 | 43 | this -> objects = NULL; |
klauss | 132:05cd37f7e007 | 44 | } else { |
klauss | 132:05cd37f7e007 | 45 | this -> objects [ position ] = this -> objects[ -- ( this -> elements ) ]; |
klauss | 132:05cd37f7e007 | 46 | this -> objects = ( Object ** ) realloc ( this -> objects, sizeof ( Object * ) * this -> elements ); |
klauss | 132:05cd37f7e007 | 47 | if ( this -> objects == NULL ) memory_is_over = true; |
klauss | 132:05cd37f7e007 | 48 | if ( debug_memory ) vz_debug ( "Resize Vector fail" ); |
klauss | 0:4d17cd9c8f9d | 49 | } |
klauss | 0:4d17cd9c8f9d | 50 | } |
klauss | 132:05cd37f7e007 | 51 | if ( debug_vector ) vz_debug ( "Removed" ); |
klauss | 0:4d17cd9c8f9d | 52 | } |
klauss | 0:4d17cd9c8f9d | 53 | |
klauss | 132:05cd37f7e007 | 54 | int Vector::size ( void ) { return this -> elements; } |
klauss | 109:a5b8264ffbbc | 55 | |
klauss | 109:a5b8264ffbbc | 56 | int Vector::print_yourself ( void ) |
klauss | 109:a5b8264ffbbc | 57 | { |
klauss | 132:05cd37f7e007 | 58 | vz_printf ("\r\n"); |
klauss | 132:05cd37f7e007 | 59 | vz_printf ("Elements :: %d ( %p )", this -> elements, &( this->elements ) ); |
klauss | 132:05cd37f7e007 | 60 | vz_printf ("Values ::\r\n"); |
klauss | 109:a5b8264ffbbc | 61 | |
klauss | 132:05cd37f7e007 | 62 | if ( this -> elements == 0 ) |
klauss | 109:a5b8264ffbbc | 63 | { |
klauss | 132:05cd37f7e007 | 64 | vz_printf ( "Objects :: %p", this -> objects ); |
klauss | 109:a5b8264ffbbc | 65 | } |
klauss | 109:a5b8264ffbbc | 66 | else |
klauss | 109:a5b8264ffbbc | 67 | { |
klauss | 132:05cd37f7e007 | 68 | for ( register int i = 0; i < this -> elements; i++ ) |
klauss | 109:a5b8264ffbbc | 69 | { |
klauss | 132:05cd37f7e007 | 70 | vz_printf ("[ %i ] :: %p", i, ( this -> objects + i ) ); |
klauss | 109:a5b8264ffbbc | 71 | } |
klauss | 109:a5b8264ffbbc | 72 | } |
klauss | 132:05cd37f7e007 | 73 | vz_printf ("\r\n"); |
klauss | 132:05cd37f7e007 | 74 | |
klauss | 132:05cd37f7e007 | 75 | return ( sizeof ( Vector ) ); |
klauss | 109:a5b8264ffbbc | 76 | } |