Changeset 11196

Show
Ignore:
Timestamp:
31.12.2008 12:29:35 (15 months ago)
Author:
maeder
Message:

allow to re-insert an existing edge, fails for contradicting edge ids

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/Proofs/EdgeUtils.hs

    r11039 r11196  
    113113    InsertNode n -> (insLNodeDG n g, InsertNode n) 
    114114    DeleteNode n -> (delLNodeDG n g, DeleteNode n) 
    115     InsertEdge e -> let (newEdge, ng) = insLEdgeDG e g in 
    116        (ng, InsertEdge newEdge) 
     115    InsertEdge e -> case tryToGetEdge e g of 
     116      Nothing -> let (newEdge, ng) = insLEdgeDG e g in 
     117        (ng, InsertEdge newEdge) 
     118      Just ne -> 
     119        if elem (getEdgeId e) [defaultEdgeId, getEdgeId ne] 
     120        then (g, InsertEdge ne) 
     121        else error "Proofs.EdgeUtils.updateDGOnly" 
    117122    DeleteEdge e -> (delLEdgeDG e g, DeleteEdge e) 
    118123    SetNodeLab _ n -> let (newG, o) = labelNodeDG n g in (newG, SetNodeLab o n) 
     
    226231  case tryToGetEdge edge dgraph of 
    227232    Nothing -> changeDGH dgraph $ InsertEdge edge 
    228     Just e@(src, tgt, label) -> let eid = getEdgeId edge in 
    229         if eid == defaultEdgeId 
     233    Just ne -> 
     234        if elem (getEdgeId edge) [defaultEdgeId, getEdgeId ne] 
    230235        then dgraph 
    231         else let nid = assert (dgl_id label == eid) eid 
    232                  newEdge = (src, tgt, 
    233                    label { dgl_id = nid }) 
    234              in changesDGH dgraph [DeleteEdge e, InsertEdge newEdge] 
     236        else error "Proofs.EdgeUtils.insertDGLEdge" 
    235237 
    236238{- | get the edge id out of a given edge -}