diff options
Diffstat (limited to 'tikzit/src/common/TikzGraphAssembler.m')
-rw-r--r-- | tikzit/src/common/TikzGraphAssembler.m | 83 |
1 files changed, 16 insertions, 67 deletions
diff --git a/tikzit/src/common/TikzGraphAssembler.m b/tikzit/src/common/TikzGraphAssembler.m index 8400cf6..26bf515 100644 --- a/tikzit/src/common/TikzGraphAssembler.m +++ b/tikzit/src/common/TikzGraphAssembler.m @@ -77,29 +77,18 @@ int yywrap() { @implementation TikzGraphAssembler - (id)init { - [super init]; - graph = nil; - currentNode = nil; - currentEdge = nil; - nodeMap = nil; + self = [super init]; return self; } -- (Graph*)graph { return graph; } -- (NSError*)lastError { return lastError; } - -- (GraphElementData *)data { - if (currentNode != nil) { - return [currentNode data]; - } else if (currentEdge != nil) { - return [currentEdge data]; - } else { - return [graph data]; - } +- (void)dealloc { + [graph release]; + [lastError release]; + [super dealloc]; } -- (Node*)currentNode { return currentNode; } -- (Edge*)currentEdge { return currentEdge; } +- (Graph*)graph { return graph; } +- (NSError*)lastError { return lastError; } - (BOOL)parseTikz:(NSString *)tikz { return [self parseTikz:tikz forGraph:[Graph graph]]; @@ -170,55 +159,6 @@ int yywrap() { return r; } -- (void)prepareNode { - currentNode = [[Node alloc] init]; -} - -- (void)finishNode { - if (currentEdge != nil) { // this is an edge node - [currentEdge setEdgeNode:currentNode]; - } else { // this is a normal node - [graph addNode:currentNode]; - [nodeMap setObject:currentNode forKey:[currentNode name]]; - } - - [currentNode release]; - currentNode = nil; -} - -- (void)prepareEdge { - currentEdge = [[Edge alloc] init]; -} - -- (void)finishEdge { - [currentEdge setAttributesFromData]; - [graph addEdge:currentEdge]; - [currentEdge release]; - currentEdge = nil; -} - -- (void)setEdgeSource:(NSString*)edge anchor:(NSString*)anch { - Node *s = [nodeMap objectForKey:edge]; - [currentEdge setSource:s]; - [currentEdge setSourceAnchor:anch]; -} - -- (void)setEdgeTarget:(NSString*)edge anchor:(NSString*)anch { - if (![edge isEqualToString:@""]) { - [currentEdge setTarget:[nodeMap objectForKey:edge]]; - [currentEdge setTargetAnchor:anch]; - } else { - [currentEdge setTargetAnchor:anch]; - [currentEdge setTarget:[currentEdge source]]; - } -} - -- (void)dealloc { - [graph release]; - [lastError release]; - [super dealloc]; -} - - (void)invalidate { [graph release]; graph = nil; @@ -244,4 +184,13 @@ int yywrap() { @end +@implementation TikzGraphAssembler (Parser) +- (void)addNodeToMap:(Node*)n { + [nodeMap setObject:n forKey:[n name]]; +} +- (Node*)nodeWithName:(NSString*)name { + return [nodeMap objectForKey:name]; +} +@end + // vi:ft=objc:ts=4:noet:sts=4:sw=4 |