// 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)); }