Ignore:
Timestamp:
03/22/16 01:19:47 (8 years ago)
Author:
Maciej Komosinski
Message:

Accessing const objects, short -> paInt, less critical messages when not necessary, accessing dictionaries with "->"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/param/param.cpp

    r464 r478  
    602602                        if (v.type == TObj)
    603603                        {
    604                                 logPrintf("ParamInterface", "set", LOG_WARN, "Getting integer value from object reference (%s)", v.getString().c_str());
     604                                logPrintf("ParamInterface", "set", LOG_ERROR, "Setting int '%s.%s' from object reference (%s)", getName(), id(i), v.getString().c_str());
    605605                                return 0;
    606606                        }
     
    614614                        if (v.type == TObj)
    615615                        {
    616                                 logPrintf("ParamInterface", "set", LOG_WARN, "Getting floating point value from object reference (%s)", v.getString().c_str());
     616                                logPrintf("ParamInterface", "set", LOG_ERROR, "Setting float '%s.%s' from object reference (%s)", getName(), id(i), v.getString().c_str());
    617617                                return 0;
    618618                        }
     
    621621                }
    622622        case 's': { SString t = v.getString(); return setString(i, t); }
    623         case 'o': return setObject(i, v.getObject());
     623        case 'o':
     624                if ((v.type!=TUnknown)&&(v.type!=TObj))
     625                        logPrintf("ParamInterface", "set", LOG_ERROR, "Setting object '%s.%s' from %s", getName(), id(i), v.typeAndValue().c_str());
     626                else
     627                        return setObject(i, v.getObject());
     628                break;
    624629        case 'x': return setExtValue(i, v);
    625630        default: logPrintf("ParamInterface", "set", LOG_ERROR, "'%s.%s' is not a field", getName(), id(i));
     
    645650                        if ((after == NULL) || (*after))
    646651                        {
    647                                 logPrintf("ParamInterface", "set", LOG_WARN, "serialization format mismatch in %s.%s", (getName() ? getName() : "<Unknown>"), id(i));
     652                                logPrintf("ParamInterface", "set", LOG_ERROR, "serialization format mismatch in %s.%s", (getName() ? getName() : "<Unknown>"), id(i));
    648653                                e.setEmpty();
    649654                        }
     
    956961        ParamEntry *pe = entry(i);
    957962        if (pe->flags&PARAM_READONLY) return PSET_RONLY;
     963        if (pe->flags&PARAM_OBJECTSET)
     964                {
     965                ExtObject o=getObject(i);
     966                Param tmp;
     967                ParamInterface* oif=o.getParamInterface(tmp);
     968                int ass;
     969                if (oif && ((ass=oif->findId("assign"))>=0))
     970                        {
     971                        ExtValue arg=x;
     972                        oif->call(ass,&arg,&v);
     973                        }
     974                else
     975                        logPrintf("SimpleAbstractParam", "setObject", LOG_ERROR,
     976                                  "'%s.%s' is PARAM_OBJECTSET but no 'assign()' in %s", getName(), pe->id, o.interfaceName());
     977                return PSET_CHANGED;
     978                }
    958979        ExtObject xcopy = x; //only needed for messageOnExceedRange(): retain original, requested value of x because it may be changed below
    959980        if (pe->fun2)
Note: See TracChangeset for help on using the changeset viewer.