Initial commit
This commit is contained in:
88
source/tools.c
Normal file
88
source/tools.c
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
#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 );
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user