// Returns a no-op dependent node index from the given source. Provides a proxy flag for clients with // private state that needs to be updated from that source: uint addUpdateFlag(const vector<uint> & srcNodeInds) { uint stubIdx = dg.addNode(0,"stub").idx(); dg.addLink(fgLinkNoop,srcNodeInds,fgSvec(stubIdx)); return stubIdx; }
inline void fgDisplayMesh(const Fg3dMesh & mesh) {fgDisplayMeshes(fgSvec(mesh)); }
uint addUpdateFlag(uint srcNodeIdx) {return addUpdateFlag(fgSvec(srcNodeIdx)); }
void addLink( FgLink func, uint source, uint sink) {dg.addLink(func,fgSvec(source),fgSvec(sink)); }
void addLink( FgLink func, uint source, const vector<uint> & sinks) {dg.addLink(func,fgSvec(source),sinks); }
void addLink( FgLink func, const vector<uint> & sources, uint sink) {dg.addLink(func,sources,fgSvec(sink)); }
FgMatrixV<T> fgVectVert(T v0,T v1,T v2) {return FgMatrixV<T>(3,1,fgSvec(v0,v1,v2)); }
inline void fgSaveMeshAnyFormat(const Fg3dMesh & mesh,const FgString & fname) {fgSaveMeshesAnyFormat(fgSvec(mesh),fname); }
FgMatrixV<T> fgVectHoriz(T v0,T v1,T v2) {return FgMatrixV<T>(1,3,fgSvec(v0,v1,v2)); }
FgMatrixV<T> fgVectVert(T v0,T v1) {return FgMatrixV<T>(2,1,fgSvec(v0,v1)); }
FgMatrixV<T> fgVectHoriz(T v0,T v1) {return FgMatrixV<T>(1,2,fgSvec(v0,v1)); }
FgMatrixV<T> fgMatrix(uint nrows,uint ncols,T v0,T v1,T v2,T v3,T v4,T v5) {return FgMatrixV<T>(nrows,ncols,fgSvec(v0,v1,v2,v3,v4,v5)); }
FgMatrixV<T> fgMatrix(uint nrows,uint ncols,T v0,T v1,T v2) {return FgMatrixV<T>(nrows,ncols,fgSvec(v0,v1,v2)); }
// Usually only need to include the one last output of a code chunk as 'dst': inline bool fgNewer(const FgStrings & sources,const FgString & dst) {return fgNewer(sources,fgSvec(dst)); }
inline bool fgNewer(const FgString & src,const FgString & dst) {return fgNewer(fgSvec(src),fgSvec(dst)); }