

// #include "sqlite.h"

int getPropertyIndexOfClassIndex( int propertyCount, char ** propertyNames ) {

	int propertyIdOfIndex		= -1;

	for ( int i = 0; i < propertyCount; ++i )
	{
		char * propertyName	= propertyNames[i];

		//printf("propertyName: %s\n", propertyName);

		if( strcmp( propertyName, "id" ) == 0 ) {

			propertyIdOfIndex = i;

			break;

		}

	}

	return propertyIdOfIndex;

}

/*
void getArrayByClassIndex( int items, void * * voidArray, int * structByteSize, int classIndex ) {

	struct user * array;

	switch( classIndex ) {

		case 8:

			array 	= ( struct user * ) malloc( sizeof( struct user ) * 1000 );

			voidArray				= ( void ** ) array;

			*structByteSize			= sizeof( struct user );

		break;

		default:

			array 	= ( struct user * ) malloc( sizeof( struct user ) * 1000 );

			voidArray				= ( void ** ) array;

			*structByteSize			= sizeof( struct user );

	}

}*/

char * getClassName( int classIndex ) {

	return __ClassNames[ classIndex ];

}


int getClassIndexByClassName( char * className ) {

	for (int i = 0; i < TOTAL_CLASS_COUNT; ++i)
	{
		char * currentClassName = __ClassNames[ i ];

		if( strcmp( className, currentClassName ) == 0 ) {

			//printf("find classname: %s\n", className);

			return i;

		}

	}

	return -1;

}

int getPropertyCountByClassIndex( int classIndex ) {

	return __ClassPropertyCount[ classIndex ];

}

char * * getPropertiesByClassIndex( int classIndex ) {

	return __ClassPropertyNames[ classIndex ];

}

int * getPropertyOffsetsByClassIndex( int classIndex ) {

	return __ClassPropertyOffsets[ classIndex ];

}

int getPropertyOffsetByPropertyIndex( int * propertyOffsets, int propertyIndex ) {

	return propertyOffsets[ propertyIndex ];

}

int * getPropertyDatatypeIndexesByClassIndex( int classIndex ) {

	return __ClassPropertyDatatypeIndices[ classIndex ];

}

int getPropertyDatatypeIndex( int * propertyDatatypeIndices, int propertyIndex ) {

	return propertyDatatypeIndices[ propertyIndex ];

}


int getPropertyIndexByPropertyName( int classID, char * propertyName ) {

	int propertyCount			= getPropertyCountByClassIndex( classID );

	char * * propertyNames		= getPropertiesByClassIndex( classID );

	for (int i = 0; i < propertyCount; ++i)
	{

		char * propertyNameCompare = propertyNames[i];

		if( strcmp( propertyName, propertyNameCompare ) == 0 ) {

			return i;

		}

	}

	return -1;

}

int getMethodCountByClassIndex( int classIndex ) {

	return __ClassMethodCount[ classIndex ];

}


char * * getMethodNamesByClassIndex( int classIndex ) {

	return __ClassMethodNames[ classIndex ];

}


int getMethodIndexByPropertyName( int classID, char * propertyName ) {

	int methodCount				= getMethodCountByClassIndex( classID );

	char * * methodNames		= getMethodNamesByClassIndex( classID );

	for (int i = 0; i < methodCount; ++i)
	{

		char * propertyNameCompare = methodNames[i];

		if( strcmp( propertyName, propertyNameCompare ) == 0 ) {

			return i;

		}

	}

	return -1;

}