chore: figure out how to compile everything with C
This commit is contained in:
parent
3e40eeff2d
commit
32ff120600
8 changed files with 29 additions and 2 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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
13
src/package/package.c.v
Normal 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
3
src/package/v.mod
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Module{
|
||||
name: 'package'
|
||||
}
|
||||
Reference in a new issue