renamed chemical to config, and renamed life to entity
This commit is contained in:
parent
04c89e46fe
commit
ccf13ba470
5 changed files with 157 additions and 0 deletions
36
include/arc/std/entity.h
Normal file
36
include/arc/std/entity.h
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
#ifndef ARC_STD_ENTITY_H_
|
||||||
|
#define ARC_STD_ENTITY_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief an entity component system type
|
||||||
|
*/
|
||||||
|
typedef struct ARC_EntitySystem ARC_EntitySystem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief an entity component system type
|
||||||
|
*/
|
||||||
|
typedef uint32_t ARC_Entity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief
|
||||||
|
*/
|
||||||
|
void ARC_EntitySystem_Create(ARC_EntitySystem **entitySystem);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief destroys an ARC_EntitySystem
|
||||||
|
*
|
||||||
|
* @param[in] vector ARC_EntitySystem to free
|
||||||
|
*/
|
||||||
|
void ARC_EntitySystem_Destroy(ARC_EntitySystem *entitySystem);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // !ARC_STD_ENTITY_H_
|
||||||
3
src/std/entity.c
Normal file
3
src/std/entity.c
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#include "arc/std/entity.h"
|
||||||
|
|
||||||
|
|
||||||
5
tests/res/std/config/first.chemical
Normal file
5
tests/res/std/config/first.chemical
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
group test {
|
||||||
|
int32 test = 5;
|
||||||
|
|
||||||
|
int32 test1 = -7;
|
||||||
|
}
|
||||||
108
tests/std/config.c
Normal file
108
tests/std/config.c
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
#include "../test.h"
|
||||||
|
#include "arc/std/errno.h"
|
||||||
|
#include "arc/std/config.h"
|
||||||
|
#include "arc/std/parser.h"
|
||||||
|
#include "arc/std/parser/helpers.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static const char *testType = "int32";
|
||||||
|
|
||||||
|
void TEST_configType_CopyInt32Fn(void **type, ARC_ParserTagToken *parsedData, ARC_Config *config){
|
||||||
|
//go into the <numberSign> tag
|
||||||
|
ARC_ParserTagToken *childTagToken = (ARC_ParserTagToken *)ARC_Vector_Get(parsedData->tagTokens, 0);
|
||||||
|
if(childTagToken->id != ARC_CONFIG_NUMBER_SIGN){
|
||||||
|
arc_errno = ARC_ERRNO_DATA;
|
||||||
|
ARC_DEBUG_LOG_ERROR("TEST_configType_CopyInt32Fn(type, parsedData, config), parsed data was not a <numberSign>");
|
||||||
|
*type = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if the first tag is a minus sign and create a string starting with that if it is
|
||||||
|
childTagToken = (ARC_ParserTagToken *)ARC_Vector_Get(childTagToken->tagTokens, 0);
|
||||||
|
ARC_String *int32String;
|
||||||
|
ARC_String_Create(&int32String, NULL, 0);
|
||||||
|
if(childTagToken->id == ARC_CONFIG_MINUS){
|
||||||
|
ARC_String_AppendCStringWithStrlen(&int32String, "-");
|
||||||
|
}
|
||||||
|
|
||||||
|
ARC_ParserData_HelperRecurseStringAdd(&int32String, parsedData);
|
||||||
|
|
||||||
|
//set the max character size 2,147,483,647 (10 characters) or -2,147,483,648 (11 characters)
|
||||||
|
uint32_t maxInt32Size = 10;
|
||||||
|
if(int32String->data[0] == '-'){
|
||||||
|
maxInt32Size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if the string is bigger than the possible size return NULL and error
|
||||||
|
if(int32String->length > maxInt32Size){
|
||||||
|
arc_errno = ARC_ERRNO_DATA;
|
||||||
|
ARC_DEBUG_LOG_ERROR_WITH_VARIABLES("TEST_configType_CopyInt32Fn(type, parsedData, config), size \"%s\" was bigger or smaller than the max 2,147,483,647 or min -2,147,483,648", int32String->data);
|
||||||
|
*type = NULL;
|
||||||
|
ARC_String_Destroy(int32String);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(int32String->length == maxInt32Size){
|
||||||
|
char maxint32CStr[10] = "2147483647";
|
||||||
|
|
||||||
|
//offset starting index and last number if there is a negative
|
||||||
|
uint8_t stringIndex = 0;
|
||||||
|
if(int32String->data[0] == '-'){
|
||||||
|
stringIndex++;
|
||||||
|
maxint32CStr[9]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint8_t index = 0; index < 10; index++, stringIndex++){
|
||||||
|
if(int32String->data[stringIndex] > maxint32CStr[index]){
|
||||||
|
arc_errno = ARC_ERRNO_DATA;
|
||||||
|
ARC_DEBUG_LOG_ERROR_WITH_VARIABLES("TEST_configType_CopyInt32Fn(type, parsedData, config), size \"%s\" was bigger or smaller than the max 2,147,483,647 or min -2,147,483,648", int32String->data);
|
||||||
|
*type = NULL;
|
||||||
|
ARC_String_Destroy(int32String);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//copy the int32_t
|
||||||
|
*type = malloc(sizeof(int32_t));
|
||||||
|
*(int32_t *)(*type) = (int32_t)ARC_String_ToInt64_t(int32String);
|
||||||
|
|
||||||
|
//cleanup
|
||||||
|
ARC_String_Destroy(int32String);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TEST_configType_DestroyInt32Fn(void *type){
|
||||||
|
free((int32_t *)type);
|
||||||
|
}
|
||||||
|
|
||||||
|
ARC_TEST(config_BasicTest){
|
||||||
|
ARC_Config *config;
|
||||||
|
ARC_Config_Create(&config);
|
||||||
|
|
||||||
|
ARC_CHECK(arc_errno == 0);
|
||||||
|
|
||||||
|
ARC_ConfigType int32Type = {
|
||||||
|
TEST_configType_CopyInt32Fn,
|
||||||
|
TEST_configType_DestroyInt32Fn
|
||||||
|
};
|
||||||
|
ARC_Config_RegisterTypeWithCStr(config, testType, int32Type);
|
||||||
|
|
||||||
|
char *tempCString = "tests/res/std/config/first.chemical";
|
||||||
|
ARC_String *tempString;
|
||||||
|
ARC_String_CreateWithStrlen(&tempString, tempCString);
|
||||||
|
ARC_Config_LoadFromFile(config, tempString);
|
||||||
|
|
||||||
|
int32_t testVal = *(int32_t *)ARC_Config_GetWithCStr(config, "test::test");
|
||||||
|
ARC_CHECK(testVal == 5);
|
||||||
|
testVal = *(int32_t *)ARC_Config_GetWithCStr(config, "test::test1");
|
||||||
|
ARC_CHECK(testVal == -7);
|
||||||
|
|
||||||
|
ARC_Config_UnloadFromFile(config, tempString);
|
||||||
|
|
||||||
|
void *nullVal = ARC_Config_GetWithCStr(config, "test::test");
|
||||||
|
ARC_CHECK(nullVal == NULL);
|
||||||
|
|
||||||
|
//cleanup
|
||||||
|
ARC_String_Destroy(tempString);
|
||||||
|
ARC_Config_Destroy(config);
|
||||||
|
}
|
||||||
5
tests/std/entity.c
Normal file
5
tests/std/entity.c
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#include "../test.h"
|
||||||
|
#include "arc/std/entity.h"
|
||||||
|
|
||||||
|
ARC_TEST(Entity_Init){
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue