# FTNodeImpl

## Abstract

Implementation of the protocol ``

## Discussion

At present the handling of relations from one node to another is kept simple: Each node contains the underlying references to nodes to which it links (outgoing nodes) and which point to it (incoming nodes). This (internal) representation may change in future since it may not be efficient enough wrt. to searching paths

## Methods

`-addIncomingReferenceFromNodeId:withEdgeId:`
  add a reference to the specified node
`-addOutgoingReferenceToNodeId((id ), (id ), (id ), (id ), (id ), (id ), (NSCoder *), (id ), (FTNodeImpl *), (id ), (FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))`
  add a reference to the specified node
`-addOutgoingReferenceToNodeId((id ), (id ), (id ), (id ), (NSCoder *), (id ), (FTNodeImpl *), (id ), (FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))`
  add a reference to the specified node
`-addOutgoingReferenceToNodeId:withEdgeId:`
  add a reference to the specified node
`-countIncomingReferences`
`-countOutgoingReferences`
`-createAndAppendEdgeWithId`
  creates an edge which refers to the given node
`-createAndAppendEdgeWithId:withTargetNode:`
  creates an edge which refers to the given node
`-description`
`-encodeWithCoder:`
  Is being called in order to serialize this instance
`-incomingEdges`
  Get all edges pointing to self
`-incomingNodes`
  access to all nodes refering the receiver of this message
`-init`
`-initWithCode`
  initializer called by deserialization process
`-initWithCoder:`
  initializer called by deserialization process
`-initWithNodeId`
  initializes this instance
`-initWithNodeId:forGraph:`
  initializes this instance
`-internalStateChanged`
  Informs graph instance to update the persistent data representing this node
`-nodeId`
`-outgoingEdges`
  Get all outgoing edges
`-outgoingNodes`
  access to all nodes referred by the receiver of this message
`-referencesToNodeIterator:`
  returns an iterator over all targets nodes of the references which are contained in the given reference set
`-removeAllOutgoingNodesWithId:`
  removes all outgoing nodes with the specified id
`-removeFromReferenceSet`
  removes the specified reference from the set
`-removeFromReferenceSet:node:withEdgeId:`
  removes the specified reference from the set
`-removeIncomingReferencePointingFrom`
  removes the specified reference from the set of incoming references
`-removeIncomingReferencePointingFrom:withEdgeId:((FTNodeImpl *), (id ), (FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))`
  removes the specified reference from the set of incoming references
`-removeIncomingReferencePointingFrom:withEdgeId:((FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))`
  removes the specified reference from the set of outgoing references
`-removeOutgoingNodeWithId`
  removes all outgoing nodes with the specified id
`-removeOutgoingReferencePointingTo`
  removes the specified reference from the set of outgoing references
`-serviceWithId:`
  retrieve the specified service
`-writeLock:`
  Set / unset write lock

### addIncomingReferenceFromNodeId:withEdgeId:

add a reference to the specified node

See Also:

> addOutgoingReferenceToNodeId

>     - addIncomingReferenceFromNodeId: (id <FTId>) aSourceNodeId withEdgeId: (id <FTId>) anEdgeId;

##### Parameter Descriptions

> `aSourceNodeId`
>   id of source node
> `anEdgeId`
>   id of underlying edge

### addOutgoingReferenceToNodeId((id ), (id ), (id ), (id ), (id ), (id ), (NSCoder *), (id ), (FTNodeImpl *), (id ), (FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))

add a reference to the specified node

See Also:

> addIncomingReferenceFromNodeId:withEdgeId:

>     - addIncomingReferenceFromNodeId: (id <FTId>) aSourceNodeId withEdgeId: (id <FTId>) anEdgeId;

##### Parameter Descriptions

> `aSourceNodeId`
>   id of source node
> `anEdgeId`
>   id of underlying edge

method result
  self

### addOutgoingReferenceToNodeId((id ), (id ), (id ), (id ), (NSCoder *), (id ), (FTNodeImpl *), (id ), (FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))

add a reference to the specified node

See Also:

> addOutgoingReferenceToNodeId:withEdgeId:

