+SMDSAbs_ElementType SMDS_MeshEdge::GetType() const
+{
+ return SMDSAbs_Edge;
+}
+
+class SMDS_MeshEdge_MyNodeIterator:public SMDS_ElemIterator
+{
+ const SMDS_MeshNode *const* myNodes;
+ int myIndex;
+ public:
+ SMDS_MeshEdge_MyNodeIterator(const SMDS_MeshNode * const* nodes):
+ myNodes(nodes),myIndex(0) {}
+
+ bool more()
+ {
+ return myIndex<2;
+ }
+
+ const SMDS_MeshElement* next()
+ {
+ myIndex++;
+ return myNodes[myIndex-1];
+ }
+};
+
+SMDS_ElemIteratorPtr SMDS_MeshEdge::
+ elementsIterator(SMDSAbs_ElementType type) const
+{
+ 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))));