#include "tools.h" char * tools_findDatatype( struct array * variableDeclarationParts ) { int partsCount = array_length( variableDeclarationParts ); char * datatype = malloc( 100 ); for (int i = 0; i < partsCount; ++i) { char * variablePart = text_removeWhiteSpaces( array_get( variableDeclarationParts, i ) ); if( strcmp( variablePart, "extern") == 0 ) { continue; } if( strcmp( variablePart, "struct") == 0 ) { continue; } datatype = variablePart; break; } return datatype; } int tools_findArgumentCloseIndexReverse( char * body, int fromKey ) { int depth = 0; int hasStarted = -1; for (int i = fromKey; i >= 0; --i) { // ')' if ( (int)body[i] == 41 ) { depth++; hasStarted = 1; } if( hasStarted == 1 && depth == 0 ) { return i + 1; } // '(' if ( (int)body[i] == 40 ) { depth--; } } return -1; } char * tools_removePointerSymbolFromDatatype( char * returnType, int * leftSideIsPointer ) { struct array * returnTypeParts = text_split( text_copy( returnType ), " " ); *leftSideIsPointer = variable_isPointer( returnTypeParts ); //printf(" removePointerSymbolFromDatatype: %i \n\n\n", *leftSideIsPointer); return array_get( returnTypeParts, 0 ); }