|
typedefs assumed below (you can use them in your code): typedef FATableItr<L> ILeft; typedef FATableItr<R> IRight; typedef Lattice<L,R,LD> Lattice; typedef Lattice::LinkData LinkData; // _linkdata_type_ typedef Lattice::LeftID LeftID; typedef Lattice::RightID RightID; typedef Lattice::VectorLeftID VectorLeftID; // vector<LeftID> typedef Lattice::VectorRightID VectorRightID; // vector<RightID> typedef Lattice::LeftItr LeftItr; // VectorLeftID ::const_iterator typedef Lattice::RightItr RightItr; // VectorRightID::const_iterator typedef Lattice::Links Links; // vector<Link*> typedef Lattice::LinkItr LinkItr; // Links::const_iterator |
General information:
const VectorLeftID& ld = pLattice->vLeftID (); const VectorRightID& rd = pLattice->vRightID();
const Links& links = pLattice->links();
DABoolean empty = pLattice->isEmpty();
DABoolean b = pLattice->isLNodeMulti(); // Left objects may have many links. DABoolean b = pLattice->isRNodeMulti(); // Right objects may have many links. DABoolean b = pLattice->isLLinkMulti(); // Many left objects may share a link. DABoolean b = pLattice->isRLinkMulti(); // Many right objects may share a link.
string s = topologyText(); cout << topologyText();
Navigation:
const VectorLeftID* vLL = pLattice->vLeftGivenLeft (LeftID); const VectorLeftID* vLL = pLattice->vLeftGivenLeft (LeftItr); const VectorLeftID* vLL = pLattice->vLeftGivenLeft (FATableItr<L>); const VectorRightID* vRR = pLattice->vRightGivenRight(RightID); const VectorRightID* vRR = pLattice->vRightGivenRight(RightItr); const VectorRightID* vRR = pLattice->vRightGivenRight(FATableItr<R>); const VectorRightID* vRL = pLattice->vRightGivenLeft (LeftID); const VectorRightID* vRL = pLattice->vRightGivenLeft (LeftItr); const VectorRightID* vRL = pLattice->vRightGivenLeft (FATableItr<L>); const VectorLeftID* vLR = pLattice->vLeftGivenRight (RightID); const VectorLeftID* vLR = pLattice->vLeftGivenRight (RightItr); const VectorLeftID* vLR = pLattice->vLeftGivenRight (FATableItr<R>);
const LeftID* LL = pLattice->leftIDGivenLeft (LeftID); const LeftID* LL = pLattice->leftIDGivenLeft (LeftItr); const LeftID* LL = pLattice->leftIDGivenLeft (FATableItr<L>); const RightID* RR = pLattice->rightIDGivenRight(RightID); const RightID* RR = pLattice->rightIDGivenRight(RightItr); const RightID* RR = pLattice->rightIDGivenRight(FATableItr<R>); const RightID* RL = pLattice->rightIDGivenLeft (LeftID); const RightID* RL = pLattice->rightIDGivenLeft (LeftItr); const RightID* RL = pLattice->rightIDGivenLeft (FATableItr<L>); const LeftID* LR = pLattice->leftIDGivenRight (RightID); const LeftID* LR = pLattice->leftIDGivenRight (RightItr); const LeftID* LR = pLattice->leftIDGivenRight (FATableItr<R>);
const VectorLeftID& vlid = pLattice->vLeftID(); for (LeftItr li = vlid.begin(); li != vlid.end(); ++li) { const VectorRightID& vrid = (*li)->vRightGivenLeft(); for (RightItr ri = vrid.begin(); ri != vrid.end(); ++ri) { value = RightTable.find(*ri)->value(); } }The above code works both for FATables and FAPtrTables. If you have an FATable, then this works also:
value = RightTable[*ri].value();
FAPtrTables don't support operator[].
const Links* pLinks = linksGivenLeft(LeftID); const Links* pLinks = linksGivenLeft(LeftItr); const Links* pLinks = linksGivenLeft(FATableItr<L>); const Links* pLinks = linksGivenRight(RightID); const Links* pLinks = linksGivenRight(RightItr); const Links* pLinks = linksGivenRight(FATableItr<R>);Loop over a node's links like this::
Links::const_iterator i = links.begin(); Links::const_iterator iEnd = links.end(); for (; i != iEnd; ++i) { Link* pLink = *i; ... }
Link* pLink = linkGivenLeft(LeftID); Link* pLink = linkGivenLeft(LeftItr); Link* pLink = linkGivenLeft(FATableItr<L>); Link* pLink = linkGivenRight(RightID); Link* pLink = linkGivenRight(RightItr); Link* pLink = linkGivenRight(FATableItr<R>);
void connectLinks (LeftID, RightID, Links&); void connectLinks (LeftItr, RightItr, Links&); void connectLinks (FATableItr<L>, FATableItr<R>, Links&); void shareLinksLeft (LeftID, LeftID, Links&); void shareLinksLeft (LeftItr, LeftItr, Links&); void shareLinksLeft (FATableItr<L>, FATableItr<L>, Links&); void shareLinksRight(RightID, RightID, Links&); void shareLinksRight(RightItr, RightItr, Links&); void shareLinksRight(FATableItr<R>, FATableItr<R>, Links&);
Link* connectLink (LeftID, RightID); Link* connectLink (LeftItr, RightItr); Link* connectLink (FATableItr<L>, FATableItr<R>); link* shareLinkLeft (LeftID, LeftID); Link* shareLinkLeft (LeftItr, LeftItr); Link* shareLinkLeft (FATableItr<L>, FATableItr<L>); Link* shareLinkRight(RightID, RightID); Link* shareLinkRight(RightItr, RightItr); Link* shareLinkRight(FATableItr<R>, FATableItr<R>);
LinkData& ld = pLink->linkData();ld is a reference to your link data class for this link. Do whatever you want with it. You have write access.
const VectorLeftID& vlid = pLink->vLeftID (); const VectorRightID& vrid = pLink->vRightID();
const LeftID* lid = pLink->leftID (); const RightID* rid = pLink->rightID();
email: Jon J. Thaler $Id: LatticeDataAccess.html,v
1.1 1999/07/18 23:00:34 jjt Exp $