Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Thu Apr 30 15:42:41 2015 +0000
Revision:
119:ee6a53069455
Parent:
109:a5b8264ffbbc
Child:
121:ee02790d00b7
funcionalidade - clock "ogro" - implementada

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "vector.h"
klauss 0:4d17cd9c8f9d 2
klauss 0:4d17cd9c8f9d 3 Vector::Vector(){
klauss 0:4d17cd9c8f9d 4 this->objects = NULL;
klauss 0:4d17cd9c8f9d 5 this->elements = 0;
klauss 0:4d17cd9c8f9d 6 }
klauss 0:4d17cd9c8f9d 7
klauss 0:4d17cd9c8f9d 8 Vector::~Vector(){
klauss 0:4d17cd9c8f9d 9 if( this->objects != NULL ) free( this->objects );
klauss 0:4d17cd9c8f9d 10 }
klauss 0:4d17cd9c8f9d 11
klauss 87:679ee0d594a9 12 void Vector::add( Object * e ){
klauss 87:679ee0d594a9 13 if( e != NULL ){
klauss 87:679ee0d594a9 14 this->objects = ( Object ** )realloc( this->objects, sizeof ( Object * ) * ++this->elements );
klauss 87:679ee0d594a9 15 if ( this->objects == NULL ){
klauss 87:679ee0d594a9 16 memory_is_over = true;
klauss 89:0fe315117b00 17 if( debug_memory ) debug_msg("Vector add fail");
klauss 87:679ee0d594a9 18 }else{
klauss 87:679ee0d594a9 19 this->objects[ this->elements - 1 ] = e;
klauss 87:679ee0d594a9 20 }
klauss 87:679ee0d594a9 21 }
klauss 0:4d17cd9c8f9d 22 }
klauss 0:4d17cd9c8f9d 23
klauss 0:4d17cd9c8f9d 24 Object * Vector::get_element( int position ){
klauss 0:4d17cd9c8f9d 25 return( position > -1 && position < this->elements ) ? (Object *) * ( this->objects + position ) : NULL;
klauss 0:4d17cd9c8f9d 26 }
klauss 0:4d17cd9c8f9d 27
klauss 0:4d17cd9c8f9d 28 void Vector::remove_element( int position ){
klauss 29:7246460b73f8 29 if( debug_vector ) debug_msg( "Removing element %d", position );
klauss 0:4d17cd9c8f9d 30 if( position > -1 && position < this->elements ){
klauss 0:4d17cd9c8f9d 31 if( position == 0 && this->elements == 1 ) {
klauss 0:4d17cd9c8f9d 32 this->elements = 0;
klauss 0:4d17cd9c8f9d 33 free( this->objects );
klauss 0:4d17cd9c8f9d 34 this->objects = NULL;
klauss 0:4d17cd9c8f9d 35 }else{
klauss 0:4d17cd9c8f9d 36 this->objects[ position ] = this->objects[ --this->elements ];
klauss 4:de46f0d9b14d 37 this->objects = ( Object ** )realloc( this->objects, sizeof ( Object * ) * this->elements );
klauss 87:679ee0d594a9 38 if( this->objects == NULL ) memory_is_over = true;
klauss 89:0fe315117b00 39 if( debug_memory ) debug_msg("Resize Vector fail");
klauss 0:4d17cd9c8f9d 40 }
klauss 0:4d17cd9c8f9d 41 }
klauss 29:7246460b73f8 42 if( debug_vector ) debug_msg( "Removed" );
klauss 0:4d17cd9c8f9d 43 }
klauss 0:4d17cd9c8f9d 44
klauss 0:4d17cd9c8f9d 45 int Vector::find_element( Object * e ){
klauss 87:679ee0d594a9 46 if( e != NULL )
klauss 87:679ee0d594a9 47 {
klauss 87:679ee0d594a9 48 for( int i = 0; i < this->elements; i++ )
klauss 87:679ee0d594a9 49 if( this->objects[ i ] == e ) return ( i );
klauss 87:679ee0d594a9 50 return ( -3 );
klauss 87:679ee0d594a9 51 }
klauss 87:679ee0d594a9 52 else
klauss 87:679ee0d594a9 53 {
klauss 87:679ee0d594a9 54 return ( -1 );
klauss 87:679ee0d594a9 55 }
klauss 0:4d17cd9c8f9d 56 }
klauss 0:4d17cd9c8f9d 57
klauss 109:a5b8264ffbbc 58 int Vector::size(){ return this->elements; }
klauss 109:a5b8264ffbbc 59
klauss 109:a5b8264ffbbc 60 int Vector::print_yourself ( void )
klauss 109:a5b8264ffbbc 61 {
klauss 109:a5b8264ffbbc 62 send_msg ("");
klauss 109:a5b8264ffbbc 63 send_msg ("Elements :: %d ( %p )", this->elements, &( this->elements ) );
klauss 109:a5b8264ffbbc 64 send_msg ("Values ::\r\n");
klauss 109:a5b8264ffbbc 65
klauss 109:a5b8264ffbbc 66 if( this->elements == 0 )
klauss 109:a5b8264ffbbc 67 {
klauss 109:a5b8264ffbbc 68 send_msg ("Objects :: %p", this->objects );
klauss 109:a5b8264ffbbc 69 }
klauss 109:a5b8264ffbbc 70 else
klauss 109:a5b8264ffbbc 71 {
klauss 109:a5b8264ffbbc 72 for( register int i = 0; i < this->elements; i++ )
klauss 109:a5b8264ffbbc 73 {
klauss 109:a5b8264ffbbc 74 send_msg ("[ %i ] :: %p", i, ( this->objects + i ) );
klauss 109:a5b8264ffbbc 75 }
klauss 109:a5b8264ffbbc 76 }
klauss 109:a5b8264ffbbc 77 send_msg ("");
klauss 109:a5b8264ffbbc 78 return ( sizeof( Vector ) );
klauss 109:a5b8264ffbbc 79 }