/* Copyright (c) 1993 Stephen F. White */
#include <stdio.h>
#include <ctype.h>
#include "config.h"
#include "cool.h"
#include "proto.h"
#include "sys_proto.h"
void
verb_add(Object *o, int verb, int prep, int method)
{
Verbdef *v, *newv, *prev;
if (!o) {
return;
}
newv = MALLOC(Verbdef, 1);
newv->verb = verb;
newv->prep = prep;
newv->method = method;
for (v = o->verbs, prev = 0; v; prev = v, v = v->next) {
if (prep >= 0 && v->verb == verb) {
break;
}
}
if (prev) {
newv->next = prev->next;
prev->next = newv;
} else {
newv->next = o->verbs;
o->verbs = newv;
}
}
int
verb_rm(Object *o, const char *verb)
{
Verbdef *prev = 0, *v;
int i, verbno;
if (!o) {
return 0;
}
if (isdigit(verb[0])) {
verbno = atoi(verb);
}
for (v = o->verbs, i = 0; v; prev = v, v = v->next, i++) {
if (verb_match(sym_get(o, v->verb)->str, verb) || i == verbno) {
if (prev) {
prev->next = v->next;
} else {
o->verbs = v->next;
}
sym_free(o, v->verb);
if (v->prep >= 0) {
sym_free(o, v->prep);
}
sym_free(o, v->method);
FREE(v);
return 1;
}
}
return 0;
}