gv.3go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. .TH gv 3go "06 December 2024"
  2. .SH NAME
  3. gv_go - graph manipulation in go
  4. .SH SYNOPSIS
  5. .SH USAGE
  6. .SH INTRODUCTION
  7. .B gv_go
  8. is a dynamically loaded extension for
  9. .B go
  10. that provides access to the graph facilities of
  11. .B graphviz.
  12. .SH COMMANDS
  13. .TP
  14. \fBNew graphs\fR
  15. .br
  16. .TP
  17. New empty graph
  18. .br
  19. \fIgraph_handle\fR \fBgv.graph\fR \fI(name);\fR
  20. .br
  21. \fIgraph_handle\fR \fBgv.digraph\fR \fI(name);\fR
  22. .br
  23. \fIgraph_handle\fR \fBgv.strictgraph\fR \fI(name);\fR
  24. .br
  25. \fIgraph_handle\fR \fBgv.strictdigraph\fR \fI(name);\fR
  26. .br
  27. .TP
  28. New graph from a dot-syntax string or file
  29. .br
  30. \fIgraph_handle\fR \fBgv.readstring\fR \fI(string);\fR
  31. .br
  32. \fIgraph_handle\fR \fBgv.read\fR \fI(string filename);\fR
  33. .br
  34. \fIgraph_handle\fR \fBgv.read\fR \fI(channel);\fR
  35. .br
  36. .TP
  37. Add new subgraph to existing graph
  38. .br
  39. \fIgraph_handle\fR \fBgv.graph\fR \fI(graph_handle, name);\fR
  40. .br
  41. .TP
  42. \fBNew nodes\fR
  43. .br
  44. .TP
  45. Add new node to existing graph
  46. .br
  47. \fInode_handle\fR \fBgv.node\fR \fI(graph_handle, name);\fR
  48. .br
  49. .TP
  50. \fBNew edges\fR
  51. .br
  52. .TP
  53. Add new edge between existing nodes
  54. .br
  55. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_node_handle, head_node_handle);\fR
  56. .br
  57. .TP
  58. Add a new edge between an existing tail node, and a named head node which will be induced in the graph if it doesn't already exist
  59. .br
  60. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_node_handle, head_name);\fR
  61. .br
  62. .TP
  63. Add a new edge between an existing head node, and a named tail node which will be induced in the graph if it doesn't already exist
  64. .br
  65. \fIedge_handle\fR \fBgv.edge\fR \fI(tail_name, head_node_handle);\fR
  66. .br
  67. .TP
  68. Add a new edge between named tail and head nodes which will be induced in the graph if they don't already exist
  69. .br
  70. \fIedge_handle\fR \fBgv.edge\fR \fI(graph_handle, tail_name, head_name);\fR
  71. .br
  72. .TP
  73. \fBSetting attribute values\fR
  74. .br
  75. .TP
  76. Set value of named attribute of graph/node/edge - creating attribute if necessary
  77. .br
  78. \fIstring\fR \fBgv.setv\fR \fI(graph_handle, attr_name, attr_value);\fR
  79. .br
  80. \fIstring\fR \fBgv.setv\fR \fI(node_handle, attr_name, attr_value);\fR
  81. .br
  82. \fIstring\fR \fBgv.setv\fR \fI(edge_handle, attr_name, attr_value);\fR
  83. .br
  84. .TP
  85. Set value of existing attribute of graph/node/edge (using attribute handle)
  86. .br
  87. \fIstring\fR \fBgv.setv\fR \fI(graph_handle, attr_handle, attr_value);\fR
  88. .br
  89. \fIstring\fR \fBgv.setv\fR \fI(node_handle, attr_handle, attr_value);\fR
  90. .br
  91. \fIstring\fR \fBgv.setv\fR \fI(edge_handle, attr_handle, attr_value);\fR
  92. .br
  93. .TP
  94. \fBGetting attribute values\fR
  95. .br
  96. .TP
  97. Get value of named attribute of graph/node/edge
  98. .br
  99. \fIstring\fR \fBgv.getv\fR \fI(graph_handle, attr_name);\fR
  100. .br
  101. \fIstring\fR \fBgv.getv\fR \fI(node_handle, attr_name);\fR
  102. .br
  103. \fIstring\fR \fBgv.getv\fR \fI(edge_handle, attr_name);\fR
  104. .br
  105. .TP
  106. Get value of attribute of graph/node/edge (using attribute handle)
  107. .br
  108. \fIstring\fR \fBgv.getv\fR \fI(graph_handle, attr_handle);\fR
  109. .br
  110. \fIstring\fR \fBgv.getv\fR \fI(node_handle, attr_handle);\fR
  111. .br
  112. \fIstring\fR \fBgv.getv\fR \fI(edge_handle, attr_handle);\fR
  113. .br
  114. .TP
  115. \fBObtain names from handles\fR
  116. .br
  117. \fIstring\fR \fBgv.nameof\fR \fI(graph_handle);\fR
  118. .br
  119. \fIstring\fR \fBgv.nameof\fR \fI(node_handle);\fR
  120. .br
  121. \fIstring\fR \fBgv.nameof\fR \fI(attr_handle);\fR
  122. .br
  123. .TP
  124. \fBFind handles from names\fR
  125. .br
  126. \fIgraph_handle\fR \fBgv.findsubg\fR \fI(graph_handle, name);\fR
  127. .br
  128. \fInode_handle\fR \fBgv.findnode\fR \fI(graph_handle, name);\fR
  129. .br
  130. \fIedge_handle\fR \fBgv.findedge\fR \fI(tail_node_handle, head_node_handle);\fR
  131. .br
  132. \fIattribute_handle\fR \fBgv.findattr\fR \fI(graph_handle, name);\fR
  133. .br
  134. \fIattribute_handle\fR \fBgv.findattr\fR \fI(node_handle, name);\fR
  135. .br
  136. \fIattribute_handle\fR \fBgv.findattr\fR \fI(edge_handle, name);\fR
  137. .br
  138. .TP
  139. \fBMisc graph navigators returning handles\fR
  140. .br
  141. \fInode_handle\fR \fBgv.headof\fR \fI(edge_handle);\fR
  142. .br
  143. \fInode_handle\fR \fBgv.tailof\fR \fI(edge_handle);\fR
  144. .br
  145. \fIgraph_handle\fR \fBgv.graphof\fR \fI(graph_handle);\fR
  146. .br
  147. \fIgraph_handle\fR \fBgv.graphof\fR \fI(edge_handle);\fR
  148. .br
  149. \fIgraph_handle\fR \fBgv.graphof\fR \fI(node_handle);\fR
  150. .br
  151. \fIgraph_handle\fR \fBgv.rootof\fR \fI(graph_handle);\fR
  152. .br
  153. .TP
  154. \fBObtain handles of proto node/edge for setting default attribute values\fR
  155. .br
  156. \fInode_handle\fR \fBgv.protonode\fR \fI(graph_handle);\fR
  157. .br
  158. \fIedge_handle\fR \fBgv.protoedge\fR \fI(graph_handle);\fR
  159. .br
  160. .TP
  161. \fBIterators\fR
  162. .br
  163. .TP
  164. Iteration termination tests
  165. .br
  166. \fIbool\fR \fBgv.ok\fR \fI(graph_handle);\fR
  167. .br
  168. \fIbool\fR \fBgv.ok\fR \fI(node_handle);\fR
  169. .br
  170. \fIbool\fR \fBgv.ok\fR \fI(edge_handle);\fR
  171. .br
  172. \fIbool\fR \fBgv.ok\fR \fI(attr_handle);\fR
  173. .br
  174. .TP
  175. Iterate over subgraphs of a graph
  176. .br
  177. \fIgraph_handle\fR \fBgv.firstsubg\fR \fI(graph_handle);\fR
  178. .br
  179. \fIgraph_handle\fR \fBgv.nextsubg\fR \fI(graph_handle, subgraph_handle);\fR
  180. .br
  181. .TP
  182. Iterate over supergraphs of a graph (obscure and rarely useful)
  183. .br
  184. \fIgraph_handle\fR \fBgv.firstsupg\fR \fI(graph_handle);\fR
  185. .br
  186. \fIgraph_handle\fR \fBgv.nextsupg\fR \fI(graph_handle, subgraph_handle);\fR
  187. .br
  188. .TP
  189. Iterate over edges of a graph
  190. .br
  191. \fIedge_handle\fR \fBgv.firstedge\fR \fI(graph_handle);\fR
  192. .br
  193. \fIedge_handle\fR \fBgv.nextedge\fR \fI(graph_handle, edge_handle);\fR
  194. .br
  195. .TP
  196. Iterate over outedges of a graph
  197. .br
  198. \fIedge_handle\fR \fBgv.firstout\fR \fI(graph_handle);\fR
  199. .br
  200. \fIedge_handle\fR \fBgv.nextout\fR \fI(graph_handle, edge_handle);\fR
  201. .br
  202. .TP
  203. Iterate over edges of a node
  204. .br
  205. \fIedge_handle\fR \fBgv.firstedge\fR \fI(node_handle);\fR
  206. .br
  207. \fIedge_handle\fR \fBgv.nextedge\fR \fI(node_handle, edge_handle);\fR
  208. .br
  209. .TP
  210. Iterate over out-edges of a node
  211. .br
  212. \fIedge_handle\fR \fBgv.firstout\fR \fI(node_handle);\fR
  213. .br
  214. \fIedge_handle\fR \fBgv.nextout\fR \fI(node_handle, edge_handle);\fR
  215. .br
  216. .TP
  217. Iterate over head nodes reachable from out-edges of a node
  218. .br
  219. \fInode_handle\fR \fBgv.firsthead\fR \fI(node_handle);\fR
  220. .br
  221. \fInode_handle\fR \fBgv.nexthead\fR \fI(node_handle, head_node_handle);\fR
  222. .br
  223. .TP
  224. Iterate over in-edges of a graph
  225. .br
  226. \fIedge_handle\fR \fBgv.firstin\fR \fI(graph_handle);\fR
  227. .br
  228. \fIedge_handle\fR \fBgv.nextin\fR \fI(node_handle, edge_handle);\fR
  229. .br
  230. .TP
  231. Iterate over in-edges of a node
  232. .br
  233. \fIedge_handle\fR \fBgv.firstin\fR \fI(node_handle);\fR
  234. .br
  235. \fIedge_handle\fR \fBgv.nextin\fR \fI(graph_handle, edge_handle);\fR
  236. .br
  237. .TP
  238. Iterate over tail nodes reachable from in-edges of a node
  239. .br
  240. \fInode_handle\fR \fBgv.firsttail\fR \fI(node_handle);\fR
  241. .br
  242. \fInode_handle\fR \fBgv.nexttail\fR \fI(node_handle, tail_node_handle);\fR
  243. .br
  244. .TP
  245. Iterate over nodes of a graph
  246. .br
  247. \fInode_handle\fR \fBgv.firstnode\fR \fI(graph_handle);\fR
  248. .br
  249. \fInode_handle\fR \fBgv.nextnode\fR \fI(graph_handle, node_handle);\fR
  250. .br
  251. .TP
  252. Iterate over nodes of an edge
  253. .br
  254. \fInode_handle\fR \fBgv.firstnode\fR \fI(edge_handle);\fR
  255. .br
  256. \fInode_handle\fR \fBgv.nextnode\fR \fI(edge_handle, node_handle);\fR
  257. .br
  258. .TP
  259. Iterate over attributes of a graph
  260. .br
  261. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(graph_handle);\fR
  262. .br
  263. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(graph_handle, attr_handle);\fR
  264. .br
  265. .TP
  266. Iterate over attributes of an edge
  267. .br
  268. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(edge_handle);\fR
  269. .br
  270. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(edge_handle, attr_handle);\fR
  271. .br
  272. .TP
  273. Iterate over attributes of a node
  274. .br
  275. \fIattribute_handle\fR \fBgv.firstattr\fR \fI(node_handle);\fR
  276. .br
  277. \fIattribute_handle\fR \fBgv.nextattr\fR \fI(node_handle, attr_handle);\fR
  278. .br
  279. .TP
  280. \fBRemove graph objects\fR
  281. .br
  282. \fIbool\fR \fBgv.rm\fR \fI(graph_handle);\fR
  283. .br
  284. \fIbool\fR \fBgv.rm\fR \fI(node_handle);\fR
  285. .br
  286. \fIbool\fR \fBgv.rm\fR \fI(edge_handle);\fR
  287. .br
  288. .TP
  289. \fBLayout\fR
  290. .br
  291. .TP
  292. Annotate a graph with layout attributes and values using a specific layout engine
  293. .br
  294. \fIbool\fR \fBgv.layout\fR \fI(graph_handle, string engine);\fR
  295. .br
  296. .TP
  297. \fBRender\fR
  298. .br
  299. .TP
  300. Render a layout into attributes of the graph
  301. .br
  302. \fIbool\fR \fBgv.render\fR \fI(graph_handle);\fR
  303. .br
  304. .TP
  305. Render a layout to stdout
  306. .br
  307. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format);\fR
  308. .br
  309. .TP
  310. Render to an open file
  311. .br
  312. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format, channel fout);\fR
  313. .br
  314. .TP
  315. Render a layout to an unopened file by name
  316. .br
  317. \fIbool\fR \fBgv.render\fR \fI(graph_handle, string format, string filename);\fR
  318. .br
  319. .TP
  320. Render to a string result
  321. .br
  322. \fIstring\fR \fBgv.renderresult\fR \fI(graph_handle ing, string format);\fR
  323. .br
  324. \fBgv.renderresult\fR \fI(graph_handle, string format, string outdata);\fR
  325. .br
  326. .TP
  327. Render to an open channel
  328. .br
  329. \fIbool\fR \fBgv.renderchannel\fR \fI(graph_handle, string format, string channelname);\fR
  330. .br
  331. .TP
  332. Render a layout to a malloc'ed string, to be free'd by the caller
  333. .br
  334. .TP
  335. (deprecated - too easy to leak memory)
  336. .br
  337. .TP
  338. (still needed for "eval [gv::renderdata $G tk]" )
  339. .br
  340. \fIstring\fR \fBgv.renderdata\fR \fI(graph_handle, string format);\fR
  341. .br
  342. .TP
  343. Writing graph back to file
  344. .br
  345. \fIbool\fR \fBgv.write\fR \fI(graph_handle, string filename);\fR
  346. .br
  347. \fIbool\fR \fBgv.write\fR \fI(graph_handle, channel);\fR
  348. .br
  349. .TP
  350. Graph transformation tools
  351. .br
  352. \fIbool\fR \fBgv.tred\fR \fI(graph_handle);\fR
  353. .br
  354. .SH KEYWORDS
  355. graph, dot, neato, fdp, circo, twopi, go.