<commit_before>#ifndef WBLISP_H
#define WBLISP_H

#include <setjmp.h>

extern int interactive;
extern jmp_buf repl_jmp;
extern int save_mode;
extern FILE *save_file;

enum {
	SYMBOL = 0,
	NUMBER,
	LIST,
	CONS,
	CLOSURE,
	BOOL
};

typedef struct env_ref {
	struct env* e;
	int i;
} env_ref_t;

typedef struct env {
	int count;
	int alloc;
	char **sym;
	void **ptr;
	struct env *father;
} env_t;

typedef struct list {
	char* head;
	int type;
	int val;
	int cc;
	int ca;
	env_t *closure;
	struct list **c;
} list_t;

extern env_t *global;<commit_msg>Annotate the header<commit_after>#ifndef WBLISP_H
#define WBLISP_H

#include <setjmp.h>

/* REPL stuff, see main.c */
extern int interactive;
extern jmp_buf repl_jmp;

/* REPL logging */
extern int save_mode;
extern FILE *save_file;

/*
 * Types of objects. used by field `type'
 * of `list_t'
 */
enum {
	SYMBOL = 0,
	NUMBER,
	LIST,
	CONS,
	CLOSURE,
	BOOL
};

/*
 * Structure returned by lookup()
 * routine in file environment.c
 *
 * Not sure why this isn't simply
 * replaced by the pointer e + i
 * aka &e[i]
 */
typedef struct env_ref {
	struct env* e;
	int i;
} env_ref_t;

/*
 * Environment data structure
 */
typedef struct env {
	int count;		/* number of symbols */
	int alloc;		/* allocated space for symbols */
	char **sym;		/* symbol names */
	void **ptr;		/* symbol bound-object pointers */
	struct env *father;	/* father environment */
} env_t;

/* 
 * The global environment 
 * (must be defined below env_t definition,
 * at least with my compiler ... 
 */
extern env_t *global;

/*
 * List data structure
 */
typedef struct list {
	char* head;		/* used for symbol names */
	int type;		/* type; see enum at top of file */
	int val;		/* used for bools (?) and ints */
	env_t *closure;		/* closure environment (for procedures) */

	int cc;			/* child count (for lists/conses) */
	int ca;			/* child allocation */
	struct list **c;	/* array of children */
} list_t;
{'fraction_non_alphanumeric': 0.12195121951219512, 'fraction_numerical': 0.0010378827192527244, 'mean_word_length': 3.246696035242291, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5954365', 'n_tokens_mistral': 744, 'n_tokens_neox': 704, 'n_words': 245}