pristine:8a79514f687e6fe980bbf2f733c40e6761b4f8331185dd8861850ba8792ce196 [Initial import Ivan.Miljenovic@gmail.com**20101117022250 Ignore-this: 8eec89c1d10612d6c822419c152766f7 Featuring initial layout of data structures and face-detection/dual generation functions ] hash: 0000007846-bd05e6bc106f8608cc1852d5d604d4796fca69e87c015fdc0b811db2ea827a40 [Switch to using data-clist rather than pointedlist Ivan.Miljenovic@gmail.com**20101117042340 Ignore-this: daaf9d7f9a7cadb8aa53b4e375ccb5d1 This requires applying some patches on data-clist that are not yet in an official release. ] hash: 0000002094-f6318d17cf2620d4e7308141c00424848909cb2bcbca3b4a19c4d674358c7ace [Derive Read Ivan.Miljenovic@gmail.com**20101117042630 Ignore-this: a87e2d5e337c0def1308f5c72316f77c One of the patches to data-clist was to add a Read instance ] hash: 0000000528-2a9c0a2eff365272bd95426616f4483f10686044fd1087da4387e32129568c34 [Define abstract Show and Read instances for Node, Edge and Face Ivan.Miljenovic@gmail.com**20101117054732 Ignore-this: 1aba2b1ab1c6c0e2af248dde294b4f29 They're meant to be abstract, so don't expose the constructor. ] hash: 0000002178-1d309f8e2aaac9ba4364779ef99f73c03080cd94d0f9b24a22ad4097478dcc17 [Initial version of Data.Graph.Planar is complete Ivan.Miljenovic@gmail.com**20101118034845 Ignore-this: e2953e05c564b81797d69316e00eb836 ] hash: 0000016567-da98fc899cd14d398bbe2aec78dfa5e3d3470d19570a0921cdbb6272aabf6377 [Cabalize Ivan.Miljenovic@gmail.com**20101118035326 Ignore-this: a4fa8cef4276d242c3e2cd5cf5cbff01 ] hash: 0000002423-3931f52415f9c42d01b2247ac50693a56f506bb4810d8e60f8fe153c438ac029 [Forgot to export a few things Ivan.Miljenovic@gmail.com**20101118041008 Ignore-this: 12fe6e603206e1de3529d1d9882d7640 ] hash: 0000000265-60b8acc79667aecfb50819d367422d7ab08c1ccec9f9dbaec77ff2ddd1c43c95 [Add pretty-printing functions Ivan.Miljenovic@gmail.com**20101119034908 Ignore-this: f7bc8d9b52f88016bcdd38ad837e6e9f ] hash: 0000001111-35d7e5be10c2315275db2f017fc1e6e2b21b5d458f017c5ed68d39e380bf4d45 [Add serialise and deserialise Ivan.Miljenovic@gmail.com**20101119042920 Ignore-this: 8050259e0cc005b38de037daf4db4058 Use them for Show and Read ] hash: 0000004162-e81861e43f250c0313213792006b4d8530c123d7757f9fb4005c5dc02d65c87e [Fix documentation Ivan.Miljenovic@gmail.com**20101124020221 Ignore-this: 8264007e8f5a0d5ca90a309e00b93076 ] hash: 0000000431-d2a1867aa507a7933eb972652a0b3c6928f417668ab6df10aa6afb431d026657 [Forgot to export quite a few things Ivan.Miljenovic@gmail.com**20101124020230 Ignore-this: 7848d44bdf9405c223b5d4b8fad0de99 ] hash: 0000000428-faad3d5653de697395326e5f26bfc824147a94ff2be305d8ce9e4179f245c02d [Fix newNodeID and newEdgeID to return init{Node,Edge} if empty Ivan.Miljenovic@gmail.com**20101125053028 Ignore-this: 3cc935d2607543672eb12c408e10aa78 ] hash: 0000000488-53c34bc971cd36b32a38ed8a8b356a0e36a9ec2c7764b9f716982848758dceab [Add mergeGraphs Ivan.Miljenovic@gmail.com**20101125053038 Ignore-this: 53f9fc612fba17d9a876ba494883f683 ] hash: 0000001610-52e7759eee623c6048b8476c5ce83dbe753af8e364e910cf1368cf8eae0c744d [Add contractEdge Ivan.Miljenovic@gmail.com**20101126034719 Ignore-this: 3e3bff85c469380c6c015e106041b612 ] hash: 0000002132-ce3780c5c1b829c5839877ead2047f7f66d568ab570da7a145223d90721303d8 [Add {adjust,set}{Node,Edge}Label Ivan.Miljenovic@gmail.com**20101129041249 Ignore-this: 135c667383aef5ceacf933367f409aa7 ] hash: 0000000890-f513760c089aa5c3dcd7d2455fc97c3c1b4aa4ea22201794a2efa1b00b5ef4aa [When adding an edge, update _prevEdge and _nextEdge in surrounding edges Ivan.Miljenovic@gmail.com**20110512043743 Ignore-this: 3a1bdb62bab26afd0223d1a592d9a95a ] hash: 0000000580-b5290f2fb634746bc5af78d9f4901594f938cd95a8ec3203625f23b03ab0d075 [Export getFace Ivan.Miljenovic@gmail.com**20110513041201 Ignore-this: ea9c766c9682b1d9105beec85f88cb1f ] hash: 0000000155-80e9ef2faa7f4fe46c4a3ec47fac3d49f21ce0c57b4b298e01ba320170880df9 [Fix up getFace Ivan.Miljenovic@gmail.com**20110513090444 Ignore-this: d83853c8171d814044d190e951523450 ] hash: 0000000458-4daed36ac588cbe0ddd7f1b0cd53aa8e65867bf85c274a1a7fbbed06d2142cec [Improve documentation of addEdge Ivan.Miljenovic@gmail.com**20110513090457 Ignore-this: 18e6d51002a73163dba0d7fb2c887681 ] hash: 0000000678-380eab0826dd51e56f2917a52e727febd78e4601c9456a0cf6d8de8fc3d019cd [Fix getting surrounding faces Ivan.Miljenovic@gmail.com**20110517055235 Ignore-this: d309e0e0c07f002d35888ad049889568 Get the face from the _inverse_ edge! ] hash: 0000000263-996dd67449256df452144493048d9c5736fae83747b5770428aaf79f5ccc05a5 [Use the new released data-clist-0.0.6 Ivan.Miljenovic@gmail.com**20110518033500 Ignore-this: 50bb41a82e5d588feb0d3ef00e6ab923 Need findRotateTo ] hash: 0000000352-068eaa279baa61710dc235d4353d2790072d79dc0c95cd296344abb940af0c08 [Add darcs repo location Ivan.Miljenovic@gmail.com**20110518033721 Ignore-this: f966b4bee7247f3b9d36ddeb0b76052 ] hash: 0000000245-dc18e22bf65472f193a4587d75d2123207ab946ab1d15aafffc19adfe28cd533 [Fix up toDual, using deserialise Ivan.Miljenovic@gmail.com**20110519033252 Ignore-this: 7550f52e7ef21cd7f1a0fb86b1d39ccd Previous version didn't work when two faces were adjacent over more than one edge, and trying to fix it was just making it more and more ugly. This solution has the downside of the Edge IDs not necessarily being [initEdge..], but since they're meant to be abstract anyway... ] hash: 0000003883-9ee487ddc385f6f36b6bb19ce9ad8ee5f176cd4f4b9061ce77c6271333ee477d [Improve documentation Ivan.Miljenovic@gmail.com**20110519061141 Ignore-this: 4dff075e8eb4b6508029929f79c7386b Iincluding a lot of ASCII-art diagrams ] hash: 0000011659-b2019123fcedf7536afeaeee145f21d2d867c1baf9be13e341f5509ac19061ee [Specify differences between plantri and planar-graph Ivan.Miljenovic@gmail.com**20110520045930 Ignore-this: 9ed20b46366dea2c3a00e855d032c93 ] hash: 0000000956-5be64fd9b49a76f8caa7e76599200ab0b94f8b6e4ea8b4a356209bc47ae31d51 [Improve documentation, using recommendations from Daniel Peebles Ivan.Miljenovic@gmail.com**20110520045958 Ignore-this: 1a7d3d7dc01c357717428fe4dc205f70 ] hash: 0000003247-1d5ae93e1031f1993cfc8991d37ffb1871071db4f609d3e059ac5cbdc21fcf10 [Fix up deleting nodes Ivan.Miljenovic@gmail.com**20110524055653 Ignore-this: e33b23dccd3c148abf8ac62b77d1f227 Previously didn't fix up the outgoing node list of the adjacent nodes ] hash: 0000001203-40db2810641b49d47de22e4c8c54ffcdbb5118eb8271b632a04cf0cbc529e212 [Don't use edgeLabel as a sample function name in comments; it already exists! Ivan.Miljenovic@gmail.com**20110524055818 Ignore-this: eedeacdf9f154681952ccd8e885193d4 ] hash: 0000000654-3e9853416e8b3cf7f5d9a3066ae360fffe964fbd82f29be53eb2521c3249634e [Clarify statement about plantri and nodes Ivan.Miljenovic@gmail.com**20110524062203 Ignore-this: 24e5eed223dc472f7087621e7a506cff ] hash: 0000000283-797420552daefbb3d70aee7b0a33b09c2a0d485642a1e1aacb2cf10ea78f8de9 [Clarify what happens with Anywhere for nodes that already have edges Ivan.Miljenovic@gmail.com**20110704103055 Ignore-this: b644b40851fd3be7dfabbcac2bb06c2b ] hash: 0000000414-7b46bbb0589f7ca9cac101fdc5c556cf737d6f8fe6a0e7301f24d9fc47f191a9 [Add hasNode and hasEdge Ivan.Miljenovic@gmail.com**20110704103127 Ignore-this: 4531ca1c4d19b1671198b336f438591e ] hash: 0000000535-8dda0b97213b3f157194d6cf5eb605dfa4ec06fd865a060459d6fe18b0ee05e8 [toDual now returns the Face -> Node function Ivan.Miljenovic@gmail.com**20110704103216 Ignore-this: 3ccd0a7e201331126407a38d3bc3f307 Rather hacky and should be improved ] hash: 0000001033-bca63e8ef05049241eaf77d01d8e708e97509d75ed9ea47582b0200b3a4a4a49 [Add unlabel Ivan.Miljenovic@gmail.com**20110708010945 Ignore-this: 1c139245be061453085b4b8d1fd5a186 ] hash: 0000000420-5cd1028a405ddb5d4d737ee53595be11bfe0e5099b4ccd65e632ea2cc7efac41 [Add mergeAllGraphs Ivan.Miljenovic@gmail.com**20110802055900 Ignore-this: e41512b0ccc970ea935adb8e0bb2c229 ] hash: 0000000874-89bd5d1ddba1015a0ad4f4dc90321c51f8041d2b0ade68b28ae9340c3bbe51c3 [Add some bangs to the data types Ivan.Miljenovic@gmail.com**20110802060450 Ignore-this: d1a3b90369d0a978d94a6042f67e3e5a ] hash: 0000002170-b3aaf7b8bc99ff6435cc0109131fafe5fba923b0b72a4617beb74a72c6776ff2 [Add NFData instances Ivan.Miljenovic@gmail.com**20110802060547 Ignore-this: 540b248272816be841a73dfeff6c7936 ] hash: 0000001218-03bf8d2ddacc03dfc95e06288bf60a8e65c8e85298f9e8054d44f07f264c23cb [Add deepseq to the build-depends list Ivan.Miljenovic@gmail.com**20110802060725 Ignore-this: c6d2c140b29479551aefbaf845c387c6 Also add some GHC options ] hash: 0000000509-610e89e87ed91e13a73bd29c47308bbfac0ded3d24473804272e7387d507f068 [Try switching to having each node only store the first edge rather than all edges Ivan.Miljenovic@gmail.com**20110802060921 Ignore-this: 56969d6005a0269894d16c6c668c20b1 Not sure if I'll keep this though. ] hash: 0000004428-fe65f5b32bd70eb24f4c5ae8e95f57fbf05cdf199333ebedb9dab84b7f36ca8d [Start IDs from 1, not 0 Ivan.Miljenovic@gmail.com**20110803075535 Ignore-this: 338b8b26d718d6d22cf6c9994e29784a The serialisation stuff needs it that way for starters ] hash: 0000000680-f61bfaf8c9b81b2d8b45c045a617e5fcc2aaad49f721a0cd639224b0e63376cf [Add compactGraph and use it for serialise Ivan.Miljenovic@gmail.com**20110803082820 Ignore-this: 1924d4244eb351fdcbfd22dad0f1c6a5 ] hash: 0000005239-42ef7795326b867aafccdb15bd76f364f9208964514ade512c6b83d3824febc1 [Add some more documentation Ivan.Miljenovic@gmail.com**20110803082836 Ignore-this: ff15a50dfe513aabcc1b83cb6a3dfdd4 ] hash: 0000000400-39f0e85417108d9edf46016588f01150a1905b5ed85d8c7ec16400fdb149e030 [After contracting an edge, graphs are no longer compact Ivan.Miljenovic@gmail.com**20110803102855 Ignore-this: bd2e393b9e7270d09e80abc4e86f6c31 ] hash: 0000000368-5969078e5d65240137179108469f58d07e759ec4739f9ec6483f3e4b9b7c72f2 [Add initial binary serialisation support Ivan.Miljenovic@gmail.com**20110804055353 Ignore-this: f7e200432d1d2568ac5f72b151c63778 So far only supports PlanarCode; ideally would also count the number of entries written to file. ] hash: 0000009026-277ad646bc8215ee58a27b74819bcafb188386ccaacb2206a2252256b1b1df80 [Add some INLINE pragmas Ivan.Miljenovic@gmail.com**20110804063947 Ignore-this: ef82d35a10858ad5bab31f2fb530ec05 with{Node,Edge}{,s} are just helper functions; they shouldn't be turning up in profile output, etc. ] hash: 0000000455-f9abcbd4e35a86ebcbc244a1b97ce4f8ed2182d73f04336d57fa9c08fe4d8dbe [Don't count edges twice when calculating order Ivan.Miljenovic@gmail.com**20110805072847 Ignore-this: 6d58cb663463dc03ba12b3d3e0ccbe42 Since we represent edges as two half-edges, just counting the number of half-edges is twice the number of actual edges. ] hash: 0000000353-a25c6cbdd309d6044430a8d056a7f2fba1e5843f154c1b5059d92b825ae88f3b [When reading in PlanarCode, build the graph starting with 1 rather than 0 Ivan.Miljenovic@gmail.com**20110807021846 Ignore-this: 58899602107daaafa0671e2dad442164 ] hash: 0000000288-5a080c42a328230195f3e698cc71d926da4199edbc6ffb56b3a72952e5042fa3 [Had the `div`2 accidentally for the order rather than the size :s Ivan Lazar Miljenovic **20110923070858 Ignore-this: 9f856352de24dc8d666d5ad05b6031d ] hash: 0000000364-f2bc93c52666bbf38b683675cc8d9fe51b4049c5d0217da5802d33fee80663ca [Make PlanarCode serialisation more efficient Ivan Lazar Miljenovic **20110923144719 Ignore-this: c72ac303056f9e678fe942ae3b1b5e8e * Switch to blaze-builder instead of binary (currently reading graphs in is currently disabled until a suitable parsing library is found) * the SerialisedGraph representation now stores the size/order of the graph: this is ignored in deserialise, but used in PlanarCode as getting the order from PlanarGraph is O(1), but from SerialisedGraph is O(n). ] hash: 0000007059-d2cc59689a475adb3708d43e7cfb6c4a31756f970073d1173b1c57274a5f91b5 [Fix dep on blaze-builder Ivan Lazar Miljenovic **20110924014749 Ignore-this: 8aa5e98719d12824f23f7e7eb9e9d12e ] hash: 0000000257-aadc8714e7ba12ae4968895ce218a477f97c4421061316b26d76f4c2531b4110 [Go back to using a circular list for outgoing edges Ivan Lazar Miljenovic **20110924100624 Ignore-this: 9f81b8af0cfb497ba99010e23a7b5c99 Improves efficiency, mainly from when doing the serialisation (as it doesn't have to end up re-creating the list). ] hash: 0000004494-cadaada759c76c3e6ed40ed8deca00f4268e3167161a8bbd1d7f6ba800c61635 [Ensure that edges are compacted after getting the dual Ivan Lazar Miljenovic **20110927064921 Ignore-this: 822d78c6a6fab25b0716cf2b717b7672 ] hash: 0000001928-d05e97f4e15558443477e3bebc20ddc069706e12646ba952cce2be33733bbd28 [Typo in comment: it's "face", not "fase". Ivan Lazar Miljenovic **20110927064945 Ignore-this: 5b7f88d5ec4d637bd50cc2bf5d06c40a ] hash: 0000000330-91cc4ae7e4a3e2fce3844f3de85a636899d80159379618ad7b6f4a597f8515af [Provide an error message when an incorrect edge is specified in {Before,After}Edge Ivan Lazar Miljenovic **20111020045134 Ignore-this: 688c0ba208c1b8b73fe81baa7e2c773 All other usages of fromJust should be safe, as long as the graph is consistent. ] hash: 0000001109-efa166f07ca0764c3dc88afced7886ba411d023faffa50e332a0abb7cfb02581 [Add begining of traversal implementation Ivan Lazar Miljenovic **20111020073005 Ignore-this: faf39e6652597a42d2057660a61fdb87 ] hash: 0000002574-8dddd652181550a16679c263d6967440f78b6561294c858344f16483c3c2b1e7 [Traversal now works for connected components Ivan Lazar Miljenovic **20111021035729 Ignore-this: 1530364d5de3de9f4e7e725403993a62 ] hash: 0000003835-7006f611d4ff12c6787be2d4136d2b392d0cb82ae9504ddad7812a933206c5e8 [Traversal done (I think) Ivan Lazar Miljenovic **20111021100756 Ignore-this: 86f32aec817d23f1e9d6a4aa87bf1202 ] hash: 0000011058-91e36078e5556a45d85c018808c97c7a0bbdd5afc3308d94f05f6c7965dd7df2 [Split out the list serialisation stuff from serialise Ivan Lazar Miljenovic **20111021104746 Ignore-this: 3b992950b861d331763c4bdd92bee5f9 Will be useful for canonical comparisons ] hash: 0000000633-cf608fde988da369dc9e57cbc237978730551f7384c903ae490e83847cc4187d [Will need to be able to map Node/Edge IDs with non-monotonic functions Ivan Lazar Miljenovic **20111022111341 Ignore-this: 39627037685c153d48cdd1e29483dff1 ] hash: 0000002068-21d84a24252872f988188f116a9f0368dce6d6efd66f597f53a814c432e681a2 [Make -Wall happy Ivan Lazar Miljenovic **20111022111354 Ignore-this: 5b023f4ea0a8988022bc2d417bc24f7d ] hash: 0000000403-0413d4b2dbd35312bc4dc35d7f7c85ee36ef98c371967b7e23aa46e389770aa9 [Re-do how serialisation, etc. works Ivan Lazar Miljenovic **20111101045002 Ignore-this: fe9c5d736a7d02fc8098840a02748a6b Two completely separate uses of SerialisedGraph: * Current dumping of graph for Show/Read and pretty-printing: this shouldn't do any compacting, etc. * An explicit BSF-based, 0-indexed traversal for serialisation Also, Rathern than 1-indexed Ints for IDs, use 0-indexed Words (and just adjust accordingly for PlanarCode) ] hash: 0000015447-99cc01d87fe8857e3ad83ba4c8c38df4adb1437d1a8d8bfa4d72c1de4098e532 [Documentation fix-ups Ivan Lazar Miljenovic **20111101045020 Ignore-this: 72385173d1586e8064d378e067fb3979 ] hash: 0000000559-285029a355223207503307e2d450ccbe6f3696c9503256152c2bde138d104fce [Was not properly traversing edges when doing the BFS serialisation Ivan Lazar Miljenovic **20111101064459 Ignore-this: c8df213aeec1c3aa165701d6e0798c24 ] hash: 0000000312-36f331586cc921caa2eb3d20c9b283a7fd97f3af8fe6d048607fb8c0ec6fe302 [Add functions to do canonical example testing Ivan Lazar Miljenovic **20111101130619 Ignore-this: 418b937afc44e8b1f8f3175d282813b4 ] hash: 0000003007-48983411218fa6b2e22c8b6608693cadbb9fd3cbc9320de3f74fef54bf13ea69 [Let the user specify which edge to start from when encoding a graph Ivan Lazar Miljenovic **20111101130640 Ignore-this: 62b151341609b3cffe71f4546bd732ce ] hash: 0000001016-bbce7a4b1fbedfa2697503f6676e55d811d78bb23958bffdde7bf640cb13b124 [Some clean-ups Ivan Lazar Miljenovic **20111101130648 Ignore-this: 1e262201236a0d16a753a9ac01d2191a ] hash: 0000000581-8740d032ca1b61692efad6a9ae4728cf53b1929d2e2dcf3827e4ad11b6dac745 [Use new version of data-clist Ivan Lazar Miljenovic **20120319103434 Ignore-this: 2f0da90646e1bd9dcc26a30b2ca9ca54 ] hash: 0000000264-99affff0693090f48e5b6964e92daac857e8a6afa5e63a8b45285445671c2ca9 [Expand range of deepseq Ivan Lazar Miljenovic **20120328102704 Ignore-this: 4e8c394315efd1b5398d9cc7a1e8e30b ] hash: 0000000255-c72022596dc741001319eee8ac14f0b13eb35f91a4f8eebcd812115038d1ea7f [Use attoparsec for parsing, and add in parsing support for PlanarCode Ivan Lazar Miljenovic **20120402055241 Ignore-this: 4418e3be0c0b42362151b8076a8de61b Also add AsciiCode ] hash: 0000010660-2c01856118060d4346e6eb920418a69852d91d8b6881343734cdbc3e0efe4f4b [Update writing graphs to file Ivan Lazar Miljenovic **20120402063724 Ignore-this: 78a3ca6fed03b6a72aed841dbaead446 ] hash: 0000000377-3456b70325586a1dd838aa1381e0a7e2532031c8a468737b63759bccc81aba60 [Make -Wall happy Ivan Lazar Miljenovic **20120402064326 Ignore-this: cb5d2c058ee34cb234b71cd5a18c19a6 ] hash: 0000000455-86ab767cc955209e8fb4e2481f7ab8469e9b5facf146a2437a6293468ac8d526 [Update writing and reading encoded graphs Ivan Lazar Miljenovic **20120403063622 Ignore-this: 38b2ccc54caed0fecb6f91b62b99eea7 * Use lazy bytestrings for writing; little or no efficiency drop, and it avoids potential errors for large encodings. * Stay with using B.appendFile; the performance gain from mconcat'ing and writing them all in one go with no counter is minimal. * When reading encoded graphs, only minimal error checking is done. ] hash: 0000004463-497675bf4fd2dc579d1f899a14afad2b74c423392789c24f3dbbc6fcaa1c0ff9 [Remove old commented out code Ivan Lazar Miljenovic **20120404044624 Ignore-this: dccdb9652eb90d8a9c05dba234c66906 ] hash: 0000000224-c38b916d57568b96536972d45c6f758c2414d37f405325555ecd2818240b4cc0 [Expand differences documentation a bit more Ivan Lazar Miljenovic **20120404111244 Ignore-this: 52453c29d06e0656a5775e7d3d0fa583 ] hash: 0000000556-9d9bf2ee382cc6689f5fcb2b177a6f086e71385bc0d83945cf8c2de0acb0fb0e [Satisfy hlint Ivan Lazar Miljenovic **20120404111254 Ignore-this: c2d2a7057b8ef333da17100aba3a105e ] hash: 0000000273-d282087170642b06df99410f6b912815d6b6b6da3caee667d277de21347e5f77 [Remove more old commented-out code Ivan Lazar Miljenovic **20120404111327 Ignore-this: 904c13f7931f86bec56b144a56525d45 ] hash: 0000000401-abce84cd3d388b834e8728039a2f413437bbc290325b5a763f27bf1dd4630508 [Make PlanarCode and AsciiCode just use () rather than any Monoid Ivan Lazar Miljenovic **20120404111417 Ignore-this: cf262958318e5afd99f378cf6e5ce181 Also actually export the constructors... ] hash: 0000002959-a24b73af4ae20a0a31940d0aed320faf3b89ec17ebabe30763a6848cdc09a77d [Export anyMissing Ivan Lazar Miljenovic **20120404112212 Ignore-this: 507203c7b1c2504a0b2e299c4e92e128 ] hash: 0000000186-1ad0e0e26d26aacd5da919bb69246381cc45969a5c03bfd4128a03151fdcbcf4 [State that the transformation functions are partial Ivan Lazar Miljenovic **20120404235918 Ignore-this: 4e913536a9c2d7d6e35ed0bf76f615f0 ] hash: 0000000332-15d0c09a272298265def5488fe029ba71b6cacd64af18d1da6a07bfd1c799387 [Inline get*Info Ivan Lazar Miljenovic **20120405000838 Ignore-this: 636d2b1b2770ac572f0aaafc6255502e ] hash: 0000000255-d745fa65c5e825cadf82c00ebfb02dfab250f2f4e65e94e1954a0ad5cc658245 [Remove Enum and Bounded instances for Node, Edge and Face Ivan Lazar Miljenovic **20120405003507 Ignore-this: 7d25a9660a76e669b35f7f93adc7266f Don't let users create/manipulate them themselves. ] hash: 0000001869-909d2096f42c97e901f18c3f3133344a19cc5a5f1a1a4b4be8c1b94021c1f3f2 [Note the invariant used throughout. Ivan Lazar Miljenovic **20120405073118 Ignore-this: 17ecd26bb7d2ccc67e9c1d58d09fb797 It would be nice to enforce this somehow, but probably not practical. ] hash: 0000000442-5d171a836bdbc77d26ffd0a598177ff9e255fa9d61e6a828f1a8367ddc606288 [Be more specific about returning edges vs half-edges Ivan Lazar Miljenovic **20120405073630 Ignore-this: a7e6714910dc7e5c2e29785ed903fcf8 ] hash: 0000005217-9756a1fae791e73b56380e3e1916a29419c702e5f9c32c4659d7c413fee4fea4 [Note the "simplistic" definition of order Ivan Lazar Miljenovic **20120405073641 Ignore-this: 7f59146407cbf753e7ef66d317c4d565 ] hash: 0000000293-332a6a5d1a6e213506a14078fe1702861c0e2ab9caf76660128216c50f48f0bc [Improve documentation. Ivan Lazar Miljenovic **20120405082449 Ignore-this: 3ce3dbfc9950f439b276f59340eaf988 ] hash: 0000002233-61d0e071bd43e9ed52ebb1714b669891daee638f6aa6dde5b1e28fda2cee6f02 [Don't export FaceInfo's constructor Ivan Lazar Miljenovic **20120405082527 Ignore-this: e9b19a10fce061361da9c5358f2a7d88 ] hash: 0000000269-27161b0ac954d8519257896ce6af9639b3f6946b0ab40d79729f478cd97c0d7f [haddock fixup Ivan Lazar Miljenovic **20120405083053 Ignore-this: 138f7e716930cc1b86be19560ee3cf9d ] hash: 0000000304-184fa40c938089fba2522ab3e781660f6c21aec91a1505bf9094a9467dad8b9c [Be more compact with node and edge IDs Ivan Lazar Miljenovic **20120405094534 Ignore-this: 156659161730f067db939f2e9d92ac06 * When adding a new node or edge, try to find an ID from a node/edge that has been deleted. * When merging two graphs, be more compact with the numeric shifting (left as such for efficiency reasons). ] hash: 0000003446-cd00bf719e69571d4f9bec333dc5934dd86bfae9f199617eb8df0199e5c6e73f [Add error messages for the various withEdge-using functions Ivan Lazar Miljenovic **20120410130133 Ignore-this: 607561db6f6ba8a77a0625abc512b7c6 ] hash: 0000001426-ffae99ae230c88cc9eb4c06c509b87a8a54336558eb071d4731df35f979cd500 [data-clist-0.0.7.2 has the fixed Eq instance Ivan Lazar Miljenovic **20120427094636 Ignore-this: 8e3309d891b9989b7955cd79f02c5454 ] hash: 0000000287-845c9a1637311bbaf02ce75229874be63c028b6766464a811a1ef6ff3bbb339c [Set version 1.0.0.0 for release Ivan Lazar Miljenovic **20120427094646 Ignore-this: 3c8a7c220f1a549596a38998669517b4 ] hash: 0000000235-7a7ba766240c7f43c5ef8432232f7b2db1e7f158cb15c2e6367928fbed818b9c [Make cabal sdist happy: don't use -O2 Ivan Lazar Miljenovic **20120427095911 Ignore-this: 160866e99ab1dead33cff9d9c2be7908 ] hash: 0000000286-7a48aacfe2e61c10100eb1dcf98781d45450b42d8dedacde221d33054ce4979d [Derive instances for TraversedValues Ivan Lazar Miljenovic **20120512061344 Ignore-this: f6ff7e4a2b4b8aef4fa6915315d7eba5 ] hash: 0000000242-0289afbc71dc63e5f34ae957ca35f0c2cf53ffcf6bea50956d3a6a0e26f96c99 [Provide better error messages for function using withNode Ivan Lazar Miljenovic **20120512065207 Ignore-this: 6cd74d0c380e264f8668194f181c6f8f Also make {outgoing,incoming}Edges return an empty CList ] hash: 0000001340-173860583e42e90d4fed50227c6017e777cae72a52ddc55f5d96630268fcbad3 [deleteEdge can now "delete" non-existant edges. Ivan Lazar Miljenovic **20120512070620 Ignore-this: cbe7a68051009fd953f5f600d5941869 There is probably a more elegant/automatic way of doing this, but I can't think of how without providing Maybe-specific variants of getEdgeInfo, etc. deleteNode is also "correct" in this regard as of the patch that does better error messages for withNode. ] hash: 0000000924-3262434cb0293cf91fe56f92e0ed25b94d10038e97b0ec05b2f1abe244a2fe3b [Add deleteNodes and deleteEdges Ivan Lazar Miljenovic **20120512070646 Ignore-this: 351ace7be435d0667dd959014021ddfc ] hash: 0000000803-d3679f68acefe1d8d0587101d2beb8fdcbf70fdb4f8bcae269e4d3abb64072da [renumbering now works properly for spanning traversals Ivan Lazar Miljenovic **20120513234852 Ignore-this: 46144d402efa2346c3618f82bd3cdcb0 ] hash: 0000000924-1cd14ca87b23dfaccfbf980afd8f33f2bd475c9e5c4e8d63a2544a223164a6d6 [Let AsciiCode work for n >= 10 vertices when parsing Ivan Lazar Miljenovic **20120522060943 Ignore-this: 6250d8ca914f526ee4ba52b84f97cf12 ] hash: 0000000410-07058f787ce8b4aa12737325e7be2b96933f123d7760d06b6b4f4f20b90bc818 [When renumbering, rotate the edge lists so that the min edge is first Ivan Lazar Miljenovic **20120703111023 Ignore-this: 28701cd98587dd11c804a35d92775f73 ] hash: 0000000697-915e8899e995a408d7b844fb763da552b2eef3d5359ec84e18d1118b715352b9 [Remove serialTraversal Ivan Lazar Miljenovic **20120710113451 Ignore-this: 5128fe1577665969cf7516563279f6c8 Not used anyway ] hash: 0000000642-1fc8dcd1d33072ae8be5f3072c6a488689b7c9a785130ccfeaf74d97f1f7a02f [Serialisation now covers _all_ components. Ivan Lazar Miljenovic **20120710114305 Ignore-this: d9fa29151420da78d4053344fa26b826 Will soon be able to cover individual re-numbering, etc. ] hash: 0000013770-0ab52989bd8a8e941e8fb6c9e8a6acae4c1a0dccdf0192568426c78853d37ddd [Clean up some type signatures Ivan Lazar Miljenovic **20120710114911 Ignore-this: 4945ab4b8faa989608d698a6c06b461f ] hash: 0000000880-d0d1f6db5f32654393bb46fef955c369d70891e89fcae614e91c76e6431fd22b [Haddock doesn't replace type aliases Ivan Lazar Miljenovic **20120710114938 Ignore-this: ff29e086cdce2fe52382330385219b15 ] hash: 0000000296-0078944ffda9cbbd97e801412ec9a0800572ec47d4feb51071f0a292519a518e [Add .Internal module exporting constructors. Ivan Lazar Miljenovic **20120716030256 Ignore-this: 26c62f718e9126eb5e8854d470e02a55 For rationale, see https://plus.google.com/115372308262579808851/posts/YXVKy2NinK9 ] hash: 0000020796-e9e236623052ad382738b010fc3dff2f0f9a5b2703aadaeea5d5c865ebf736d8 [Remove currentNode, not actually used Ivan Lazar Miljenovic **20120716072946 Ignore-this: 2bf91b1fab22c134e1416d3973ceb692 ] hash: 0000001058-e126d890868281794f39cb7d9d39e9bec8ee060027267e8d827ad40e1f086f7a [Provide an explicit implementation of >> Ivan Lazar Miljenovic **20120716082959 Ignore-this: aeeea882c8f5ff4d17709b62acfcb0bb ] hash: 0000000273-cb8d5268343d70b235c7c5ecbf34e8bbcd5e1f559836674ddf0fd6f82a74e93c [Replace `fmap` with <$> Ivan Lazar Miljenovic **20120716083414 Ignore-this: 87fec1d1865f534559b95c86379c49ce ] hash: 0000000831-6fb14a6bcfef7eb0ebe79d88a339b87e864a61673e41d8f6421175a558669ad6 [Start of allowing DFS-based serialisation Ivan Lazar Miljenovic **20120716083442 Ignore-this: ff59c451ee29156927ac62e201f88ab9 ] hash: 0000002472-007db5eaea9e84e7b849ce0e0191880682a4d7b2b3d37d31840f947360dc4b18 [Why create an entirely new one when everything else remains the same??? Ivan Lazar Miljenovic **20120827084445 Ignore-this: 3b762d6d302f6760d6f2204fb9bfb246 ] hash: 0000000764-9cd20f140b7372275115e6dda47925d376b6743a3ff4b5642c2b299d63332c06 [Trying to ensure no gaps turns out to slow the code down too much :( Ivan Lazar Miljenovic **20120827084555 Ignore-this: 6ff922137f77bf6c119ddc5cbbd6d0bf ] hash: 0000000964-1e99b2fe422a4bbdfac1cf1d1609eb78d1b690529d52194e20fbcd68096ae016 [Add mirrorGraph Ivan Lazar Miljenovic **20121001065241 Ignore-this: 504e8c4775897b828979b8efde31996 ] hash: 0000000581-71b507f877be2d1ea58ac0d7169fe560f33d0abc0b4ca8bd5ce80e2bccbae557 [Remove another un-exported type alias Ivan Lazar Miljenovic **20121001065259 Ignore-this: 4aa2629db010d0acb94e49fa7cce55a8 ] hash: 0000000319-07ccad0d6e7a91cf6e885ba95b2471355436663a303a2d49608a6b5b0077479a [newID no longer takes a (k -> Word) argument Ivan Lazar Miljenovic **20121001065725 Ignore-this: 8d9cead75c9544ae3b1e529db6e16046 ] hash: 0000000410-68d998d6d94a900af0617972cf395a9fa1f1286fe1be65b37a67368ecbd335a9 [No longer being smart with new node/edge IDs Ivan Lazar Miljenovic **20121001065815 Ignore-this: 94eab45518b26564b6a09ba07667baf3 ] hash: 0000000566-1c6328c6b440251bda7b60715f1909de4b4ce45a6d4e310fec1955d6f09da66d [Finish merging the two traversal types together. Ivan Lazar Miljenovic **20121001070138 Ignore-this: cd105efdd5042f4b8f48ee43816cf91e _Slightly_ slower (not by much) when just BFS serialisation is required, but much faster for any other type of traversal. ] hash: 0000036049-022868de028439c00e7bdb93cfb88a844e73ab067bee30ab98d51ed512000ed2 [Fix up profiling options Ivan Lazar Miljenovic **20121001070150 Ignore-this: eb906682a5ac854827a656ab6c104dc2 ] hash: 0000000248-83a3b033bf9baafc06c7614444af6bceb9e1d8bdee52cfa85c55cc91753bf30e [Add toCanonical Ivan Lazar Miljenovic **20121001130605 Ignore-this: 6c9f30e7fbfd8daeaf8260afee3018fd ] hash: 0000000756-ad1b3a4433949eb59a3ae430be0f31ea9b238a2bde9ccc0e65362feadd11825a [No need for separate map{Node,Edge}IDsWith functions Ivan Lazar Miljenovic **20121002114055 Ignore-this: e39d6a83a015bd052de7cff86d17980d ] hash: 0000001415-c39787c6d9a09bfd211bf381772bb23eba1ef0ce1432aceafa3f340e1d6461bb [Optimise TState instances Ivan Lazar Miljenovic **20121002114121 Ignore-this: a9da73b974c4e8da616ea58e7fc3ea09 ] hash: 0000000850-1ed5dd8f0386f7298f109959e482cbb319ac634f5c7c9992d27352db544390ab [Add Mirror-based canonical example functions Ivan Lazar Miljenovic **20121002114137 Ignore-this: 84b9700a08736fc15e94c60ee9da42b6 ] hash: 0000001174-8a73fc0349919f19a33f76448fb8945dda4bc55b68687ca5a5d373f5b27cd571 [Remember to state that we've traversed the first node Ivan Lazar Miljenovic **20121010224231 Ignore-this: f8d59db78bcd75124d21a231e6816276 ] hash: 0000000308-1343c875adbd4a8a9c3934e3d841c5aff1631810ac8c5dac5d43092740dc734d [Add reverse traversal lookup functions Ivan Lazar Miljenovic **20121010224243 Ignore-this: 3d451cacb34e8f8b1f21e2a8d3f4a402 ] hash: 0000001773-0cd43cbfbe5651a499026977f310c17b591d78fbfa10321b0c9f0e0c234b17ad [Don't construct new values Ivan Lazar Miljenovic **20121010224258 Ignore-this: e37fea91706038a7198bc7a2dbca984b ] hash: 0000000584-2c955980392a65cf7ffd5c68128f1f7b6c54cb27c0ab22dfbcac775a2a78212f [Add a better error message when something goes wrong when traversing. Ivan Lazar Miljenovic **20121017110917 Ignore-this: 9895450d39ec6a24f4e6042dee773673 (Most likely to occur with manually constructed graphs.) ] hash: 0000000602-6916eef8bd6ff926fe28f7d8a409b32739ecec07b2c889d721fcb9cd18f83b0c [The sepComps traversal state was specified for a reason; let it be used!!! Ivan Lazar Miljenovic **20121022031705 Ignore-this: 52ed08b7e19f332665a7ee6230909ec9 ] hash: 0000001758-06ab82a789bd32f1d92ea2a444fd712fd6455aab68ee7b42ae7398396d4f16a0 [Add more pretty-printing options Ivan Lazar Miljenovic **20121030020612 Ignore-this: bb7335df10e384d29df921f755682e3e ] hash: 0000001842-d761b99c40571fdc23651c6d43b9da91dcb11af7415707a1dfff464fcb171f01 [Slight improvement to module description Ivan Lazar Miljenovic **20121103220802 Ignore-this: d662870cf7f1c32f87e9fed1fc9f773 ] hash: 0000000485-e8ca6342ff70c2c59e292203e44eba96d87a0586b1abd100af6c56f720374d85 [Allow building with GHC-7.6.1 Ivan Lazar Miljenovic **20121107002211 Ignore-this: ae568e6374f76364b9c63ab047801084 ] hash: 0000000365-235629e4db11989d631733b4837cd3639d32c027516abc9db42a45a5a9853084