module Graphics.Ubigraph ( Url , VertexId , EdgeId , defaultServer , clear , newVertex , newEdge , removeVertex , removeEdge , newVertexWithId , newEdgeWithId , setVertexAttribute , setEdgeAttribute ) where import Network.XmlRpc.Client type Url = String type VertexId = Int type EdgeId = Int defaultServer = "http://127.0.0.1:20738/RPC2" clear :: Url -> IO () clear url = void (remote url "ubigraph.clear") newVertex :: Url -> IO VertexId newVertex url = remote url "ubigraph.new_vertex" newEdge :: Url -> VertexId -> VertexId -> IO EdgeId newEdge url = remote url "ubigraph.new_edge" removeVertex :: Url -> VertexId -> IO () removeVertex url vid = void (remote url "ubigraph.remove_vertex" vid) removeEdge :: Url -> EdgeId -> IO () removeEdge url eid= void (remote url "ubigraph.remove_edge" eid) newVertexWithId :: Url -> VertexId -> IO Bool newVertexWithId url vid = zeroOnSuccess (remote url "ubigraph.new_vertex_w_id" vid) newEdgeWithId :: Url -> EdgeId -> VertexId -> VertexId -> IO Bool newEdgeWithId url eid x y = zeroOnSuccess (remote url "ubigraph.new_edge_w_id" eid x y) setVertexAttribute :: Url -> VertexId -> String -> String -> IO Bool setVertexAttribute url vid attr val = zeroOnSuccess (remote url "ubigraph.set_vertex_attribute" vid attr val) setEdgeAttribute :: Url -> VertexId -> String -> String -> IO Bool setEdgeAttribute url eid attr val = zeroOnSuccess (remote url "ubigraph.set_edge_attribute" eid attr val) void :: IO Int -> IO () void m = m >> return () zeroOnSuccess :: IO Int -> IO Bool zeroOnSuccess = fmap (==0)