Minsky
minsky::OperationBase Class Referenceabstract

#include <operationBase.h>

Inheritance diagram for minsky::OperationBase:
Inheritance graph
Collaboration diagram for minsky::OperationBase:
Collaboration graph

Public Types

typedef OperationType::Type Type
 
- Public Types inherited from minsky::OperationType
enum  Type {
  constant, time, integrate, differentiate,
  data, ravel, euler, pi,
  zero, one, inf, percent,
  add, subtract, multiply, divide,
  min, max, and_, or_,
  log, pow, polygamma, lt,
  le, eq, userFunction, copy,
  sqrt, exp, ln, sin,
  cos, tan, asin, acos,
  atan, sinh, cosh, tanh,
  abs, floor, frac, not_,
  Gamma, fact, sum, product,
  infimum, supremum, any, all,
  infIndex, supIndex, runningSum, runningProduct,
  difference, differencePlus, innerProduct, outerProduct,
  index, gather, meld, merge,
  slice, size, shape, mean,
  median, stdDev, moment, histogram,
  covariance, correlation, linearRegression, numOps
}
 
enum  Group {
  general, constop, binop, function,
  reduction, scan, tensor, statistics
}
 

Public Member Functions

virtual std::size_t numPorts () const =0
 
virtual Type type () const =0
 
const OperationBaseoperationCast () const override
 
OperationBaseoperationCast () override
 
virtual void iconDraw (cairo_t *) const =0
 visual representation of operation on the canvas More...
 
std::string portValues () const
 returns a list of values the ports currently have More...
 
bool multiWire () const
 
virtual void addPorts ()
 
void drawUserFunction (cairo_t *cairo) const
 
void draw (cairo_t *) const override
 draw this item into a cairo context More...
 
void resize (const LassoBox &b) override
 resize this item on the canvas More...
 
float scaleFactor () const override
 factor by which item has been resized More...
 
double value () const override
 current value of output port More...
 
std::vector< std::string > dimensions () const
 return dimension names of tensor object attached to input if binary op, then the union of dimension names is returned More...
 
Units units (bool check=false) const override
 compute the dimensional units More...
 
- Public Member Functions inherited from minsky::BottomRightResizerItem
bool onResizeHandle (float x, float y) const override
 
void drawResizeHandles (cairo_t *cairo) const override
 
virtual Point resizeHandleCoords () const
 returns coordinates of the resizer handle More...
 
- Public Member Functions inherited from minsky::Item
 Item ()
 
virtual std::weak_ptr< Portports (std::size_t i) const
 callback to be run when item deleted from group More...
 
std::size_t portsSize () const
 number of ports More...
 
float portX (std::size_t i)
 
float portY (std::size_t i)
 
virtual bool contains (float xx, float yy) const
 
bool contains (const Point &p) const
 
void updateBoundingBox () override
 
void throw_error (const std::string &) const
 mark item on canvas, then throw More...
 
virtual bool ioVar () const
 indicates this is a group I/O variable More...
 
double rotation () const
 
double rotation (const double &r)
 
std::pair< double, bool > rotationAsRadians () const
 return the rotation as radians, and whether rotation should have additional straight angle added for text that stays upright. More...
 
float iWidth () const
 
float iWidth (const float &w)
 
float iHeight () const
 
float iHeight (const float &h)
 
virtual void flip ()
 rotate icon though 180∘ More...
 
virtual std::string classType () const
 
std::string id () const
 return an id uniquely identifying this item More...
 
virtual float x () const
 
virtual float y () const
 
virtual float zoomFactor () const
 
void ensureBBValid () const
 
float width () const
 
float height () const
 
virtual std::vector< Pointcorners () const
 
float left () const
 
float right () const
 
float top () const
 
float bottom () const
 
std::string bookmarkId () const
 Id of bookmark associated with this. More...
 
void adjustBookmark () const override
 adjust bookmark list to reflect current configuration More...
 
