class BaseObject
!!!291120.cpp!!!	setContext(inout n : BaseContext) : void
	context_ = n;
!!!291248.cpp!!!	getContext() : BaseContext
	//return (context_==NULL)?BaseContext::getDefault():context_;
	return context_;
!!!291376.cpp!!!	getContext() : BaseContext
	return (context_==NULL)?BaseContext::getDefault():context_;
	//return context_;
!!!291504.cpp!!!	setPartition(inout p : Iterative::IterativePartition) : void
	partition_=p;
!!!291632.cpp!!!	getPartition() : Iterative::IterativePartition
	if(partition_)
		return partition_;
	if(getContext()&&getContext()->is_partition())
		return getContext()->getPartition();
	return 0;
!!!291760.cpp!!!	prepareTask() : Iterative::IterativePartition
	Iterative::IterativePartition *p=NULL;
	sofa::core::objectmodel::Context *context=dynamic_cast<sofa::core::objectmodel::Context *>(this->getContext());
	if(this->getPartition())
	{
	        p=this->getPartition();
	}else
	if(context&&context->is_partition())
	{
		p=context->getPartition();
	}
  return p;
!!!292144.cpp!!!	parse(inout arg : BaseObjectDescription) : void
	std::vector< std::string > attributeList;
	arg->getAttributeList(attributeList);
	for (unsigned int i=0;i<attributeList.size();++i)
	{
		if (attributeList[i] == "src")
		{
			// Parse attribute 'src' for new MeshLoader architecture.
			const char* val = arg->getAttribute(attributeList[i]);
			std::string valueString(val);

			if(!val)
			{
				serr<<"ERROR: Missing argument for 'src' attribute in object: "<< this->getName() << sendl;
				break;
			}

			if (valueString[0] != '@')
			{
				serr<<"ERROR: 'src' attribute value should be a link using '@' in object "<< this->getName() << sendl;
				break;
			}

			BaseObject* obj = this;
			BaseObject* loader = NULL;

			std::size_t posAt = valueString.rfind('@');
			if (posAt == std::string::npos) posAt = 0;
			std::string objectName;

			objectName = valueString.substr(posAt+1);
			loader = getContext()->get<BaseObject>(objectName);

			std::map < std::string, BaseData*> dataLoaderMap;
			std::map < std::string, BaseData*>::iterator it_map;

			for (unsigned int j = 0; j<loader->m_fieldVec.size(); ++j)
			{
				dataLoaderMap.insert (std::pair<std::string, BaseData*> (loader->m_fieldVec[j].first, loader->m_fieldVec[j].second));
			}

			for (unsigned int j = 0; j<attributeList.size(); ++j)
			{
				it_map = dataLoaderMap.find (attributeList[j]);
				if (it_map != dataLoaderMap.end())
					dataLoaderMap.erase (it_map);
			}

			// -- Temporary patch, using exceptions. TODO: use a flag to set Data not to be automatically linked. --
			//{
			it_map = dataLoaderMap.find ("name");
			if (it_map != dataLoaderMap.end())
				dataLoaderMap.erase (it_map);

			it_map = dataLoaderMap.find ("type");
			if (it_map != dataLoaderMap.end())
				dataLoaderMap.erase (it_map);

			it_map = dataLoaderMap.find ("filename");
			if (it_map != dataLoaderMap.end())
				dataLoaderMap.erase (it_map);

			it_map = dataLoaderMap.find ("tags");
			if (it_map != dataLoaderMap.end())
				dataLoaderMap.erase (it_map);

			it_map = dataLoaderMap.find ("printLog");
			if (it_map != dataLoaderMap.end())
				dataLoaderMap.erase (it_map);

			it_map = dataLoaderMap.find ("listening");
			if (it_map != dataLoaderMap.end())
				dataLoaderMap.erase (it_map);
			//}


			for (it_map =dataLoaderMap.begin(); it_map != dataLoaderMap.end(); ++it_map)
			{
				BaseData* Data = obj->findField( (*it_map).first );
				if (Data != NULL)
				{
					std::string linkPath = valueString+"."+(*it_map).first;
					Data->setLinkPath(linkPath);
					Data->setParent( (*it_map).second);
				} 
			}
			continue;
		}


		std::vector< BaseData* > dataModif = findGlobalField(attributeList[i]);
		for (unsigned int d=0;d<dataModif.size();++d)
		{
			const char* val = arg->getAttribute(attributeList[i]);
			if (val)
			{
				std::string valueString(val);

				// test if data is a link and can be linked 
				if (valueString[0] == '@' && dataModif[d]->canBeLinked())
				{
					dataModif[d]->setLinkPath(valueString);
					std::size_t posPath = valueString.rfind('/');
					if (posPath == std::string::npos) posPath = 0;
					std::size_t posDot = valueString.rfind('.');
					std::string objectName;
					std::string dataName;

					BaseObject* obj = NULL;

					/* if '.' not found, try to find the data in the current object */
					if (posPath == 0 && posDot == std::string::npos)
					{
						obj = this;
						objectName = this->getName();
						dataName = valueString;
					}
					else
					{
						if (posDot == std::string::npos) // no data specified, look for one with the same name
						{
							objectName = valueString;
							dataName = attributeList[i];
						}
						else
						{
							objectName = valueString.substr(1,posDot-1);
							dataName = valueString.substr(posDot+1);
						}

						if (objectName[0] == '[')
						{
							if (objectName[objectName.size()-1] != ']')
							{
								serr<<"ERROR: Missing ']' in at the end of "<< objectName << sendl;
								continue;
							}

							objectName = objectName.substr(1, objectName.size()-2);

							if (objectName.empty())
							{
								serr<<"ERROR: Missing object level between [] in : " << val << sendl;
								continue;
							}

							int objectLevel = atoi(objectName.c_str());
							helper::vector<BaseObject*> objects;
							getContext()->get<BaseObject>(&objects, BaseContext::Local);

							helper::vector<BaseObject*>::iterator it;

							for(it = objects.begin(); it != objects.end(); ++it)
							{
								if ((*it) == this)
								{
									it += objectLevel;
									if ((*it) != NULL)
									{
										obj = (*it);
									}
									break;
								}
							}
						}
						else
						{
							obj = getContext()->get<BaseObject>(objectName);
						}

						if (obj == NULL)
						{
							serr<<"could not find object for option "<< attributeList[i] <<": " << objectName << sendl;
							continue;
						}
					}

					BaseData* parentData = obj->findField(dataName);

					if (parentData == NULL)
					{
						serr<<"could not find parent Data for option "<< attributeList[i] <<": " << val << sendl;
						continue;
					}

					/* set parent value to the child */
					if (!dataModif[d]->setParent(parentData))
					{
						serr<<"could not copy value from parent Data "<< valueString << ". Incompatible Data types" << sendl;
						continue;
					}
					else
						sout<<"Link from parent Data " << valueString << " (" << parentData->getValueTypeInfo()->name() << ") to Data " << attributeList[i] << "(" << dataModif[d]->getValueTypeInfo()->name() << ") OK" << sendl;
					/* children Data cannot be modified changing the parent Data value */
					dataModif[d]->setReadOnly(true);
					continue;
				}

				if( !(dataModif[d]->read( valueString ))) serr<<"could not read value for option "<< attributeList[i] <<": " << val << sendl;
			}
		}
	}
