- class MyNodeIterator:public SMDS_Iterator<const SMDS_MeshElement *>
- {
- SMDS_MeshNode *const* myNodes;
- int myIndex;
- public:
- MyNodeIterator(SMDS_MeshNode * const* nodes):myNodes(nodes),myIndex(0)
- {}
-
- bool more()
- {
- return myIndex<2;
- }
-
- const SMDS_MeshElement* next()
- {
- myIndex++;
- return myNodes[myIndex-1];
- }
- };
-
- switch(type)
- {
- case SMDSAbs_Edge:return SMDS_MeshElement::elementsIterator(SMDSAbs_Edge);
- case SMDSAbs_Node:return new MyNodeIterator(myNodes);
- default: return new SMDS_IteratorOfElements(this,type, nodesIterator());
- }
-
+ switch(type)
+ {
+ case SMDSAbs_Edge:
+ return SMDS_MeshElement::elementsIterator(SMDSAbs_Edge);
+ case SMDSAbs_Node:
+ return SMDS_ElemIteratorPtr(new SMDS_MeshEdge_MyNodeIterator(myNodes));
+ default:
+ return SMDS_ElemIteratorPtr
+ (new SMDS_IteratorOfElements
+ (this,type, SMDS_ElemIteratorPtr(new SMDS_MeshEdge_MyNodeIterator(myNodes))));
+ }