summaryrefslogtreecommitdiff
path: root/tikzit/src/common/TikzGraphAssembler.m
diff options
context:
space:
mode:
Diffstat (limited to 'tikzit/src/common/TikzGraphAssembler.m')
-rw-r--r--tikzit/src/common/TikzGraphAssembler.m83
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