Minsky: 3.17.0
typescriptAPI.cc File Reference
#include "function.h"
#include "typescriptAPI_base.h"
#include "minsky.h"
#include "minsky.tcd"
#include "assetClass.tcd"
#include "bookmark.h"
#include "bookmark.tcd"
#include "cairoSurfaceImage.tcd"
#include "callableFunction.tcd"
#include "canvas.tcd"
#include "CSVDialog.tcd"
#include "CSVParser.tcd"
#include "constMap.tcd"
#include "dataSpecSchema.tcd"
#include "dataOp.h"
#include "dataOp.tcd"
#include "dimension.tcd"
#include "engNotation.tcd"
#include "equationDisplay.tcd"
#include "evalGodley.tcd"
#include "eventInterface.tcd"
#include "fontDisplay.tcd"
#include "godleyIcon.tcd"
#include "godleyTable.tcd"
#include "godleyTableWindow.tcd"
#include "grid.tcd"
#include "group.tcd"
#include "handleLockInfo.tcd"
#include "hypercube.tcd"
#include "index.tcd"
#include "intOp.tcd"
#include "item.tcd"
#include "itemT.tcd"
#include "lasso.tcd"
#include "lock.tcd"
#include "noteBase.tcd"
#include "operation.tcd"
#include "operationBase.tcd"
#include "operationType.tcd"
#include "pango.tcd"
#include "pannableTab.tcd"
#include "phillipsDiagram.tcd"
#include "plot.tcd"
#include "plotOptions.tcd"
#include "plotWidget.tcd"
#include "polyRESTProcessBase.tcd"
#include "port.h"
#include "port.tcd"
#include "publication.tcd"
#include "pubTab.tcd"
#include "ravelState.tcd"
#include "renderNativeWindow.tcd"
#include "ravelWrap.tcd"
#include "rungeKutta.tcd"
#include "selection.tcd"
#include "sheet.tcd"
#include "simulation.tcd"
#include "slider.tcd"
#include "SVGItem.tcd"
#include "switchIcon.tcd"
#include "tensorInterface.tcd"
#include "tensorVal.tcd"
#include "units.tcd"
#include "userFunction.h"
#include "userFunction.tcd"
#include "variableInstanceList.h"
#include "variableInstanceList.tcd"
#include "variable.tcd"
#include "variablePane.tcd"
#include "variableType.tcd"
#include "variableValue.tcd"
#include "variableValues.tcd"
#include "wire.tcd"
#include "xvector.tcd"
#include "minsky_epilogue.h"

Go to the source code of this file.

Classes

struct  classdesc_access::access_typescriptAPI< classdesc::Exclude< T > >
 
struct  classdesc_access::access_typescriptAPI< classdesc::PolyPackBase >
 
struct  classdesc_access::access_typescriptAPI< classdesc::PolyPack< T > >
 
struct  classdesc_access::access_typescriptAPI< std::vector< civita::any > >
 
struct  classdesc_access::access_typescriptAPI< minsky::Optional< T > >
 
struct  classdesc::tn< civita::any >
 
struct  classdesc::tn< boost::geometry::model::d2::point_xy< T > >
 
struct  classdesc::tn< RESTProcess_t >
 
struct  classdesc::tn< std::chrono::time_point< C, D > >
 
struct  classdesc::tn< std::istream >
 
struct  classdesc::tn< minsky::PannableTab< minsky::EquationDisplay > >
 

Namespaces

 classdesc_access
 
 classdesc
 
 minsky
 

Functions

template<>
string classdesc::typeName< cairo_t > ()
 
template<>
string classdesc::typeName< cairo_surface_t > ()
 
template<class T , class Base >
enable_if< Not< is_map< Base > >, void >::T classdesc::typescriptAPI (typescriptAPI_t &t, const string &d)
 
Minsky & minsky::minsky ()
 global minsky object More...
 
void minsky::doOneEvent (bool idleTasksOnly)
 checks if any GUI events are waiting, and proces an event if so More...
 
void exportClass (const std::string &name, const minsky::typescriptAPI_ns::ClassType &klass)
 
int main ()
 

Function Documentation

◆ exportClass()

void exportClass ( const std::string &  name,
const minsky::typescriptAPI_ns::ClassType &  klass 
)

Definition at line 182 of file typescriptAPI.cc.

Referenced by main().

