20#ifndef HURRICANE_SEGMENT
21#define HURRICANE_SEGMENT
23#include "hurricane/Component.h"
24#include "hurricane/Segments.h"
33class Segment :
public Component {
36 static FastRTTI _fastRTTI;
38 static inline const FastRTTI& fastRTTI ();
39 virtual const FastRTTI& vfastRTTI ()
const;
46 public:
class SourceHook :
public Hook {
51 public:
typedef Hook Inherit;
53 private: SourceHook(Segment* segment);
55 public:
virtual Component* getComponent()
const;
57 public:
virtual bool isMaster()
const {
return false;};
59 public:
virtual string _getTypeName()
const {
return "Segment::SourceHook"; };
60 public:
virtual string _getString()
const;
61 public:
static Hook* _compToHook(Component*);
64 public:
class TargetHook :
public Hook {
69 public:
typedef Hook Inherit;
71 private: TargetHook(Segment* segment);
73 public:
virtual Component* getComponent()
const;
75 public:
virtual bool isMaster()
const {
return false;};
77 public:
virtual string _getTypeName()
const {
return "Segment::TargetHook"; };
78 public:
virtual string _getString()
const;
79 public:
static Hook* _compToHook(Component*);
87 private:
const Layer* _layer;
93 protected: Segment (
Net* net
103 public:
virtual Hooks getHooks()
const;
104 public:
virtual DbU::Unit getX()
const {
return 0;};
105 public:
virtual DbU::Unit getY()
const {
return 0;};
106 public:
virtual const Layer* getLayer()
const {
return _layer;};
134 protected:
virtual void _preDestroy();
136 public:
virtual void _toJson(JsonWriter*)
const;
137 public:
virtual string _getString()
const;
138 public:
virtual Record* _getRecord()
const;
143 inline const FastRTTI& Segment::fastRTTI () {
return _fastRTTI; }
150class JsonSegment :
public JsonComponent {
153 public: JsonSegment(
unsigned long flags);
std::int64_t Unit
Definition DbU.h:67
Hook description (API)
Definition Hook.h:34
Layer description (API)
Definition Layer.h:120
Net description (API)
Definition Net.h:46
Point description (API)
Definition Point.h:30
Segment description (API)
Definition Segment.h:33
Hook * getSourceHook()
Definition Segment.h:107
Component * getTarget() const
virtual DbU::Unit getLength() const =0
const DbU::Unit & getWidth() const
Definition Segment.h:114
virtual DbU::Unit getTargetY() const =0
DbU::Unit getHalfWidth() const
Definition Segment.h:115
virtual Point getSourcePosition() const
Component Inherit
Definition Segment.h:44
virtual Point getTargetPosition() const
virtual DbU::Unit getSourceY() const =0
Component * getOppositeAnchor(Component *anchor) const
virtual DbU::Unit getTargetX() const =0
Component * getSource() const
virtual DbU::Unit getSourceX() const =0
Hook * getTargetHook()
Definition Segment.h:108
Components getAnchors() const
void setLayer(const Layer *layer)
void setWidth(const DbU::Unit &width)
Hook * getOppositeHook(const Hook *hook) const
Contains Almost Everything.
Definition BasicLayer.h:39
GenericCollection< Hook * > Hooks
Definition Hooks.h:35
GenericCollection< Component * > Components
Definition Components.h:35