/*!
@header FTEdgeImpl
@abstract Module of FT
@availability OS X, GNUstep
@copyright 2004, 2005, 2006 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------------------------------------------------------------------------
Modification history
31.03.05 ola initial version
23.08.06 ola license changed
-------------------------------------------------------------------------
*/
#if !defined(__FTEdgeImpl_H)
#define __FTEdgeImpl_H
#include
#include
#include
#include
@class FTGraphImpl;
/*!
* @class FTEdgeImpl
* @abstract Implementation of the FTEdge protocol
*/
@interface FTEdgeImpl : FTObject {
@private
id edgeId;
id targetNodeId;
id sourceNodeId;
/**
* Dangerous: Here we use a weak reference:
*/
FTGraphImpl *graph;
}
/*!
* @method initWithCode
* @abstract initializer called by deserialization process
* @param decoder to use
* @result self
*/
- (id) initWithCoder:(NSCoder *) decoder;
/*!
* @method initWithEdgeId
* @param anId id for this edge
* @param aTargetNode node to point to
* @param aSourceNode source node
* @param graph underlying graph instance
* @result self
*/
- initWithEdgeId: (id ) anId targetNode: (id ) aTargetNode
sourceNode: (id ) aSourceNode forGraph: (FTGraphImpl *) aGraph;
- (void) dealloc;
/*!
* @method description
* @result information about the state of this object
*/
- (NSString *) description;
/*!
* @method edgeId
* @result id of this instance
*/
- (id ) edgeId;
/*!
* @method encodeWithCoder
* @abstract Is being called in order to serialize this instance
* @param encoder object to be used for serialization
*/
- (void) encodeWithCoder: (NSCoder *) encoder;
/*!
* @method hash
* @result Returns an integer that can be used as a table address in a hash
* table structure
*/
- (unsigned) hash;
/*!
* @method isEqual
* @result Returns YES if the receiver and anObject are equal, NO otherwise
*/
- (BOOL) isEqual: (id)anObject;
/*!
* @method sourceNode
* @result source node of this edge
*/
- (id ) sourceNode;
/*!
* @method sourceNodeId
* @result id of the source node
*/
- (id ) sourceNodeId;
/*!
* @method targetNode
* @result node to which this edge points to
*/
- (id ) targetNode;
/*!
* @method targetNodeId
* @result id of target node
*/
- (id ) targetNodeId;
@end
#endif