Right, I have finally undone the issue #18 change. It was a nice idea,

but I have not made it work.
This commit is contained in:
Simon Brooke 2026-05-06 15:32:35 +01:00
parent c29a95b00d
commit 271b7da46a
10 changed files with 36 additions and 28 deletions

View file

@ -71,7 +71,7 @@ uint32_t calculate_hash( wint_t c, struct pso_pointer ptr ) {
* pointer to next is nil.
*
* NOTE THAT: in 0.1.X, we may allocate symbols and keywords as arrays of
* char32_t in larger pso classes, so this function may be only for strings
* wchar_t in larger pso classes, so this function may be only for strings
* (and thus simpler).
*/
struct pso_pointer make_string_like_thing( struct pso_pointer frame_pointer,
@ -142,7 +142,7 @@ char *lisp_string_to_c_string( struct pso_pointer s ) {
len++;
}
wchar_t *buffer = calloc( len, sizeof( char32_t ) );
wchar_t *buffer = calloc( len, sizeof( wchar_t ) );
int i = 0;
for ( struct pso_pointer c = s; !c_nilp( c ); c = c_cdr( c ) ) {
buffer[i++] =
@ -177,11 +177,11 @@ char *lisp_string_to_c_string( struct pso_pointer s ) {
* symbols, I am accepting only lower case characters and certain punctuation.
*/
struct pso_pointer c_string_to_lisp_symbol( struct pso_pointer frame_pointer,
char32_t *symbol ) {
wchar_t *symbol ) {
struct pso_pointer result = nil;
for ( int i = wcslen( symbol ) - 1; i >= 0; i-- ) {
char32_t c = symbol[i];
wchar_t c = symbol[i];
if ( symbol_char_p(c)) {
result = make_symbol( frame_pointer, c, result );
@ -196,11 +196,11 @@ struct pso_pointer c_string_to_lisp_symbol( struct pso_pointer frame_pointer,
* keywords, I am accepting only lower case characters and numbers.
*/
struct pso_pointer c_string_to_lisp_keyword( struct pso_pointer frame_pointer,
char32_t *symbol ) {
wchar_t *symbol ) {
struct pso_pointer result = nil;
for ( int i = wcslen( symbol ) - 1; i >= 0; i-- ) {
char32_t c = towlower( symbol[i] );
wchar_t c = towlower( symbol[i] );
if ( iswalnum( c ) || c == L'-' ) {
result = make_keyword( frame_pointer, c, result );