/* * $Id: vstore_prof.c,v 1.1.1.1 2004/08/25 19:21:12 jan Exp $ * * Copyright (c) 2002 Jan Algermissen * See the file "COPYING" for copying permission. * */ #include #include #include #include #include "omnivore.h" /* #include "df.h" */ static int _handle_line(void *self,const char* line, int isFinal); static void _delete(void**); typedef struct VSTORE_PROFdata *T; struct VSTORE_PROFdata { /* processing model stuff */ Omnivore omnivore; TMTopicMap topicmap; TMProperty prop; }; static TMError _init(Omnivore omnivore,void*arg,void **data) { T self; struct TMList list; TM_NEW(tm_omnivore_get_pool(omnivore),self); *data = NULL; list.next = NULL; self->topicmap = tm_omnivore_get_topicmap(omnivore); self->omnivore = omnivore; if( ! self->topicmap ) { *data = self; return TM_OK; } if(arg) { self->prop = tm_get_property(tm_omnivore_get_tm(omnivore),(char*)arg); if(!self->prop) { tm_omnivore_set_error(omnivore, "unable to load property %s,%s\n", (char*)arg, tm_get_error(tm_omnivore_get_tm(omnivore)) ); return TM_FAIL; } } else { tm_omnivore_set_error(omnivore, "unable to initialize processing model: missing argument - please specify property name for vstore to test\n"); return TM_FAIL; } *data = self; return TM_OK; } void _delete(void **pself) { Omnivore omnivore; T self = *pself; omnivore = self->omnivore; if(self->topicmap) { /* tm_topicmap_end_transaction(self->topicmap); */ } TM_FREE(tm_omnivore_get_pool(omnivore),self); } int _handle_line(void *v,const char* line, int isFinal) { T self; TMError e; struct TMSubject sbj; void *value; self = (T)v; TMTRACE(TM_PARSE_TRACE,"LINE: _%s_\n" _ line); if(! self->topicmap) return(1); value = tm_value_new_from_string(tm_omnivore_get_pool(self->omnivore), self->prop->value_type,line); TM_INIT_SUBJECT_N1(&sbj,self->prop,value,0); e = tm_topicmap_add_topic(self->topicmap,&sbj,"last" ); assert(e == TM_OK); tm_value_delete(tm_omnivore_get_pool(self->omnivore),self->prop->value_type,&value); return (1); } struct TMProcModel vstore_prof = { "vstore_prof", /* name */ _init, _delete, NULL, /* root element name (for lookup) */ NULL, /* XML namespace */ NULL, /* XML public ID */ NULL, /* URL to DTD */ /* NULL, -- elements member of struct; unused */ NULL, /* XML ID attribute */ NULL, /* XML Ref attribute */ NULL, /* XML element subtrees to skip */ NULL, /* text elements */ NULL, /* XML start elem */ NULL, /* XML end elem */ _handle_line, /* line handler */ NULL /* no RDF Statement-Handler-Table */ };