I think read will now read integers and symbols, but it's untested.
Everything compiles.
This commit is contained in:
parent
cc8e96eda4
commit
9eb0d3c5a0
28 changed files with 594 additions and 293 deletions
|
|
@ -43,13 +43,20 @@ bool equal( struct pso_pointer a, struct pso_pointer b) {
|
|||
if ( eq( a, b)) {
|
||||
result = true;
|
||||
} else if ( get_tag_value(a) == get_tag_value(b)) {
|
||||
struct pso2 *oa = pointer_to_object(a);
|
||||
struct pso2 *ob = pointer_to_object(b);
|
||||
|
||||
switch ( get_tag_value(a)) {
|
||||
case CHARACTERTV :
|
||||
result = (oa->payload.character.character == ob->payload.character.character);
|
||||
break;
|
||||
case CONSTV :
|
||||
result = (equal( car(a), car(b)) && equal( cdr(a), cdr(b)));
|
||||
break;
|
||||
case INTEGERTV :
|
||||
result = (pointer_to_object(a)->payload.integer.value ==
|
||||
pointer_to_object(b)->payload.integer.value);
|
||||
result = (oa->payload.integer.value
|
||||
==
|
||||
ob->payload.integer.value);
|
||||
break;
|
||||
case KEYTV:
|
||||
case STRINGTV :
|
||||
|
|
|
|||
|
|
@ -25,6 +25,16 @@
|
|||
#include "ops/string_ops.h"
|
||||
#include "ops/truth.h"
|
||||
|
||||
/**
|
||||
* @brief reverse a sequence.
|
||||
*
|
||||
* A sequence is a list or a string-like-thing. A dotted pair is not a
|
||||
* sequence.
|
||||
*
|
||||
* @param sequence a pointer to a sequence.
|
||||
* @return a sequence like the `sequence` passed, but reversed; or `nil` if
|
||||
* the argument was not a sequence.
|
||||
*/
|
||||
struct pso_pointer reverse( struct pso_pointer sequence) {
|
||||
struct pso_pointer result = nil;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue