#ifndef _template

#define _template

#include "stdlib.h"

#include <stdio.h>

#include <array.h>

#include <class.h>

#include "templateInstance.h"

#include "templateInstanceProperty.h"

#include <stdbool.h>

#include "text.h"

#include "string.h"

extern array * allClasses;

struct template{

	struct array * arguments;

	struct array * instances;

};

struct template * template_new();


bool template_addArgumentValue( struct class * classInstance, char * templateArguments );

char * template_extractTemplateName( struct template * currentTemplate, char * argumentText );

void template_add_arguments( struct template * currentTemplate, char * argumentText );

bool template_validateArguments( struct template * currentTemplate, char * argumentText );

void template_addInstance( struct template * currentTemplate, char * argumentText );

bool template_instanceExists( struct template * currentTemplate, char * argumentText );

#endif