>     - addOutgoingReferenceToNodeId: (id <FTId>) aTargetNodeId withEdgeId: (id <FTId>) anEdgeId;

##### Parameter Descriptions

> `aTargetNodeId`
>   id of target node
> `anEdgeId`
>   id of underlying edge

method result
  self

### addOutgoingReferenceToNodeId:withEdgeId:

add a reference to the specified node

See Also:

> addOutgoingReferenceToNodeId

>     - addOutgoingReferenceToNodeId: (id <FTId>) aTargetNodeId withEdgeId: (id <FTId>) anEdgeId;

##### Parameter Descriptions

> `aTargetNodeId`
>   id of target node
> `anEdgeId`
>   id of underlying edge

### countIncomingReferences

>     - (unsigned) countIncomingReferences;

method result
  returns the number of incoming edges

### countOutgoingReferences

>     - (unsigned) countOutgoingReferences;

method result
  returns the number of outgoing edges

### createAndAppendEdgeWithId

creates an edge which refers to the given node

See Also:

> createAndAppendEdgeWithId:withTargetNode:

>     - (id <FTEdge>) createAndAppendEdgeWithId: (id <FTId>) edgeId withTargetNode: (id <FTNode>) targetNode;

##### Parameter Descriptions

> `edgeId`
>   id of the edge
> `targetNode`
>   node to which the edge refers

method result
  created edge instance

### createAndAppendEdgeWithId:withTargetNode:

creates an edge which refers to the given node

See Also:

> createAndAppendEdgeWithId

>     - (id <FTEdge>) createAndAppendEdgeWithId: (id <FTId>) edgeId withTargetNode: (id <FTNode>) targetNode;

##### Parameter Descriptions

> `edgeId`
>   id of the edge
> `targetNode`
>   node to which the edge refers

### description

>     - (NSString *) description;

method result
  information about the state of this object

### encodeWithCoder:

Is being called in order to serialize this instance

>     - (void) encodeWithCoder: (NSCoder *) encoder;

##### Parameter Descriptions

> `encoder`
>   object to be used for serialization

### incomingEdges

Get all edges pointing to self

>     - (id <ECIterator>) incomingEdges;

method result
  iterator of instances of type FTEdge or an empty iterator

### incomingNodes

access to all nodes refering the receiver of this message

>     - (id <ECIterator>) incomingNodes;

method result
  iterator over instances which implement the protocol FTNode

### init

>     - init;

method result
  self

### initWithCode

initializer called by deserialization process

See Also:

> initWithCoder:

>     - (id) initWithCoder:(NSCoder *) decoder;

##### Parameter Descriptions

> `decoder`
>   to use

method result
  self

### initWithCoder:

initializer called by deserialization process

See Also:

> initWithCode

>     - (id) initWithCoder:(NSCoder *) decoder;

##### Parameter Descriptions

> `decoder`
>   to use

### initWithNodeId

initializes this instance

See Also:

> initWithNodeId:forGraph:

>     - initWithNodeId: (id <FTId>) anId forGraph: (FTGraphImpl *) aGraph;

##### Parameter Descriptions

> `anId`
>   id for this node
> `aGraph`
>   graph to which this node belongs to

method result
  self

### initWithNodeId:forGraph:

initializes this instance

See Also:

> initWithNodeId

>     - initWithNodeId: (id <FTId>) anId forGraph: (FTGraphImpl *) aGraph;

##### Parameter Descriptions

> `anId`
>   id for this node
> `aGraph`
>   graph to which this node belongs to

### internalStateChanged

Informs graph instance to update the persistent data representing this node

>     - internalStateChanged;

method result
  self

### nodeId

>     - (id <FTId>) nodeId;

method result
  return the id of this node.

### outgoingEdges

Get all outgoing edges

>     - (id <ECIterator>) outgoingEdges;

method result
  iterator of instances of type FTEdge or an empty iterator

### outgoingNodes

access to all nodes referred by the receiver of this message

>     - (id <ECIterator>) outgoingNodes;

method result
  iterator over instances which implement the protocol FTNode

### referencesToNodeIterator:

returns an iterator over all targets nodes of the references which are contained in the given reference set

