chore: figure out how to compile everything with C

This commit is contained in:
Jef Roosens 2022-11-19 23:53:42 +01:00
parent 3e40eeff2d
commit 32ff120600
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
8 changed files with 29 additions and 2 deletions

View file

@ -1,43 +0,0 @@
#include "dynarray.h"
struct dyn_array {
char **array;
size_t size;
size_t capacity;
};
DynArray *dynarray_init(size_t initial_capacity) {
DynArray *da = malloc(sizeof(DynArray));
da->size = 0;
da->capacity = initial_capacity;
return da;
}
void dynarray_add(DynArray *da, const char *s) {
// An empty dynarray does not have an allocated internal array yet
if (da->size == 0) {
da->array = malloc(sizeof(char*) * da->capacity);
}
// Double array size if it's full
else if (da->size == da->capacity) {
da->array = realloc(da->array, da->capacity * 2);
da->capacity *= 2;
}
da->array[da->size] = strdup(s);
da->size++;
}
void dynarray_free(DynArray **ptp) {
DynArray *da = *ptp;
for (size_t i = 0; i < da->size; i++) {
free(da->array[i]);
}
free(da->array);
free(da);
*ptp = NULL;
}

View file

@ -1,14 +0,0 @@
#ifndef VIETER_DYNARRAY
#define VIETER_DYNARRAY
#include <stdlib.h>
#include <string.h>
typedef struct dyn_array DynArray;
DynArray *dynarray_init(size_t initial_capacity);
void dynarray_add(DynArray *da, const char * s);
char ** dynarray_get_array(DynArray *da);
void dynarray_free(DynArray **ptp);
#endif

View file

@ -9,7 +9,7 @@ static char *ignored_names[5] = {
};
static int ignored_words_len = sizeof(ignored_names) / sizeof(char *);
inline Pkg *package_init() {
Pkg *package_init() {
return calloc(sizeof(PkgInfo), 1);
}

13
src/package/package.c.v Normal file
View file

@ -0,0 +1,13 @@
module package
#flag -I @VMODROOT/c
// We need to specify *every* C file here. Otherwise, Vieter doesn't compile.
#flag @VMODROOT/c/package.o
#flag @VMODROOT/c/package_info.o
#include "package.h"
struct C.Pkg{}
fn C.package_read_archive(pkg_path &char) &C.pkg

3
src/package/v.mod Normal file
View file

@ -0,0 +1,3 @@
Module{
name: 'package'
}