Move sys.c into lisp.c
This commit is contained in:
@@ -1,70 +0,0 @@
|
|||||||
/* constructor.c: Lisp constructors/destructors
|
|
||||||
* Created: 2025-08-20
|
|
||||||
* Author: Aryadev Chavali
|
|
||||||
* License: See end of file
|
|
||||||
* Commentary:
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <malloc.h>
|
|
||||||
|
|
||||||
#include <alisp/lisp.h>
|
|
||||||
#include <alisp/tag.h>
|
|
||||||
|
|
||||||
lisp_t *make_int(i64 i)
|
|
||||||
{
|
|
||||||
return tag_int(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
lisp_t *cons(sys_t *sys, lisp_t *car, lisp_t *cdr)
|
|
||||||
{
|
|
||||||
cons_t *cons = calloc(1, sizeof(*cons));
|
|
||||||
cons->car = car;
|
|
||||||
cons->cdr = cdr;
|
|
||||||
|
|
||||||
lisp_t *lcons = tag_cons(cons);
|
|
||||||
sys_register(sys, lcons);
|
|
||||||
return lcons;
|
|
||||||
}
|
|
||||||
|
|
||||||
lisp_t *make_vec(sys_t *sys, u64 capacity)
|
|
||||||
{
|
|
||||||
vec_t *vec = calloc(1, sizeof(*vec));
|
|
||||||
vec_init(vec, capacity);
|
|
||||||
lisp_t *ptr = tag_vec(vec);
|
|
||||||
sys_register(sys, ptr);
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
lisp_t *intern(sys_t *sys, sv_t sv)
|
|
||||||
{
|
|
||||||
char *str = sym_table_find(&sys->symtable, sv);
|
|
||||||
return tag_sym(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
lisp_t *car(lisp_t *lsp)
|
|
||||||
{
|
|
||||||
if (!IS_TAG(lsp, CONS))
|
|
||||||
return NIL;
|
|
||||||
else
|
|
||||||
return CAR(lsp);
|
|
||||||
}
|
|
||||||
|
|
||||||
lisp_t *cdr(lisp_t *lsp)
|
|
||||||
{
|
|
||||||
if (!IS_TAG(lsp, CONS))
|
|
||||||
return NIL;
|
|
||||||
else
|
|
||||||
return CDR(lsp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Copyright (C) 2025, 2026 Aryadev Chavali
|
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE. See the Unlicense for details.
|
|
||||||
|
|
||||||
* You may distribute and modify this code under the terms of the Unlicense,
|
|
||||||
* which you should have received a copy of along with this program. If not,
|
|
||||||
* please go to <https://unlicense.org/>.
|
|
||||||
|
|
||||||
*/
|
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
/* sys.c: System management
|
/* lisp.c: Lisp constructors/destructors
|
||||||
* Created: 2025-08-20
|
* Created: 2025-08-20
|
||||||
* Author: Aryadev Chavali
|
* Author: Aryadev Chavali
|
||||||
* License: See end of file
|
* License: See end of file
|
||||||
* Commentary:
|
* Commentary:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -64,6 +63,53 @@ void sys_cleanup(sys_t *sys)
|
|||||||
memset(sys, 0, sizeof(*sys));
|
memset(sys, 0, sizeof(*sys));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lisp_t *make_int(i64 i)
|
||||||
|
{
|
||||||
|
return tag_int(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
lisp_t *cons(sys_t *sys, lisp_t *car, lisp_t *cdr)
|
||||||
|
{
|
||||||
|
cons_t *cons = calloc(1, sizeof(*cons));
|
||||||
|
cons->car = car;
|
||||||
|
cons->cdr = cdr;
|
||||||
|
|
||||||
|
lisp_t *lcons = tag_cons(cons);
|
||||||
|
sys_register(sys, lcons);
|
||||||
|
return lcons;
|
||||||
|
}
|
||||||
|
|
||||||
|
lisp_t *make_vec(sys_t *sys, u64 capacity)
|
||||||
|
{
|
||||||
|
vec_t *vec = calloc(1, sizeof(*vec));
|
||||||
|
vec_init(vec, capacity);
|
||||||
|
lisp_t *ptr = tag_vec(vec);
|
||||||
|
sys_register(sys, ptr);
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
lisp_t *intern(sys_t *sys, sv_t sv)
|
||||||
|
{
|
||||||
|
char *str = sym_table_find(&sys->symtable, sv);
|
||||||
|
return tag_sym(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
lisp_t *car(lisp_t *lsp)
|
||||||
|
{
|
||||||
|
if (!IS_TAG(lsp, CONS))
|
||||||
|
return NIL;
|
||||||
|
else
|
||||||
|
return CAR(lsp);
|
||||||
|
}
|
||||||
|
|
||||||
|
lisp_t *cdr(lisp_t *lsp)
|
||||||
|
{
|
||||||
|
if (!IS_TAG(lsp, CONS))
|
||||||
|
return NIL;
|
||||||
|
else
|
||||||
|
return CDR(lsp);
|
||||||
|
}
|
||||||
|
|
||||||
/* Copyright (C) 2025, 2026 Aryadev Chavali
|
/* Copyright (C) 2025, 2026 Aryadev Chavali
|
||||||
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
Reference in New Issue
Block a user