Minsky
schema3::IdMap Struct Reference
Inheritance diagram for schema3::IdMap:
Inheritance graph
Collaboration diagram for schema3::IdMap:
Collaboration graph

Public Member Functions

int at (const void *o)
 
int operator[] (const void *o)
 
vector< int > at (const minsky::Item &item)
 
template<class T >
bool emplaceIf (vector< Item > &items, const minsky::Item *i)
 

Public Attributes

int nextId =0
 
set< minsky::RavelLockGroup * > lockGroups
 

Detailed Description

Definition at line 126 of file schema3.cc.

Member Function Documentation

◆ at() [1/2]

int schema3::IdMap::at ( const void *  o)
inline

Definition at line 130 of file schema3.cc.

130  {
131  auto i=find(o);
132  if (i==end())
133  return emplace(o,nextId++).first->second;
134  return i->second;
135  }

◆ at() [2/2]

vector<int> schema3::IdMap::at ( const minsky::Item item)
inline

Definition at line 137 of file schema3.cc.

References minsky::Item::ports(), and minsky::Item::portsSize().

137  {
138  vector<int> r;
139  for (size_t i=0; i<item.portsSize(); ++i)
140  r.push_back(at(item.ports(i).lock().get()));
141  return r;
142  }
int at(const void *o)
Definition: schema3.cc:130
std::size_t portsSize() const
number of ports
Definition: item.h:184
virtual std::weak_ptr< Port > ports(std::size_t i) const
callback to be run when item deleted from group
Definition: item.h:180
Here is the call graph for this function:

◆ emplaceIf()

template<class T >
bool schema3::IdMap::emplaceIf ( vector< Item > &  items,
const minsky::Item i 
)
inline

Definition at line 145 of file schema3.cc.

Referenced by schema3::PhillipsDiagram::PhillipsDiagram(), and schema3::Minsky::populateSchemaPublicationTabs().

146  {
147  auto* j=dynamic_cast<const T*>(i);
148  if (j)
149  {
150  // do not write invisible unwired GodleyIcon variables to the schema. For #1759.
151  if (auto v=i->variableCast())
152  if (auto g=dynamic_cast<minsky::GodleyIcon*>(v->controller.lock().get()))
153  for (size_t i=0; !g->variableDisplay() && i<2; ++i)
154  if (auto p=v->ports(i).lock())
155  if (p->wires().empty())
156  return j;
157 
158  items.emplace_back(at(i), *j, at(*j));
159  if (auto* g=dynamic_cast<const minsky::GodleyIcon*>(i))
160  {
161  // insert port references from flow/stock vars
162  items.back().ports.clear();
163  for (const auto& v: g->flowVars())
164  items.back().ports.push_back(at(v->ports(1).lock().get()));
165  for (const auto& v: g->stockVars())
166  items.back().ports.push_back(at(v->ports(0).lock().get()));
167  }
168  if (auto* d=dynamic_cast<const minsky::DataOp*>(i))
169  {
170  items.back().dataOpData=d->data;
171  items.back().name=d->description();
172  }
173  if (auto* s=dynamic_cast<const minsky::Sheet*>(i))
174  {
175  items.back().showSlice=s->showRowSlice;
176  items.back().showColSlice=s->showColSlice;
177  }
178  if (auto* d=dynamic_cast<const minsky::UserFunction*>(i))
179  {
180  items.back().expression=d->expression;
181  items.back().name=d->description();
182  }
183  if (auto* r=dynamic_cast<const minsky::Ravel*>(i))
184  {
185  if (r->lockGroup)
186  lockGroups.insert(r->lockGroup.get());
187  auto s=r->getState();
188  if (!s.handleStates.empty())
189  {
190  items.back().ravelState=s;
191  items.back().dimensions=r->axisDimensions;
192  items.back().editorMode=r->editorMode();
193  }
194  if (r->flipped) items.back().rotation=180;
195  }
196  if (auto* l=dynamic_cast<const minsky::Lock*>(i))
197  if (l->locked())
198  items.back().ravelState=l->lockedState;
199  }
200  return j;
201  }
int at(const void *o)
Definition: schema3.cc:130
set< minsky::RavelLockGroup * > lockGroups
Definition: schema3.cc:129
Here is the caller graph for this function:

◆ operator[]()

int schema3::IdMap::operator[] ( const void *  o)
inline

Definition at line 136 of file schema3.cc.

136 {return at(o);}
int at(const void *o)
Definition: schema3.cc:130

Member Data Documentation

◆ lockGroups

set<minsky::RavelLockGroup*> schema3::IdMap::lockGroups

Definition at line 129 of file schema3.cc.

◆ nextId

int schema3::IdMap::nextId =0

Definition at line 128 of file schema3.cc.


The documentation for this struct was generated from the following file: