SVGElementInstance.m 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #import "SVGElementInstance.h"
  2. #import "SVGElementInstance_Mutable.h"
  3. #import "SVGElementInstanceList_Internal.h"
  4. @implementation SVGElementInstance
  5. @synthesize parentNode;
  6. @synthesize childNodes;
  7. - (void)dealloc {
  8. self.parentNode = nil;
  9. self.correspondingElement = nil;
  10. self.correspondingUseElement = nil;
  11. }
  12. -(void)setParentNode:(SVGElementInstance *)newParentNode
  13. {
  14. if( newParentNode != self.parentNode )
  15. {
  16. if( newParentNode == nil )
  17. {
  18. /* additionally remove self from parent's childNodes */
  19. [self.parentNode.childNodes.internalArray removeObject:self];
  20. parentNode = newParentNode;
  21. }
  22. else
  23. {
  24. /* additionally ADD self to parent's childNodes */
  25. parentNode = newParentNode;
  26. NSAssert( NSNotFound != [self.parentNode.childNodes.internalArray indexOfObject:self], @"Found that I was already a child of the node that I was being added to - should be impossible!" );
  27. [self.parentNode.childNodes.internalArray addObject:self];
  28. }
  29. }
  30. }
  31. -(SVGElementInstance *)firstChild
  32. {
  33. if( [self.childNodes length] < 1 )
  34. return nil;
  35. else
  36. return [self.childNodes item:0];
  37. }
  38. -(SVGElementInstance *)lastChild
  39. {
  40. if( [self.childNodes length] < 1 )
  41. return nil;
  42. else
  43. return [self.childNodes item: [self.childNodes length] - 1];
  44. }
  45. -(SVGElementInstance *)previousSibling
  46. {
  47. if( self.parentNode == nil )
  48. return nil;
  49. else
  50. {
  51. NSUInteger indexInParent = [self.parentNode.childNodes.internalArray indexOfObject:self];
  52. if( indexInParent < 1 )
  53. return nil;
  54. else
  55. return [self.parentNode.childNodes item:indexInParent-1];
  56. }
  57. }
  58. -(SVGElementInstance *)nextSibling
  59. {
  60. if( self.parentNode == nil )
  61. return nil;
  62. else
  63. {
  64. NSUInteger indexInParent = [self.parentNode.childNodes.internalArray indexOfObject:self];
  65. if( indexInParent >= [self.parentNode.childNodes length] )
  66. return nil;
  67. else
  68. return [self.parentNode.childNodes item:indexInParent + 1];
  69. }
  70. }
  71. @end