float resizeHandleSize () const
 resize handles should be at least a percentage if the icon size (#1025) More...
 
virtual bool inItem (float x, float y) const
 
virtual bool onItem (float x, float y) const
 returns true if (x,y) is on the icon More...
 
virtual void onMouseDown (float x, float y)
 respond to mouse down events More...
 
virtual void onMouseUp (float x, float y)
 respond to mouse up events More...
 
virtual bool onMouseMotion (float x, float y)
 respond to mouse motion events with button pressed More...
 
virtual bool onMouseOver (float x, float y)
 respond to mouse motion events (hover) without button pressed More...
 
virtual void onMouseLeave ()
 respond to mouse leave events (when mouse leaves item) More...
 
virtual bool onKeyPress (int keySym, const std::string &utf8, int state)
 respond to key press events More...
 
virtual void deleteAttachedWires ()
 delete all attached wires More...
 
virtual Itemclone () const
 
virtual bool visible () const
 whether this item is visible on the canvas. More...
 
void moveTo (float x, float y)
 
virtual float scaleFactor (const float &sf)
 
void dummyDraw () const
 draw into a dummy cairo context, for purposes of calculating port positions More...
 
virtual void displayTooltip (cairo_t *, const std::string &) const
 display tooltip text, eg on mouseover More...
 
virtual void updateIcon (double t)
 update display after a step() More...
 
 Item (const Item &)=default
 
Itemoperator= (const Item &)=default
 
virtual ~Item ()
 
void drawPorts (cairo_t *cairo) const
 
virtual ClickType::Type clickType (float x, float y) const
 returns the clicktype given a mouse click at x, y. More...
 
virtual std::shared_ptr< PortclosestOutPort (float x, float y) const
 returns closest output port to x,y More...
 
virtual std::shared_ptr< PortclosestInPort (float x, float y) const
 
virtual std::shared_ptr< Itemselect (float x, float y) const
 returns the variable if point (x,y) is within a visible variable icon, null otherwise. More...
 
virtual void TCL_obj (classdesc::TCL_obj_t &t, const std::string &d)
 runs the TCL_obj descriptor suitable for this type More...
 
void RESTProcess (classdesc::RESTProcess_t &rp, const std::string &d) override
 runs the RESTProcess descriptor suitable for this type More...
 
void RESTProcess (classdesc::RESTProcess_t &rp, const std::string &d) const override
 
virtual void json_pack (classdesc::json_pack_t &j) const
 
virtual void displayDelayedTooltip (float x, float y)
 enable extended tooltip help message appropriate for mouse at (x,y) More...
 
virtual void disableDelayedTooltip ()
 
virtual bool editorMode () const
 some items have an editor mode attribute More...
 
virtual void toggleEditorMode ()
 
Units checkUnits () const
 perform units consistency checks More...
 
ItemPtr itemPtrFromThis () const
 return a shared_ptr to this More...
 
virtual void destroyFrame ()
 destroy any popup windows associated with this More...
 
- Public Member Functions inherited from minsky::NoteBase
virtual std::string const & detailedText () const
 
virtual std::string const & detailedText (const std::string &x)
 
virtual std::string const & tooltip () const
 
virtual std::string const & tooltip (const std::string &x)
 
virtual ~NoteBase ()=default
 

Static Public Member Functions

static OperationBasecreate (Type type)
 factory method. More...
 
- Static Public Member Functions inherited from minsky::Item
static void drawSelected (cairo_t *cairo)
 
- Static Public Member Functions inherited from minsky::OperationType
static std::string typeName (int type)
 return the symbolic name of type More...
 
static Group classify (Type t)
 

Public Attributes

double arg =1
 operation argument. For example, the offset used in a difference operator, or binsize in a binning op More...
 
std::string axis
 axis selector in tensor operations More...
 
- Public Attributes inherited from minsky::Item
float m_x =0
 
float m_y =0
 position in canvas, or within group More...
 
float m_sf =1
 scale factor of item on canvas, or within group More...
 
bool onResizeHandles =false
 set to true to indicate mouse is ovcaler resize handles More...
 
bool onBorder =false
 true to indicate mouse hovering over border More...
 
std::string deleteCallback
 
BoundingBox bb
 canvas bounding box. More...
 
- Public Attributes inherited from minsky::NoteBase
bool mouseFocus =false
 true if target of a mouseover More...
 
bool selected =false
 true if selected for cut, copy or group operation More...
 
bool bookmark =false
 Is this item also a bookmark? More...
 

Static Public Attributes

static constexpr float l =-8
 
static constexpr float h =12
 
static constexpr float r =12
 

Protected Member Functions

void setCachedText (cairo_t *, const std::string &, double) const
 check if cachedPango is up to date, and if not recreate More...
 

Protected Attributes

classdesc::Exclude< std::shared_ptr< ecolab::Pango > > cachedPango
 
- Protected Attributes inherited from minsky::Item
double m_width =10
 
double m_height =10
 
ItemPortVector m_ports
 
minsky::Item::MemoisedRotator memoisedRotator
 

Private Member Functions

 CLASSDESC_ACCESS (OperationBase)
 
Units unitsBinOpCase (bool check) const
 

Friends

struct EvalOpBase
 
struct SchemaHelper
 

Additional Inherited Members

- Static Protected Member Functions inherited from minsky::Item
static void drawResizeHandle (cairo_t *cairo, double x, double y, double sf, double angle)
 

Detailed Description

Definition at line 49 of file operationBase.h.

Member Typedef Documentation

◆ Type

Member Function Documentation

◆ addPorts()

void minsky::OperationBase::addPorts ( )
virtual

Definition at line 99 of file operation.cc.

Referenced by minsky::Operation< minsky::OperationType::integrate >::Operation(), and minsky::Operation< minsky::OperationType::integrate >::operator=().

100  {
101  m_ports.clear();
102  if (numPorts()>0)
103  m_ports.emplace_back(make_shared<Port>(*this));
104  for (size_t i=1; i<numPorts(); ++i)
105  switch (type())
106  {
107  case add: case subtract:
108  m_ports.emplace_back(make_shared<SumInputPort>(*this));
109  break;
110  case multiply: case divide:
111  m_ports.emplace_back(make_shared<MulInputPort>(*this));
112  break;
113  case min:
114  m_ports.emplace_back(make_shared<MinInputPort>(*this));
115  break;
116  case max:
117  m_ports.emplace_back(make_shared<MaxInputPort>(*this));
118  break;
119  case and_:
120  m_ports.emplace_back(make_shared<AndInputPort>(*this));
121  break;
122  case or_:
123  m_ports.emplace_back(make_shared<OrInputPort>(*this));
124  break;
125  case meld:
126  case merge:
127  m_ports.emplace_back(make_shared<MultiWireInputPort>(*this));
128  break;
129  default:
130  m_ports.emplace_back(make_shared<InputPort>(*this));
131  break;
132  }
133  }
virtual std::size_t numPorts() const =0
ItemPortVector m_ports
Definition: item.h:156
virtual Type type() const =0
Here is the caller graph for this function:

◆ CLASSDESC_ACCESS()

minsky::OperationBase::CLASSDESC_ACCESS ( OperationBase  )
private

◆ create()

OperationBase * minsky::OperationBase::create ( OperationType::Type  type)
static

factory method.

Definition at line 545 of file operation.cc.

References minsky::anonymous_namespace{operation.cc}::operationFactory.

Referenced by minsky::Canvas::addOperation(), and schema3::MinskyItemFactory::create().

546  {
547  switch (type)
548  {
549  case time: return new Time;
550  case copy: return new Copy;
551  case integrate: return new IntOp;
552  case differentiate: return new Derivative;
553  case data: return new DataOp;
554  case ravel: return new Ravel;
555  case constant: throw error("Constant deprecated");
556  case userFunction: return new UserFunction;
557  default: return operationFactory.create(type);
558  }
559  }
OperationFactory< OperationBase, Operation > operationFactory
Definition: operation.cc:542
virtual Type type() const =0
Here is the caller graph for this function:

◆ dimensions()

vector< string > minsky::OperationBase::dimensions ( ) const

return dimension names of tensor object attached to input if binary op, then the union of dimension names is returned

Definition at line 348 of file operation.cc.

References f.

Referenced by minsky::Ravel::dimension(), minsky::Ravel::dimensionUnitsFormat(), minsky::Ravel::hypercube(), and minsky::Ravel::setDimension().

349  {
350  set<string> names;
351  for (size_t i=1; i<m_ports.size(); ++i)
352  if (auto vv=m_ports[i]->getVariableValue())
353  for (auto& xv: vv->hypercube().xvectors)
354  names.insert(xv.name);
355  else if (!m_ports[i]->wires().empty())
356  if (auto f=m_ports[i]->wires()[0]->from())
357  if (auto r=f->item().ravelCast())
358  for (auto& xv: r->hypercube().xvectors)
359  names.insert(xv.name);
360 
361  return {names.begin(), names.end()};
362  }
function f
Definition: canvas.m:1
ItemPortVector m_ports
Definition: item.h:156
static constexpr float r
Definition: operationBase.h:58
Here is the caller graph for this function:

◆ draw()

void minsky::OperationBase::draw ( cairo_t *  cairo) const
overridevirtual

draw this item into a cairo context

Reimplemented from minsky::Item.

Reimplemented in minsky::Ravel, and minsky::UserFunction.

Definition at line 230 of file operation.cc.

References minsky::flipped(), M_PI, and minsky::pow().

Referenced by minsky::DataOp::draw().

231  {
232  // if rotation is in 1st or 3rd quadrant, rotate as
233  // normal, otherwise flip the text so it reads L->R
234  const double angle=rotation() * M_PI / 180.0;
235  const bool textFlipped=flipped(rotation());
236  const float z=zoomFactor();
237 
238  {
239  const CairoSave cs(cairo);
240  cairo_scale(cairo,z,z);
241  iconDraw(cairo);
242  }
243 
244 
245  CairoSave cs(cairo);
246  cairo_rotate(cairo, angle);
247 
248  float l=OperationBase::l*z, r=OperationBase::r*z,
250 
251  if (fabs(l)<0.5*iWidth()*z) l=-0.5*iWidth()*z;
252  if (r<0.5*iWidth()*z) r=0.5*iWidth()*z;
253  if (h<0.5*iHeight()*z) h=0.5*iHeight()*z;
254 
255  cairo_move_to(cairo,-r,-h);
256  cairo_line_to(cairo,-r,h);
257  cairo_line_to(cairo,r,h);
258  cairo_line_to(cairo,r+2*z,0);
259  cairo_line_to(cairo,r,-h);
260 
261  cairo_close_path(cairo);
262 
263  cairo_set_source_rgb(cairo,0,0,1);
264  cairo_stroke_preserve(cairo);
265 
266  cairo::Path clipPath(cairo);
267 
268  // compute port coordinates relative to the icon's
269  // point of reference. Move outport 2 pixels right for ticket For ticket 362.
270  double x0=r, y0=0, x1=l, y1=numPorts() > 2? -h+3: 0,
271  x2=l, y2=numPorts() > 2? h-3: 0;
272 
273  if (textFlipped) swap(y1,y2);
274 
275  {
276  const CairoSave cs(cairo);
277  cairo_identity_matrix(cairo);
278  cairo_translate(cairo, x(), y());
279  cairo_rotate(cairo, angle);
280  cairo_user_to_device(cairo, &x0, &y0);
281  cairo_user_to_device(cairo, &x1, &y1);
282  cairo_user_to_device(cairo, &x2, &y2);
283  }
284 
285  if (numPorts()>0)
286  m_ports[0]->moveTo(x0, y0);
287  if (numPorts()>1)
288  {
289 #ifdef DISPLAY_POW_UPSIDE_DOWN
290  if (type()==OperationType::pow)
291  ports[1]->moveTo(x2, y2);
292  else
293 #endif
294  m_ports[1]->moveTo(x1, y1);
295  }
296 
297  if (numPorts()>2)
298  {
299 #ifdef DISPLAY_POW_UPSIDE_DOWN
300  if (type()==OperationType::pow)
301  ports[2]->moveTo(x1, y1);
302  else
303 #endif
304  m_ports[2]->moveTo(x2, y2);
305  }
306 
307  cs.restore(); // undo rotation
308  if (mouseFocus)
309  {
310  drawPorts(cairo);
311  displayTooltip(cairo,tooltip());
313  }
314 
315  cairo_new_path(cairo);
316  clipPath.appendToCurrent(cairo);
317  cairo_clip(cairo);
318  if (selected) drawSelected(cairo);
319  }
void drawPorts(cairo_t *cairo) const
Definition: item.cc:294
virtual void displayTooltip(cairo_t *, const std::string &) const
display tooltip text, eg on mouseover
Definition: item.cc:398
virtual float x() const
Definition: item.cc:107
virtual float y() const
Definition: item.cc:114
float iHeight() const
Definition: item.h:224
bool onResizeHandles
set to true to indicate mouse is ovcaler resize handles
Definition: item.h:175
virtual std::string const & tooltip() const
Definition: noteBase.h:36
virtual std::size_t numPorts() const =0
virtual float zoomFactor() const
Definition: item.cc:121
bool flipped(double rotation)
returns if the angle (in degrees) is in the second or third quadrant
Definition: geometry.h:102
static constexpr float l
Definition: operationBase.h:58
static void drawSelected(cairo_t *cairo)
Definition: item.cc:308
float iWidth() const
Definition: item.h:217
static constexpr float h
Definition: operationBase.h:58
#define M_PI
Definition: operation.cc:36
ItemPortVector m_ports
Definition: item.h:156
bool selected
true if selected for cut, copy or group operation
Definition: noteBase.h:32
virtual Type type() const =0
bool mouseFocus
true if target of a mouseover
Definition: noteBase.h:31
virtual void iconDraw(cairo_t *) const =0
visual representation of operation on the canvas
static constexpr float r
Definition: operationBase.h:58
virtual std::weak_ptr< Port > ports(std::size_t i) const
callback to be run when item deleted from group
Definition: item.h:180
void drawResizeHandles(cairo_t *cairo) const override
Definition: item.cc:355
double rotation() const
Definition: item.h:211
Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawUserFunction()

void minsky::OperationBase::drawUserFunction ( cairo_t *  cairo) const

Definition at line 143 of file operation.cc.

References minsky::DrawBinOp::drawPort(), minsky::DrawBinOp::drawSymbol(), minsky::flipped(), minsky::latexToPango(), M_PI, minsky::Rotate::x(), and minsky::Rotate::y().

Referenced by minsky::DataOp::draw(), and minsky::UserFunction::draw().

144  {
145  // if rotation is in 1st or 3rd quadrant, rotate as
146  // normal, otherwise flip the text so it reads L->R
147  const double angle=rotation() * M_PI / 180.0;
148  const bool textFlipped=flipped(rotation());
149  const float z=zoomFactor();
150 
151  auto& c=dynamic_cast<const NamedOp&>(*this);
152 
153  Pango pango(cairo);
154  pango.setFontSize(10.0*scaleFactor()*z);
155  pango.setMarkup(latexToPango(c.description()));
156  pango.angle=angle + (textFlipped? M_PI: 0);
157  const Rotate r(rotation()+ (textFlipped? 180: 0),0,0);
158 
159  // parameters of icon in userspace (unscaled) coordinates
160  float w, h, hoffs;
161  w=0.5*pango.width()+2*z;
162  h=0.5*pango.height()+4*z;
163  hoffs=pango.top()/z;
164 
165  {
166  const cairo::CairoSave cs(cairo);
167  cairo_move_to(cairo,r.x(-w+1,-h-hoffs+2*z), r.y(-w+1,-h-hoffs+2*z));
168  pango.show();
169  }
170 
171  cairo_rotate(cairo, angle);
172 
173  cairo_set_source_rgb(cairo,0,0,1);
174  cairo_move_to(cairo,-w,-h);
175  cairo_line_to(cairo,-w,h);
176  cairo_line_to(cairo,w,h);
177 
178  cairo_line_to(cairo,w+2*z,0);
179  cairo_line_to(cairo,w,-h);
180  cairo_close_path(cairo);
181  cairo::Path clipPath(cairo);
182  cairo_stroke(cairo);
183 
184  cairo_rotate(cairo,-angle); // undo rotation
185 
186  // set the output ports coordinates
187  // compute port coordinates relative to the icon's
188  // point of reference
189  const Rotate rr(rotation(),0,0);
190 
191  m_ports[0]->moveTo(x()+rr.x(w+2,0), y()+rr.y(w+2,0));
192  switch (numPorts())
193  {
194  case 1: break;
195  case 2:
196  m_ports[1]->moveTo(x()+rr.x(-w,0), y()+rr.y(-w,0));
197  break;
198  case 3: default:
199  m_ports[1]->moveTo(x()+rr.x(-w,0), y()+rr.y(-w,textFlipped? h-3: -h+3));
200  m_ports[2]->moveTo(x()+rr.x(-w,0), y()+rr.y(-w,textFlipped? -h+3: h-3));
201  break;
202  }
204  {
205  cairo_set_source_rgb(cairo,0,0,0);
206  DrawBinOp drawBinOp(cairo, zoomFactor());
207  drawBinOp.drawPort([&](){drawBinOp.drawSymbol("x");},-1.1*w,-1.1*h,rotation());
208  drawBinOp.drawPort([&](){drawBinOp.drawSymbol("y");},-1.1*w,1.1*h,rotation());
209  }
210  if (mouseFocus)
211  {
212  drawPorts(cairo);
213  displayTooltip(cairo,tooltip());
214  if (onResizeHandles) drawResizeHandles(cairo);
215  }
216  clipPath.appendToCurrent(cairo);
217  cairo_clip(cairo);
218  if (selected) drawSelected(cairo);
219  }
std::string latexToPango(const char *s)
Definition: latexMarkup.h:30
void drawPorts(cairo_t *cairo) const
Definition: item.cc:294
virtual void displayTooltip(cairo_t *, const std::string &) const
display tooltip text, eg on mouseover
Definition: item.cc:398
virtual float x() const
Definition: item.cc:107
virtual float y() const
Definition: item.cc:114
bool onResizeHandles
set to true to indicate mouse is ovcaler resize handles
Definition: item.h:175
virtual std::string const & tooltip() const
Definition: noteBase.h:36
virtual std::size_t numPorts() const =0
virtual float zoomFactor() const
Definition: item.cc:121
bool flipped(double rotation)
returns if the angle (in degrees) is in the second or third quadrant
Definition: geometry.h:102
static void drawSelected(cairo_t *cairo)
Definition: item.cc:308
float scaleFactor() const override
factor by which item has been resized
Definition: operation.cc:135
static constexpr float h
Definition: operationBase.h:58
#define M_PI
Definition: operation.cc:36
ItemPortVector m_ports
Definition: item.h:156
bool selected
true if selected for cut, copy or group operation
Definition: noteBase.h:32
virtual Type type() const =0
bool mouseFocus
true if target of a mouseover
Definition: noteBase.h:31
static constexpr float r
Definition: operationBase.h:58
void drawResizeHandles(cairo_t *cairo) const override
Definition: item.cc:355
double rotation() const
Definition: item.h:211
Here is the call graph for this function:
Here is the caller graph for this function:

◆ iconDraw()

virtual void minsky::OperationBase::iconDraw ( cairo_t *  ) const
pure virtual

visual representation of operation on the canvas

Implemented in minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, minsky::Operation< minsky::OperationType::integrate >, minsky::Operation< T >, minsky::Operation< OperationType::differentiate >, minsky::Operation< OperationType::copy >, minsky::Operation< OperationType::userFunction >, minsky::Operation< OperationType::time >, minsky::Operation< OperationType::ravel >, minsky::Operation< minsky::OperationType::data >, and minsky::Operation< minsky::OperationType::integrate >.

◆ multiWire()

bool minsky::OperationBase::multiWire ( ) const

Definition at line 85 of file operation.cc.

86  {
87  switch (type())
88  {
89  case add: case subtract:
90  case multiply: case divide:
91  case min: case max:
92  case and_: case or_:
93  return true;
94  default:
95  return false;
96  }
97  }
virtual Type type() const =0

◆ numPorts()

◆ operationCast() [1/2]

const OperationBase* minsky::OperationBase::operationCast ( ) const
inlineoverride

Definition at line 66 of file operationBase.h.

66 {return this;}

◆ operationCast() [2/2]

OperationBase* minsky::OperationBase::operationCast ( )
inlineoverride

Definition at line 67 of file operationBase.h.

67 {return this;}

◆ portValues()

string minsky::OperationBase::portValues ( ) const

returns a list of values the ports currently have

Definition at line 561 of file operation.cc.

References minsky::str().

562  {
563  string r="equations not yet constructed, please reset";
564  if (!m_ports.empty())
565  r="[out]="+str(m_ports[0]->value());
566  if (m_ports.size()>1)
567  r+=" [in1]="+ str(m_ports[1]->value());
568  if (m_ports.size()>2)
569  r+=" [in2]="+ str(m_ports[2]->value());
570  return r;
571  }
std::string str(T x)
utility function to create a string representation of a numeric type
Definition: str.h:33
ItemPortVector m_ports
Definition: item.h:156
static constexpr float r
Definition: operationBase.h:58
double value() const override
current value of output port
Definition: operation.cc:329
Here is the call graph for this function:

◆ resize()

void minsky::OperationBase::resize ( const LassoBox b)
overridevirtual

resize this item on the canvas

Reimplemented from minsky::Item.

Reimplemented in minsky::Ravel.

Definition at line 321 of file operation.cc.

References minsky::LassoBox::x0, minsky::LassoBox::x1, minsky::LassoBox::y0, and minsky::LassoBox::y1.

322  {
323  const float invZ=1/zoomFactor();
324  moveTo(0.5*(b.x0+b.x1), 0.5*(b.y0+b.y1));
325  iWidth(std::abs(b.x1-b.x0)*invZ);
326  iHeight(std::abs(b.y1-b.y0)*invZ);
327  }
float iHeight() const
Definition: item.h:224
virtual float zoomFactor() const
Definition: item.cc:121
float iWidth() const
Definition: item.h:217
void moveTo(float x, float y)
Definition: item.cc:256

◆ scaleFactor()

float minsky::OperationBase::scaleFactor ( ) const
overridevirtual

factor by which item has been resized

Reimplemented from minsky::Item.

Definition at line 135 of file operation.cc.

References f.

Referenced by minsky::IntOp::draw().

136  {
137  const float z=zoomFactor();
138  const float l=OperationBase::l*z, r=OperationBase::r*z,
140  return std::max(1.0f,std::min(0.5f*iWidth()*z/std::max(l,r),0.5f*iHeight()*z/h));
141  }
function f
Definition: canvas.m:1
float iHeight() const
Definition: item.h:224
virtual float zoomFactor() const
Definition: item.cc:121
static constexpr float l
Definition: operationBase.h:58
float iWidth() const
Definition: item.h:217
static constexpr float h
Definition: operationBase.h:58
static constexpr float r
Definition: operationBase.h:58
Here is the caller graph for this function:

◆ setCachedText()

void minsky::OperationBase::setCachedText ( cairo_t *  cairo,
const std::string &  text,
double  size 
) const
protected

check if cachedPango is up to date, and if not recreate

Definition at line 221 of file operation.cc.

222  {
223  if (cachedPango && cairo==cachedPango->cairoContext()) return;
224  cachedPango=make_shared<Pango>(cairo);
225  cachedPango->setMarkup(text);
226  cachedPango->setFontSize(size);
227  }
classdesc::Exclude< std::shared_ptr< ecolab::Pango > > cachedPango
Definition: operationBase.h:54

◆ type()

◆ units()

Units minsky::OperationBase::units ( bool  check = false) const
overridevirtual

compute the dimensional units

Parameters
check- if true, then perform consistency checks
Exceptions
ifcheck=true and dimensions inconsistent

Reimplemented from minsky::Item.

Reimplemented in minsky::Ravel, and minsky::UserFunction.

Definition at line 467 of file operation.cc.

468  {
469  // default operations are dimensionless, but check that inputs are also
470  switch (classify(type()))
471  {
472  case function: case reduction: case scan: case tensor:
473  {
474  if (check && !m_ports[1]->units(check).empty())
475  throw_error("function input not dimensionless");
476  return {};
477  }
478  case constop:
479  // Add % sign to units from input to % operator. Need the first conditional otherwise Minsky crashes
480  if (type()==percent && !m_ports[1]->wires().empty()) {
481  auto r=m_ports[1]->units(check);
482  if (auto vV=dynamic_cast<VariableValue*>(&m_ports[1]->wires()[0]->from()->item()))
483  {
484  vV->setUnits("%"+r.str());
485  vV->units.normalise();
486  return vV->units;
487  }
488  return r;
489  }
490  return {};
491  case binop:
492  return unitsBinOpCase(check);
493  case statistics:
494  switch (type())
495  {
496  case mean: case median: case stdDev:
497  return m_ports[1]->units(check);
498  case moment:
499  {
500  auto argUnits=m_ports[1]->units(check);
501  for (auto& i: argUnits)
502  i.second*=arg;
503  return argUnits;
504  }
505  case histogram:
506  return {};
507  case covariance:
508  {
509  auto argUnits=m_ports[1]->units(check);
510  for (auto& i: m_ports[2]->units(check))
511  {
512  argUnits.emplace(i.first,1); // ensure base unit is present
513  argUnits[i.first]*=i.second;
514  }
515  return argUnits;
516  }
517  case linearRegression:
518  return m_ports[1]->units(check);
519  case correlation:
520  return {};
521  default:
522  throw_error("Statistics operation does not have units() defined");
523  }
524  default:
525  if (check)
526  throw_error("Operation<"+OperationType::typeName(type())+">::units() should be overridden");
527  return {};
528  }
529  }
double arg
operation argument. For example, the offset used in a difference operator, or binsize in a binning op...
Definition: operationBase.h:92
Units units(bool check=false) const override
compute the dimensional units
Definition: operation.cc:467
static std::string typeName(int type)
return the symbolic name of type
void throw_error(const std::string &) const
mark item on canvas, then throw
Definition: item.cc:86
ItemPortVector m_ports
Definition: item.h:156
virtual Type type() const =0
Units unitsBinOpCase(bool check) const
Definition: operation.cc:394
static constexpr float r
Definition: operationBase.h:58
static Group classify(Type t)

◆ unitsBinOpCase()

Units minsky::OperationBase::unitsBinOpCase ( bool  check) const
private

Definition at line 394 of file operation.cc.

References f, minsky::anonymous_namespace{operation.cc}::fracPart(), MathDAG::log(), minsky::Units::normalise(), MathDAG::polygamma(), minsky::pow(), and minsky::UnitsExpressionWalker::units.

395  {
396  switch (type())
397  {
398  // these binops need to have dimensionless units
399  case log: case and_: case or_: case polygamma: case userFunction:
400 
401  if (check && !m_ports[1]->units(check).empty())
402  throw_error("function inputs not dimensionless");
403  return {};
404  case pow:
405  {
406  auto r=m_ports[1]->units(check);
407 
408  if (!r.empty())
409  {
410  if (!m_ports[2]->wires().empty())
411  if (auto v=dynamic_cast<VarConstant*>(&m_ports[2]->wires()[0]->from()->item()))
412  if (fracPart(v->value())==0)
413  {
414  for (auto& i: r) i.second*=v->value();
415  r.normalise();
416  return r;
417  }
418  if (check)
419  throw_error("dimensioned pow only possible if exponent is a constant integer");
420  }
421  return r;
422  }
423  // these binops must have compatible units
424  case le: case lt: case eq:
425  {
426  if (check)
427  CheckConsistent(*this);
428  return {};
429  }
430  case add: case subtract: case max: case min:
431  {
432  if (check)
433  return CheckConsistent(*this);
434  if (!m_ports[1]->wires().empty())
435  return m_ports[1]->wires()[0]->units(check);
436  if (!m_ports[2]->wires().empty())
437  return m_ports[2]->wires()[0]->units(check);
438  return {};
439  }
440  // multiply and divide are especially computed
441  case multiply: case divide:
442  {
443  Units units;
444  for (auto w: m_ports[1]->wires())
445  {
446  auto tmp=w->units(check);
447  for (auto& i: tmp)
448  units[i.first]+=i.second;
449  }
450  const int f=(type()==multiply)? 1: -1; //indices are negated for division
451  for (auto w: m_ports[2]->wires())
452  {
453  auto tmp=w->units(check);
454  for (auto& i: tmp)
455  units[i.first]+=f*i.second;
456  }
457  units.normalise();
458  return units;
459  }
460  default:
461  if (check)
462  throw_error("Operation<"+OperationType::typeName(type())+">::units() should be overridden");
463  return {};
464  }
465  }
function f
Definition: canvas.m:1
Units units(bool check=false) const override
compute the dimensional units
Definition: operation.cc:467
static std::string typeName(int type)
return the symbolic name of type
void throw_error(const std::string &) const
mark item on canvas, then throw
Definition: item.cc:86
ItemPortVector m_ports
Definition: item.h:156
virtual Type type() const =0
void normalise()
Definition: units.h:42
static constexpr float r
Definition: operationBase.h:58
Here is the call graph for this function:

◆ value()

double minsky::OperationBase::value ( ) const
overridevirtual

current value of output port

Reimplemented from minsky::Item.

Definition at line 329 of file operation.cc.

330  {
331  try
332  {
333  unique_ptr<ScalarEvalOp> e(ScalarEvalOp::create(type(),itemPtrFromThis()));
334  if (e)
335  switch (e->numArgs())
336  {
337  case 0: return e->evaluate(0,0);
338  case 1: return e->evaluate(m_ports[1]->value());
339  case 2: return e->evaluate(m_ports[1]->value(),m_ports[2]->value());
340  }
341  }
342  catch (...)
343  {/* absorb exception here - some operators cannot be evaluated this way*/}
344  return nan("");
345  }
static ScalarEvalOp * create(Type op, const ItemPtr &state)
factory method
Definition: evalOp.cc:617
ItemPtr itemPtrFromThis() const
return a shared_ptr to this
Definition: item.cc:447
ItemPortVector m_ports
Definition: item.h:156
virtual Type type() const =0
double value() const override
current value of output port
Definition: operation.cc:329

Friends And Related Function Documentation

◆ EvalOpBase

friend struct EvalOpBase
friend

Definition at line 104 of file operationBase.h.

◆ SchemaHelper

friend struct SchemaHelper
friend

Definition at line 105 of file operationBase.h.

Member Data Documentation

◆ arg

double minsky::OperationBase::arg =1

operation argument. For example, the offset used in a difference operator, or binsize in a binning op

Definition at line 92 of file operationBase.h.

Referenced by minsky::Operation< minsky::OperationType::integrate >::Operation().

◆ axis

std::string minsky::OperationBase::axis

axis selector in tensor operations

Definition at line 95 of file operationBase.h.

Referenced by minsky::Ravel::allSliceLabelsAxis(), minsky::Ravel::pickedSliceLabels(), and minsky::Ravel::pickSliceLabels().

◆ cachedPango

classdesc::Exclude<std::shared_ptr<ecolab::Pango> > minsky::OperationBase::cachedPango
mutableprotected

Definition at line 54 of file operationBase.h.

◆ h

◆ l

constexpr float minsky::OperationBase::l =-8
static

Definition at line 58 of file operationBase.h.

Referenced by minsky::IntOp::draw().

◆ r

constexpr float minsky::OperationBase::r =12
static

The documentation for this class was generated from the following files: