class BaseObjectDescription
!!!295088.cpp!!!	BaseObjectDescription(in name : char = NULL, in type : char = NULL)
    if (name)
        attributes["name"] = name;
    if (type)
        attributes["type"] = type;
!!!295216.cpp!!!	~BaseObjectDescription()
//     for (std::map<std::string,std::string*>::iterator it = attributes.begin();
//         it != attributes.end(); ++it)
//     {
//         delete it->second;
//     }
    attributes.clear();
!!!295344.cpp!!!	getObject() : Base
    return NULL;
!!!295472.cpp!!!	getName() : std::string
    return std::string(getAttribute("name",""));
!!!295600.cpp!!!	getParent() : BaseObjectDescription
    return NULL;
!!!295728.cpp!!!	getBaseFile() : std::string
    return "";
!!!295984.cpp!!!	find(in nodeName : char, in absolute : bool = false) : BaseObjectDescription
    return NULL;
!!!296112.cpp!!!	findObject(in nodeName : char) : Base
    BaseObjectDescription* node = find(nodeName);
    if (node!=NULL)
    {
        //sout << "Found node "<<nodeName<<": "<<node->getName()<<sendl;
        Base* obj = node->getObject();
        BaseContext* ctx = dynamic_cast<BaseContext*>(obj);
        if (ctx != NULL)
        {
            //sout << "Node "<<nodeName<<" is a context, returning MechanicalState."<<sendl;
            obj = ctx->getMechanicalState();
        }
        return obj;
    }
    else
    {
      std::cerr << "Node "<<nodeName<<" NOT FOUND."<<std::endl;
        return NULL;
    }
!!!296240.cpp!!!	getAttribute(in attr : std::string, in defaultVal : char = NULL) : char
    AttributeMap::iterator it = attributes.find(attr);
    if (it == attributes.end())
        return defaultVal;
    else
        return it->second.c_str();
!!!296368.cpp!!!	removeAttribute(in attr : std::string) : bool
    return false;
!!!296496.cpp!!!	getFullName() : std::string
    BaseObjectDescription* parent = getParent();
    if (parent==NULL) return "/";
    std::string pname = parent->getFullName();
    pname += "/";
    pname += getName();
    return pname;
