protected: // we can't just hold a vector of XContentRefs, as after initialization they're all empty // cause we load them only on access
std::vector<Documents::iterator>
m_aDocuments; // for an efficient index access
Documents m_aDocumentMap; // for an efficient name access
/** create an object from its persistent data within the configuration. To be overwritten by derived classes. @param_rNamethenametheobjecthaswithinthecontainer @returnthenewlycreatedobjectoranemptyreferenceifsomethingwentwrong
*/ virtual css::uno::Reference< css::ucb::XContent > createObject( const OUString& _rName) = 0;
/** get the object specified by the given name. If desired, the object will be read if not already done so.<BR> @param_rNametheobjectname @param_bReadIfNecessaryifsal_True,theobjectwillbecreatedifnecessary @returnthepropertysetinterfaceoftheobject.UsuallythereturnvalueisnotNULL,but ifso,thentheobjectcouldnotbereadfromtheconfiguration @throwsNoSuchElementExceptionifthereisnoobjectwiththegivenname. @seecreateObject
*/
css::uno::Reference< css::ucb::XContent >
implGetByName(const OUString& _rName, bool _bCreateIfNecessary);
/** quickly checks if there already is an element with a given name. No access to the configuration occurs, i.e. ifthereissuchanobjectwhichisnotalreadyloaded,itwon'tbeloadednow. @param_rNametheobjectnametocheck @returnsal_Trueiftherealreadyexistssuchanobject
*/ virtualbool checkExistence(const OUString& _rName);
/** append a new object to the container. No plausibility checks are done, e.g. if the object is non-NULL or ifthenameisalreadyusedbyanotherobjectoranythinglikethis.Thismethodisforderivedclasses whichmaysupportdifferentmethodstocreateand/orappendobjects,anddon'twanttodealwiththe internalstructuresofthisclass.<BR> Theoldcomponentwillnotbedisposed,thisisthecallersresponsibility,too. @param_rNamethenameofthenewobject @param_rxNewObjectthenewobject(notsurprising,isit?) @seecreateConfigKey @seeimplReplace @seeimplRemove
*/ void implAppend( const OUString& _rName, const css::uno::Reference< css::ucb::XContent >& _rxNewObject
);
/** remove all references to an object from the container. No plausibility checks are done, e.g. whether ornotthereexistsanobjectwiththegivenname.Thisistheresponsibilityofthecaller.<BR> Additionallythenodeforthegivenobjectwillberemovedfromtheregistry(includingallsubnodes).<BR> Theoldcomponentwillnotbedisposed,thisisthecallersresponsibility,too. @param_rNametheobjectsname @seeimplReplace @seeimplAppend
*/ void implRemove(const OUString& _rName);
/** remove an object in the container. No plausibility checks are done, e.g. whether ornotthereexistsanobjectwiththegivennameortheobjectisnon-NULL.Thisistheresponsibilityofthecaller.<BR> Additionallyallobject-relatedinformationwithintheregistrywillbedeleted.Thenewobjectconfignode, wherethecallermaywanttostorethenewobjectsinformation,isreturned.<BR> Theoldcomponentwillnotbedisposed,thisisthecallersresponsibility,too. @param_rNametheobjectsname @param_rxNewObjectthenewobject @param_rNewObjectNodetheconfigurationnodewherethenewobjectmaybestored @seeimplAppend @seeimplRemove
*/ void implReplace( const OUString& _rName, const css::uno::Reference< css::ucb::XContent >& _rxNewObject
);
/** approve that the object given may be inserted into the container. Shouldbeoverriddenbyderivedclasses, thedefaultimplementationjustcheckstheobjecttobenon-void.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.