>     - (id <ECIterator>) referencesToNodeIterator: (id <FTOrderedReferenceSet>) references;

##### Parameter Descriptions

> `references`
>   containing all references to examine

method result
  iterator over all targets nodes of the references

### removeAllOutgoingNodesWithId:

removes all outgoing nodes with the specified id

See Also:

> removeOutgoingNodeWithId

>     - removeAllOutgoingNodesWithId: (id <FTId>) aNodeId;

##### Parameter Descriptions

> `nodeId`
>   identifier for the node

### removeFromReferenceSet

removes the specified reference from the set

See Also:

> removeFromReferenceSet:node:withEdgeId:

>     - removeFromReferenceSet: (id <FTOrderedReferenceSet>) references node: (FTNodeImpl *) aNode withEdgeId: (id <FTId>) anEdgeId;

##### Parameter Descriptions

> `references`
>   set to be modified
> `aNode`
>   node of the reference to be removed
> `anEdgeId`
>   edgeId of the reference to be removed

method result
  self

### removeFromReferenceSet:node:withEdgeId:

removes the specified reference from the set

See Also:

> removeFromReferenceSet

>     - removeFromReferenceSet: (id <FTOrderedReferenceSet>) references node: (FTNodeImpl *) aNode withEdgeId: (id <FTId>) anEdgeId;

##### Parameter Descriptions

> `references`
>   set to be modified
> `aNode`
>   node of the reference to be removed
> `anEdgeId`
>   edgeId of the reference to be removed

### removeIncomingReferencePointingFrom

removes the specified reference from the set of incoming references

See Also:

> removeIncomingReferencePointingFrom:withEdgeId:

>     - removeIncomingReferencePointingFrom: (FTNodeImpl *) sourceNode withEdgeId: (id <FTId>) edgeId;

##### Parameter Descriptions

> `sourceNode`
>   node pointing to the receiver
> `edgeId`
>   id for the underlying edge

method result
  self

### removeIncomingReferencePointingFrom:withEdgeId:((FTNodeImpl *), (id ), (FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))

removes the specified reference from the set of incoming references

See Also:

> removeIncomingReferencePointingFrom

>     - removeIncomingReferencePointingFrom: (FTNodeImpl *) sourceNode withEdgeId: (id <FTId>) edgeId;

##### Parameter Descriptions

> `sourceNode`
>   node pointing to the receiver
> `edgeId`
>   id for the underlying edge

### removeIncomingReferencePointingFrom:withEdgeId:((FTNodeImpl *), (id ), (id ), (id ), (FTNodeImpl *), (id ), (NSString *), (BOOL))

removes the specified reference from the set of outgoing references

See Also:

> removeOutgoingReferencePointingTo

>     - removeIncomingReferencePointingFrom: (FTNodeImpl *) targetNode withEdgeId: (id <FTId>) edgeId;

##### Parameter Descriptions

> `targetNode`
>   node pointing the receiver is pointing to
> `edgeId`
>   id for the underlying edge

### removeOutgoingNodeWithId

removes all outgoing nodes with the specified id

See Also:

> removeAllOutgoingNodesWithId:

>     - removeAllOutgoingNodesWithId: (id <FTId>) aNodeId;

##### Parameter Descriptions

> `nodeId`
>   identifier for the node

method result
  self

### removeOutgoingReferencePointingTo

removes the specified reference from the set of outgoing references

See Also:

> removeIncomingReferencePointingFrom:withEdgeId:

>     - removeIncomingReferencePointingFrom: (FTNodeImpl *) targetNode withEdgeId: (id <FTId>) edgeId;

##### Parameter Descriptions

> `targetNode`
>   node pointing the receiver is pointing to
> `edgeId`
>   id for the underlying edge

method result
  self

### serviceWithId:

retrieve the specified service

>     - (id <FTService>) serviceWithId: (NSString *) aServiceId;

##### Parameter Descriptions

> `aServiceId`
>   identifier for the service

method result
  related service or nil, if not found or version cannot be found

### writeLock:

Set / unset write lock

>     - writeLock: (BOOL) enable;

##### Parameter Descriptions

> `enable`
>   YES enables the lock

method result
  self

(Last Updated August 27, 2006)