75 lines
2.1 KiB
C
75 lines
2.1 KiB
C
/**
|
|
* privileged_keywords.c
|
|
*
|
|
* Post Scarcity Soctware Environment
|
|
*
|
|
* Keywords essential to the operation of the system. I'm not certain that
|
|
* there's any necessity to have privileged keywords, but as these are
|
|
* keywords that will be used exceedingly frequently, we might as well
|
|
* make them cheap to access.
|
|
*
|
|
* Copyright (c): 27 Apr 2026 Simon Brooke <simon@journeyman.cc>
|
|
* Licensed under GPL version 2.0, or, at your option, any later version.
|
|
*/
|
|
|
|
#include "environment/privileged_keywords.h"
|
|
|
|
#include "memory/node.h"
|
|
#include "memory/pointer.h"
|
|
|
|
#include "memory/pso.h"
|
|
#include "payloads/cons.h"
|
|
|
|
#include "ops/string_ops.h"
|
|
|
|
|
|
/**
|
|
* layer metadata for functions written in C
|
|
*/
|
|
struct pso_pointer privileged_keyword_bootstrap;
|
|
|
|
/**
|
|
* documentation metadate for functions and special forms (and possibly other
|
|
* things)
|
|
*/
|
|
struct pso_pointer privileged_keyword_documentation;
|
|
|
|
/**
|
|
* key for layer metadata for functions and special forms
|
|
*/
|
|
struct pso_pointer privileged_keyword_layer;
|
|
|
|
/**
|
|
* location metadata for exceptions (and possibly location in other contexts).
|
|
*/
|
|
struct pso_pointer privileged_keyword_location;
|
|
|
|
/**
|
|
* name metadata for compiled functions.
|
|
*/
|
|
struct pso_pointer privileged_keyword_name;
|
|
|
|
/**
|
|
* layer metadata for functions that users shouldn't be able to override.
|
|
*/
|
|
struct pso_pointer privileged_keyword_system;
|
|
|
|
/**
|
|
* layer metadata for functions written by users.
|
|
*/
|
|
struct pso_pointer privileged_keyword_user;
|
|
|
|
|
|
#define load_and_lock(var,val)(var = lock_object(c_string_to_lisp_keyword(frame_pointer, val)))
|
|
|
|
|
|
struct pso_pointer initialise_privileged_keywords( struct pso_pointer
|
|
frame_pointer ) {
|
|
load_and_lock( privileged_keyword_bootstrap, PK_BOOTSTRAP );
|
|
load_and_lock( privileged_keyword_documentation, PK_DOCUMENTATION );
|
|
load_and_lock( privileged_keyword_layer, PK_LAYER );
|
|
load_and_lock( privileged_keyword_location, PK_LOCATION );
|
|
load_and_lock( privileged_keyword_name, PK_NAME );
|
|
load_and_lock( privileged_keyword_system, PK_SYSTEM );
|
|
load_and_lock( privileged_keyword_user, PK_USER );
|
|
}
|