static void writeProp(OFile *fp, VObject *o) { int isQuoted=0; if (NAME_OF(o)) { const struct PreDefProp *pi; VObjectIterator t; const char **fields_ = 0; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_BEGIN) != 0)) { writeVObject_(fp,o); return; } if (isAPropertyOf(o,VCGroupingProp)) writeGroup(fp,o); else appendsOFile(fp,NAME_OF(o)); if (pi) fields_ = pi->fields; initPropIterator(&t,o); while (moreIteration(&t)) { const char *s; VObject *eachProp = nextVObject(&t); s = NAME_OF(eachProp); if (strcasecmp(VCGroupingProp,s) && !inList(fields_,s)) writeAttrValue(fp,eachProp); if (strcasecmp(VCQPProp,s)==0 || strcasecmp(VCQuotedPrintableProp,s)==0) isQuoted=1; } if (fields_) { int i = 0, n = 0; const char** fields = fields_; /* output prop as fields */ appendcOFile(fp,':'); while (*fields) { VObject *tl = isAPropertyOf(o,*fields); i++; if (tl) n = i; fields++; } fields = fields_; for (i=0;i<n;i++) { writeValue(fp,isAPropertyOf(o,*fields),0,isQuoted); fields++; if (i<(n-1)) appendcOFile(fp,';'); } } } if (VALUE_TYPE(o)) { unsigned long size = 0; VObject *p = isAPropertyOf(o,VCDataSizeProp); if (p) size = LONG_VALUE_OF(p); appendcOFile(fp,':'); writeValue(fp,o,size,isQuoted); } appendcOFile(fp,'\n'); }
static void printNameValue(FILE *fp,VObject *o, int level) { indent(fp,level); if (NAME_OF(o)) { fprintf(fp,"%s", NAME_OF(o)); } if (VALUE_TYPE(o)) { fputc('=',fp); printValue(fp,o, level); } fprintf(fp,"\n"); }
static void writeAttrValue(OFile *fp, VObject *o) { if (NAME_OF(o)) { struct PreDefProp *pi; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_INTERNAL) != 0)) return; appendcOFile(fp,';'); appendsOFile(fp,NAME_OF(o)); } else appendcOFile(fp,';'); if (VALUE_TYPE(o)) { appendcOFile(fp,'='); writeValue(fp,o,0); } }
static void writeGroup(OFile *fp, VObject *o) { char buf1[256]; char buf2[256]; strncpy(buf1,NAME_OF(o), 255); while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { strncpy(buf2,STRINGZ_VALUE_OF(o),255); strcat(buf2,"."); strncat(buf2,buf1,254-strlen(STRINGZ_VALUE_OF(o))); strcpy(buf1,buf2); } appendsOFile(fp,buf1); }
static void writeVObject_(OFile *fp, VObject *o) { if (NAME_OF(o)) { struct PreDefProp *pi; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_BEGIN) != 0)) { VObjectIterator t; const char *begin = NAME_OF(o); appendsOFile(fp,"BEGIN:"); appendsOFile(fp,begin); appendcOFile(fp,'\n'); initPropIterator(&t,o); while (moreIteration(&t)) { VObject *eachProp = nextVObject(&t); writeProp(fp, eachProp); } appendsOFile(fp,"END:"); appendsOFile(fp,begin); appendsOFile(fp,"\n\n"); } } }
static void writeGroup(OFile *fp, VObject *o) { char buf1[256]; char buf2[256]; strcpy(buf1,NAME_OF(o)); while ((o=isAPropertyOf(o,VCGroupingProp)) != 0) { strncpy(buf2,STRINGZ_VALUE_OF(o),sizeof(buf2)); buf2[sizeof(buf2)-1] = '\0'; strncat(buf2,".",sizeof(buf2)-strlen(buf2)-1); strncat(buf2,buf1,sizeof(buf2)-strlen(buf2)-1); strcpy(buf1,buf2); } appendsOFile(fp,buf1); }
DLLEXPORT(void) setVObjectName(VObject *o, const char* id) { NAME_OF(o) = id; }
DLLEXPORT(const char*) vObjectName(VObject *o) { return NAME_OF(o); }
static void writeProp(OFile *fp, VObject *o) { if (NAME_OF(o)) { struct PreDefProp *pi; VObjectIterator t; const char **fields_ = 0; pi = lookupPropInfo(NAME_OF(o)); if (pi && ((pi->flags & PD_BEGIN) != 0)) { writeVObject_(fp,o); return; } if (isAPropertyOf(o,VCGroupingProp)) writeGroup(fp,o); else appendsOFile(fp,NAME_OF(o)); if (pi) fields_ = pi->fields; initPropIterator(&t,o); while (moreIteration(&t)) { const char *s; VObject *eachProp = nextVObject(&t); s = NAME_OF(eachProp); if (qstricmp(VCGroupingProp,s) && !inList(fields_,s)) writeAttrValue(fp,eachProp); } if (fields_) { int i = 0, n = 0; const char** fields = fields_; /* output prop as fields */ bool printable = TRUE; while (*fields && printable) { VObject *t = isAPropertyOf(o,*fields); if (includesUnprintable(t,TRUE)) printable = FALSE; fields++; } fields = fields_; if (!printable) appendsOFileEncCs(fp); appendcOFile(fp,':'); while (*fields) { VObject *t = isAPropertyOf(o,*fields); i++; if (t) n = i; fields++; } fields = fields_; for (i=0;i<n;i++) { writeValue(fp,isAPropertyOf(o,*fields),0,TRUE); fields++; if (i<(n-1)) appendcOFile(fp,';'); } } } if (VALUE_TYPE(o)) { if ( includesUnprintable(o,FALSE) ) appendsOFileEncCs(fp); unsigned long size = 0; VObject *p = isAPropertyOf(o,VCDataSizeProp); if (p) size = LONG_VALUE_OF(p); appendcOFile(fp,':'); writeValue(fp,o,size,FALSE); } appendcOFile(fp,'\n'); }
void setVObjectName(VObject *o, const char* id) { NAME_OF(o) = id; }
const char* vObjectName(VObject *o) { return NAME_OF(o); }
string Ontology::registerEventForAgent( OroEventObserver& callback, const string& agent, EventType eventType, EventTriggeringType triggerType, const std::set<std::string>& pattern, const std::string& variable_to_bind){ vector<server_param_types> args; bool oneShot = false; string event_id; string eventTypeStr; string triggerTypeStr; switch (eventType){ //Painful, but no obvious way to workaround that... case FACT_CHECKING: eventTypeStr = NAME_OF(FACT_CHECKING); break; case NEW_INSTANCE: eventTypeStr = NAME_OF(NEW_INSTANCE); break; case NEW_CLASS_INSTANCE: eventTypeStr = NAME_OF(NEW_CLASS_INSTANCE); break; } switch (triggerType){ //Painful, but no obvious way to workaround that... case ON_TRUE: triggerTypeStr = NAME_OF(ON_TRUE); break; case ON_TRUE_ONE_SHOT: triggerTypeStr = NAME_OF(ON_TRUE_ONE_SHOT); oneShot = true; break; case ON_FALSE: triggerTypeStr = NAME_OF(ON_FALSE); break; case ON_FALSE_ONE_SHOT: triggerTypeStr = NAME_OF(ON_FALSE_ONE_SHOT); oneShot = true; break; case ON_TOGGLE: triggerTypeStr = NAME_OF(ON_TOGGLE); break; } if (agent != "") args.push_back(agent); args.push_back(eventTypeStr); args.push_back(triggerTypeStr); if (variable_to_bind != "") args.push_back(variable_to_bind); args.push_back(pattern); ServerResponse res; if (agent != "") res = _connector.execute("registerEventForAgent", args); else res = _connector.execute("registerEvent", args); if (res.status != ServerResponse::ok) { throw OntologyServerException("Couldn't register event: server threw a " + res.exception_msg + " (" + res.error_msg +")."); } try { event_id = get<string>(res.result); } catch (bad_get e) { cerr << "[EE] Serious error while registering an event! Please report it to [email protected]. " << e.what() << endl; } //Store the newly registered event in the list of event observers std::map<std::string, EventObserver>::iterator it; it = _eventObservers.find(event_id); if (it != _eventObservers.end()) cerr << "[II] Event id already known. Re-registering an previous event. Fine." << endl; else { EventObserver e(&callback, oneShot); _eventObservers[event_id] = e; cerr << "[II] New event registered with id " << event_id << endl; } return event_id; }