183 {
184  cout << "export class "+name+" extends "+(klass.super.empty()? "CppClass": klass.super)+" {\n";
185 
186  // properties
187  for (auto& prop: klass.properties)
188  cout << " "<<prop.first <<": "<<prop.second.type<<";\n";
189 
190  // constructor
191  if (!klass.super.empty())
192  {
193  cout << " constructor(prefix: string|"<<klass.super<<"){\n";
194  cout << " if (typeof prefix==='string')\n";
195  cout << " super(prefix";
196  if (!klass.valueType.empty())
197  cout <<","<<klass.valueType;
198  cout << ")\n";
199  cout << " else\n";
200  cout << " super(prefix.$prefix()";
201  if (!klass.valueType.empty())
202  cout <<","<<klass.valueType;
203  cout <<")\n";
204  }
205  else
206  {
207  cout << " constructor(prefix: string){\n";
208  cout << " super(prefix);\n";
209  }
210  for (auto& prop: klass.properties)
211  {
212  if (!prop.second.construction.empty())
213  cout << " this."<<prop.first<<"="<<prop.second.construction<<"\n";
214  else
215  cout << " this."<<prop.first<<"=new "<<prop.second.type<<"(this.$prefix()+'."<<prop.first<<"');\n";
216  }
217  cout << " }\n";
218 
219  // methods
220  for (auto& method: klass.methods)
221  {
222  cout << " async "<<method.first<<"(";
223  for (size_t i=0; i<method.second.args.size(); ++i)
224  {
225  if (i>0) cout<<",";
226  cout<<method.second.args[i].name<<": "<<method.second.args[i].type;
227  }
228  cout << "): Promise<"<<method.second.returnType<<"> {return this.$callMethod('"<<method.first<<"'";
229  for (auto& arg: method.second.args)
230  cout<<","<<arg.name;
231  cout<<");}\n";
232  }
233  cout << "}\n\n";
234 }
Here is the caller graph for this function:

◆ main()

int main ( )

Definition at line 236 of file typescriptAPI.cc.

References classdesc::typescriptAPI_t::addClass(), classdesc::typescriptAPI_t::addSubclass(), and exportClass().

237 {
238  typescriptAPI_t api;
239  api.addClass<Minsky>();
240 
241  // supporting types
242  api.addClass<Bookmark>();
243  api.addClass<Canvas::ZoomCrop>();
244  api.addClass<civita::Dimension>();
245  api.addClass<civita::Hypercube>();
246  api.addClass<civita::Index>();
247  api.addClass<civita::ITensor>();
248  api.addClass<civita::XVector>();
249  api.addClass<DataSpecSchema>();
250  api.addClass<ecolab::Plot::LineStyle>();
251  api.addClass<EngNotation>();
252  api.addClass<EventInterface>();
253  api.addClass<GroupItems>();
254  api.addClass<HandleLockInfo>();
255  api.addClass<Port>();
256  api.addClass<PubItem>();
257  api.addClass<ravel::HandleState>();
258  api.addClass<ravel::RavelState>();
259  api.addClass<Units>();
260  api.addClass<VariablePaneCell>();
261  api.addClass<VariableValue>();
262  api.addClass<VariableValues>();
263  api["VariableValues"].valueType="VariableValue";
264 
265  // Item subclasses
266  api.addSubclass<DataOp,Item>();
267  api.addSubclass<Group,Item>();
268  api.addSubclass<GodleyIcon,Item>();
269  api.addSubclass<IntOp,Item>();
270  api.addSubclass<Lock,Item>();
274  api.addSubclass<PlotWidget,Item>();
275  api.addSubclass<Ravel,Item>();
276  api.addSubclass<Sheet,Item>();
277  api.addSubclass<SwitchIcon,Item>();
280 
281  // RenderNativeWindow subclasses
287 
288 
289  // to prevent Group recursively calling itself on construction
290  api["Group"].properties.erase("parent");
291 
292  cout << "/*\nThis is a built file, please do not edit.\n";
293  cout << "See RESTService/typescriptAPI for more information.\n*/\n\n";
294  cout << "import {CppClass, Sequence, Container, Map, Pair} from './backend';\n\n";
295 
296  // dummy types
297  cout << "class minsky__dummy {}\n";
298  cout << "class minsky__EventInterface__KeyPressArgs {}\n";
299  cout << "class minsky__GodleyIcon__MoveCellArgs {}\n";
300  cout << "class minsky__RenderNativeWindow__RenderFrameArgs {}\n";
301  cout << "class minsky__VariableType__TypeT {}\n";
302  cout << "class civita__ITensor__Args {}\n";
303  cout << "class classdesc__json_pack_t {}\n";
304  cout << "class classdesc__pack_t {}\n";
305  cout << "class classdesc__RESTProcess_t {}\n";
306  cout << "class ecolab__cairo__Surface {}\n";
307  cout<<endl;
308 
309  // these need to be declared in a specific order
310  vector<string> exportFirst{"EventInterface","Item","OperationBase","RenderNativeWindow","VariableBase"};
311  for (auto& i: exportFirst) exportClass(i,api[i]);
312 
313  cout << "class minsky__Variable<T> extends VariableBase {}\n";
314 
315  // then export the rest
316  for (auto& i: api)
317  if (find(exportFirst.begin(), exportFirst.end(), i.first)==exportFirst.end())
318  exportClass(i.first, i.second);
319 
320  cout << "export var minsky=new Minsky('minsky');\n";
321 }
Mixin implementing common panning functionality in tabs.
Definition: pannableTab.h:36
represents the units (in sense of dimensional analysis) of a variable.
Definition: units.h:34
void exportClass(const std::string &name, const minsky::typescriptAPI_ns::ClassType &klass)
legacy data importer object
Definition: dataOp.h:28
a container item for a plot widget
Definition: plotWidget.h:45
Here is the call graph for this function: