Beispiel #1
0
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');
}
Beispiel #2
0
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");
}
Beispiel #3
0
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);
	}
}
Beispiel #4
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);
}
Beispiel #5
0
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");
	    }
	}
}
Beispiel #6
0
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);
}
Beispiel #7
0
DLLEXPORT(void) setVObjectName(VObject *o, const char* id)
{
    NAME_OF(o) = id;
}
Beispiel #8
0
DLLEXPORT(const char*) vObjectName(VObject *o)
{
    return NAME_OF(o);
}
Beispiel #9
0
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');
}
Beispiel #10
0
void setVObjectName(VObject *o, const char* id)
{
    NAME_OF(o) = id;
}
Beispiel #11
0
const char* vObjectName(VObject *o)
{
    return NAME_OF(o);
}
Beispiel #12
0
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;

}