Files

99 lines
2.4 KiB
C
Raw Permalink Normal View History

2025-11-17 10:28:09 +01:00
#ifndef _class
#define _class
#include "index.h"
#include "array.h"
#include "file.h"
#include "text.h"
#include "lexer.h"
#include "template.h"
#include <string.h>
#include <stdbool.h>
struct class{
int classIndex;
char * className;
int lexerIndex;
struct template * template;
struct array * properties;
struct array * methods;
struct array * extends;
int hasExtended;
int hasReflection;
bool usesTemplate;
};
struct class * class_new();
void class_composeTypedefStruct( struct class * classInstance, struct text * classHeader );
void class_reIndexLineNumbers( struct class * baseClass );
void class_updateThisArgument( struct array * arguments, char * baseClassName );
int class_getMethodIndexByName( struct class * classInstance, char * methodName );
void class_addMethodsToBaseClass( struct class * baseClass, struct class * extendedClass );
void class_addPropertiesToBaseClass( struct class * baseClass, struct class * extendedClass );
void class_extendClass( struct class * baseClass );
int class_findClassByClassNameExists( array * classesArray, char * name );
void class_extractMethod( lexer * currentLexer, char * source, int i, struct class * classInstance, struct array * classesArray, struct array * functions );
void class_extractProperty( lexer * currentLexer, int key, int i, char * source, struct class * classInstance );
char * class_extractBodyFromSource( lexer * currentLexer, int i, char * source, int bodyCloseIndex );
struct property * class_getPropertyByName( struct class * classInstance, char * propertyName );
int class_getPropertyIndexByName( struct class * classInstance, char * propertyName );
void class_composeHeader( struct class * classInstance, struct text * classHeader, char * filename );
void class_composeStruct( struct class * classInstance, struct text * classHeader );
void class_composeMethods( struct class * classInstance, struct text * classHeader, struct array * sourceArray );
struct property * class_getClassPropertyByPropertyName( struct class * instance, char * propertyName ) ;
char * class_openingDeclarationFromBaseClassName( char * baseClassName, char * currentOperatorSymbol, int leftSideIsPointer );
char * class_getDatatypeFromClassProperty( char * declaration, struct array * variables );
int class_classNameIsPrimitive( char * baseClassName );
char * class_getBaseClassNameBySymbol( char * leftSideSymbol, struct array * variables, int * leftSideIsPointer ) ;
#endif