2023-03-25 21:38:00 +00:00
|
|
|
// schemeintegration.h: Function definitions for SilverMUD's Scheme integration.
|
|
|
|
// Barra Ó Catháin, 2023.
|
|
|
|
#include <libguile.h>
|
|
|
|
#include "schemeintegration.h"
|
|
|
|
|
2023-03-25 23:56:25 +00:00
|
|
|
SCM scheme_create_skill(SCM string, SCM skilllist)
|
|
|
|
{
|
|
|
|
size_t skillNameLength = 0;
|
|
|
|
char * skillName = scm_to_latin1_stringn(string, &skillNameLength);
|
|
|
|
createSkill(scm_to_pointer(skilllist), skillName, skillNameLength, false);
|
|
|
|
free(skillName);
|
|
|
|
return SCM_BOOL_T;
|
|
|
|
}
|
|
|
|
|
2023-03-25 21:38:00 +00:00
|
|
|
void * schemeHandler(void * parameters)
|
|
|
|
{
|
2023-03-25 23:56:25 +00:00
|
|
|
SchemeThreadParameters * schemeThreadParameters = parameters;
|
|
|
|
|
|
|
|
scm_init_guile();
|
|
|
|
scm_c_define_gsubr("create-skill", 2, 0, 0, &scheme_create_skill);
|
|
|
|
scm_c_define("skill-list", scm_from_pointer(schemeThreadParameters->skillList, NULL));
|
2023-03-25 21:38:00 +00:00
|
|
|
scm_shell(0, NULL);
|
|
|
|
}
|
2023-03-25 23:56:25 +00:00
|
|
|
|