diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-09 11:00:50 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-09 11:00:50 +0000 |
commit | a8a8dfb90d6a51ae369c042c95162f45754c7c4b (patch) | |
tree | 0e7a5f82febebe7129ebfb015f05b114064c39fd /tikzit/src/common/GraphElementData.m | |
parent | e1cf0babff63e670e0d550b4072c22649a117fa7 (diff) |
Move tikzit into "trunk" directory
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@365 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/common/GraphElementData.m')
-rw-r--r-- | tikzit/src/common/GraphElementData.m | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/tikzit/src/common/GraphElementData.m b/tikzit/src/common/GraphElementData.m new file mode 100644 index 0000000..02b747b --- /dev/null +++ b/tikzit/src/common/GraphElementData.m @@ -0,0 +1,141 @@ +// +// GraphElementData.m +// TikZiT +// +// Copyright 2010 Aleks Kissinger. All rights reserved. +// +// +// This file is part of TikZiT. +// +// TikZiT is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// TikZiT is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with TikZiT. If not, see <http://www.gnu.org/licenses/>. +// + +#import "GraphElementData.h" +#import "GraphElementProperty.h" + + +@implementation GraphElementData + +- (id)init { + [super init]; + properties = [[NSMutableArray alloc] init]; + return self; +} + +// all of the array messages delegate to 'properties' + +- (NSUInteger)count { return [properties count]; } +- (id)objectAtIndex:(NSUInteger)index { + return [properties objectAtIndex:index]; +} +- (void)insertObject:(id)anObject atIndex:(NSUInteger)index { + [properties insertObject:anObject atIndex:index]; +} +- (void)removeObjectAtIndex:(NSUInteger)index { + [properties removeObjectAtIndex:index]; +} +- (void)addObject:(id)anObject { + [properties addObject:anObject]; +} +- (void)removeLastObject { + [properties removeLastObject]; +} +- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject { + [properties replaceObjectAtIndex:index withObject:anObject]; +} +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state + objects:(id *)stackbuf + count:(NSUInteger)len { + return [properties countByEnumeratingWithState:state objects:stackbuf count:len]; +} + +- (void)setProperty:(NSString*)val forKey:(NSString*)key { + GraphElementProperty *m = [[GraphElementProperty alloc] initWithKeyMatching:key]; + NSInteger idx = [properties indexOfObject:m]; + [m release]; + + GraphElementProperty *p; + if (idx == NSNotFound) { + p = [[GraphElementProperty alloc] initWithPropertyValue:val forKey:key]; + [properties addObject:p]; + [p release]; + } else { + p = [properties objectAtIndex:idx]; + [p setValue:val]; + } +} + +- (void)unsetProperty:(NSString*)key { + GraphElementProperty *m = [[GraphElementProperty alloc] initWithKeyMatching:key]; + [properties removeObject:m]; + [m release]; +} + +- (NSString*)propertyForKey:(NSString*)key { + GraphElementProperty *m = [[GraphElementProperty alloc] initWithKeyMatching:key]; + NSInteger idx = [properties indexOfObject:m]; + [m release]; + + if (idx == NSNotFound) { + return nil; + }else { + GraphElementProperty *p = [properties objectAtIndex:idx]; + return [p value]; + } +} + +- (void)setAtom:(NSString*)atom { + GraphElementProperty *a = [[GraphElementProperty alloc] initWithAtomName:atom]; + if (![properties containsObject:a]) [properties addObject:a]; + [a release]; +} + +- (void)unsetAtom:(NSString*)atom { + GraphElementProperty *a = [[GraphElementProperty alloc] initWithAtomName:atom]; + [properties removeObject:a]; + [a release]; +} + +- (BOOL)isAtomSet:(NSString*)atom { + GraphElementProperty *a = [[GraphElementProperty alloc] initWithAtomName:atom]; + BOOL set = [properties containsObject:a]; + [a release]; + return set; +} + +- (NSString*)stringList { + NSString *s = [properties componentsJoinedByString:@", "]; + return ([s isEqualToString:@""]) ? @"" : [NSString stringWithFormat:@"[%@]", s]; +} + +- (id)copy { + GraphElementData *cp = [[GraphElementData alloc] init]; + NSEnumerator *en = [properties objectEnumerator]; + GraphElementProperty *p, *p2; + while ((p = [en nextObject]) != nil) { + p2 = [p copy]; + [cp addObject:p2]; + [p2 release]; + } + return cp; +} + +- (void)dealloc { + [properties release]; + [super dealloc]; +} + +@end + +// vi:ft=objc:ts=4:noet:sts=4:sw=4 |