Remove types, while their implementation is not thought out.

This commit is contained in:
Danila Fedorin 2018-04-01 00:18:53 -07:00
parent e6801255fa
commit 60d22c2511
3 changed files with 1 additions and 69 deletions

View File

@ -8,7 +8,7 @@ project(libabacus)
add_compile_options(-pedantic -Wall) add_compile_options(-pedantic -Wall)
add_library(abacus STATIC src/lexer.c src/util.c src/table.c src/parser.c src/libabacus.c src/tree.c src/debug.c src/parsetype.c src/reserved.c src/trie.c src/refcount.c src/type.c src/ref_vec.c) add_library(abacus STATIC src/lexer.c src/util.c src/table.c src/parser.c src/libabacus.c src/tree.c src/debug.c src/parsetype.c src/reserved.c src/trie.c src/refcount.c src/ref_vec.c)
add_executable(libabacus src/main.c) add_executable(libabacus src/main.c)
add_subdirectory(external/liblex) add_subdirectory(external/liblex)

View File

@ -1,40 +0,0 @@
#ifndef LIBABACUS_TYPE_H
#define LIBABACUS_TYPE_H
#include "vec.h"
#include "result.h"
#include "refcount.h"
#include "parsetype.h"
#include "table.h"
/**
* A type in libabacus.
*/
struct libab_type_s {
/**
* The name of the type.
* This is also a unique identifier,
* used to compare types.
*/
char* name;
};
typedef struct libab_type_s libab_type;
/**
* Creates a new instance of a type, with no type parameters, and
* the given name.
* @param ref the reference to populate with the new type.
* @param name the name to use.
* @return the result of the creation function, which can fail.
*/
libab_result libab_type_create(libab_ref* ref, const char* name);
/**
* Constructs a new instance of a type from the given parsetype.
* @param ref the reference to populate with the new type.
* @param type the parse type to load.
* @param table the table to use for looking up types.
*/
libab_result libab_type_from_parsetype(libab_ref* ref, libab_parsetype* type, libab_table* table);
#endif

View File

@ -1,28 +0,0 @@
#include "type.h"
#include "util.h"
#include <stdlib.h>
void _libab_type_free(void* type) {
free(((libab_type*) type)->name);
}
libab_result libab_type_create(libab_ref* ref, const char* name) {
libab_type* type;
libab_result result = LIBAB_SUCCESS;
if((type = malloc(sizeof(*type)))) {
result = libab_copy_string(&type->name, name);
} else {
result = LIBAB_MALLOC;
}
if(result == LIBAB_SUCCESS) {
result = libab_ref_new(ref, type, _libab_type_free);
if(result != LIBAB_SUCCESS) free(type->name);
}
if(result != LIBAB_SUCCESS) {
free(type);
}
return result;
}