!!!292272.cpp!!!	init() : void
#ifdef SOFA_SMP
	if(!context_||!context_->is_partition())
		setPartition(new Iterative::IterativePartition());
#endif
!!!292528.cpp!!!	reinit() : void
 
	//sout<<"WARNING: the reinit method of the object "<<this->getName()<<" does nothing."<<sendl;
!!!293040.cpp!!!	handleEvent(inout  : Event) : void
	/*
	serr<<"BaseObject "<<getName()<<" ("<<getTypeName()<<") gets an event"<<sendl;
	if( KeypressedEvent* ke = dynamic_cast<KeypressedEvent*>( e ) )
	{
	serr<<"BaseObject "<<getName()<<" gets a key event: "<<ke->getKey()<<sendl;
	}
	*/
!!!293296.cpp!!!	handleTopologyChange(inout t : Topology) : void
	if (t == this->getContext()->getTopology())
	{
		//	sout << getClassName() << " " << getName() << " processing topology changes from " << t->getName() << sendl;
		handleTopologyChange();
	}
!!!293552.cpp!!!	getTime() : double
	return getContext()->getTime();
!!!293808.cpp!!!	setPrefetching(in b : bool) : void
	tls_prefetching = b;
!!!293936.cpp!!!	isPrefetching() : bool
	return tls_prefetching;
