All pastes #792108 Raw Edit

pikhq+Gregor

public c v1 · immutable
·published 2007-11-21 04:33 UTC
rendered paste body
#include "psl_object.h"#include "error.h"extern psl_object psl_object_null = (psl_object){ 1, NULL, NULL, 0, (psl_member_node){"null", NULL, NULL, NULL}};psl_object *psl_object_new(char *name, psl_object *parent, size_t datalength, void *data){        psl_object *retval = malloc(sizeof(psl_object));        if(retval == NULL)                ERROR("Out of memory.\n");        *retval = (psl_object){ 1, parent, (psl_member_node){name, NULL, NULL, NULL}, datalength, data };        return retval;}psl_object *psl_get_member(char *name, psl_object *object){        if(!strcmp(name, "null")) {                psl_object *retval = malloc(sizeof(psl_object));                if(retval == NULL)                        ERROR("Out of memory.\n");                *retval = null;                retval->parent = object;                return retval;        } recurse:        int cmp = strcmp(name, object->members->name);        if(!cmp)                return object;        else if (cmp < 0) {                if (object->members->left) {                        object = object->members->left->o;                        goto recurse;                } else                        return NULL;        } else {                if (object->members->right) {                        object = object->members->right->o;                        goto recurse;                } else                        return NULL;        }}