1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
////////////////////////////////////////////////////////////////////////////////
/*! @file PairSetFunction.h Таблично заданная зависимость.
- Part of RANet - Research Assistant Net Library (based on ANSI C++).
- Copyright(C) 2010, Viktor E. Bursian, St.Petersburg, Russia.
Viktor.Bursian@mail.ioffe.ru
*///////////////////////////////////////////////////////////////////////////////
#ifndef PairSetFunction_H
#define PairSetFunction_H
#include "Curves.h"
#include <list>
namespace RA {
//------------------------------------------------------------------------------
ANNOUNCE_CLASS(sPairSetFunction)
//--------------------------------------------------------- sPairSetFunction ---
class RANet_EXPORT sPairSetFunction : public sDependence
{
STORABLE(sPairSetFunction)
NODE(sPairSetFunction)
//! @todo{?} private? что это за хрень и как оно работает?
private: //classes
ANNOUNCE_CLASS(sDataPoint)
public: //classes
ANNOUNCE_CLASS(sTracer)
class sTracer : public sCurve::sTracer
{
public:
sTracer (pcsPairSetFunction host_curve
,rcsScales scales );
virtual ~sTracer () {};
public:
virtual bool NextPoint ();
virtual bool NextLineSegment ();
protected:
pcsPairSetFunction PairSetFunction;
private:
sPoint Scaling;
sRange ArbRange;
bool WrongUnits;
bool SegmentFingerInitiated;
bool PointFingerInitiated;
list<sDataPoint>::const_iterator
SegmentFinger;
list<sDataPoint>::const_iterator
PointFinger;
};
public:
virtual ~sPairSetFunction ();
sPairSetFunction ();
virtual sNodePtr Copy () const;
virtual void AssignIntrinsicContent (sNodePtr);
virtual sCurve::psTracer GetCurveTracer (rcsScales scales);
// virtual real Value (real X) const;
virtual void AddNewPoint (sPoint);
void AddNewPoint (real x ,real y)
{ AddNewPoint(sPoint(x,y)); };
private: //classes
class sDataPoint : public sPoint
{
public:
sDataPoint ()
:sPoint()
{};
sDataPoint (rcsDataPoint DP)
:sPoint(DP.X,DP.Y)
{};
sDataPoint (rcsPoint P)
:sPoint(P)
{};
rsPoint operator = (rcsDataPoint P)
{ X=P.X; Y=P.Y; return *this; };
bool operator < (rcsDataPoint DP)
{ return ( X < DP.X ); };
};
private: //fields
bool Sorted;
list<sDataPoint> ThePoints;
};
//------------------------------------------------------------------------------
}; //namespace RA
#endif
|