예제 #1
0
파일: dvbuild.c 프로젝트: kaostao/datadraw
/*--------------------------------------------------------------------------------------------------
  Create a new property.
--------------------------------------------------------------------------------------------------*/
dvProperty dvPropertyCreate(
    dvClass owningClass,
    dvUnion owningUnion,
    dvPropertyType type,
    utSym sym)
{
    dvProperty property = dvClassFindProperty(owningClass, sym);

    if(property != dvPropertyNull) {
        utWarning("Property %s already exists on class %s", utSymGetName(sym),
                  dvClassGetName(owningClass));
        if(dvPropertyGetClass(property) != owningClass ||
                dvPropertyGetUnion(property) != owningUnion ||
                dvPropertyGetType(property) != type) {
            utError("Property %s defined differently the second time", utSymGetName(sym));
        }
        return property;
    }
    property = dvPropertyAlloc();
    dvPropertySetType(property, type);
    dvPropertySetSym(property, sym);
    dvClassAppendProperty(owningClass, property);
    if(owningUnion != dvUnionNull) {
        dvUnionAppendProperty(owningUnion, property);
    }
    return property;
}
예제 #2
0
파일: parse.c 프로젝트: waywardgeek/parse42
// Print out an error message and exit.
void paExprError(
    paExpr expr,
    char *message,
    ...)
{
    char *buff;
    va_list ap;

    va_start(ap, message);
    buff = utVsprintf((char *)message, ap);
    va_end(ap);
    utError("Line %d: %s", paExprGetLineNum(expr), buff);
}