[Pipet Devel] Re: Ideas for network distributed objects

Jean-Marc Valin jean-marc.valin at hermes.usherb.ca
Fri Mar 24 19:41:22 EST 2000

> > > Am I getting everything wrong or could this XML representation of a GUI be
> > > handled by libglade? After all glade stores the GUI in XML and libglade can
> > > display it in an application.
> > >
> >
> > This would requiere translation of the XML code, Glade knows about Gtk+ and
> > GNOME widgets, not about nodes and relations.
> > But I think basically both use the same approach.
> :-) Again, there is some confusion here.  Jean-Marc and I are talking about
> the representation of a node's interface in XML.  You (and Brad) have been
> using the term 'XML representation' to mean the dataflow structure of a
> network.
> We should probably add 'of a node' or 'of a network' to this term to avoid
> confusion :-)

OK, I'll try to summerize the way XML is used in Overflow with an example:

<?xml version="1.0"?>

A document is a file and can contain many networks (it's the equivalent of a .c)

  <Network type="subnet" name="MAIN">

A network if the C equivalent of a function. Each document must contain a MAIN

    <Node name="node1" type="Constant" x="-294.000000" y="101.000000">
      <Parameter name="VALUE" type="subnet_param" value="IN"/>

This is a node definition. The name is arbitrary, while the type corresponds to
an Overflow node class. x and y are for the GUI. The parameters have to
correspond to what the node expects.

    <Node name="node5" type="MAIN_LOOP" x="-26.000000" y="108.000000">
      <Parameter name="FRAME_SIZE" type="int" value="256"/>
    <Node name="node2" type="ExecStream" x="-165.000000" y="98.000000">
      <Parameter name="COMMAND" type="string" value="cat"/>
    <Node name="node6" type="Constant" x="-162.000000" y="186.000000">
      <Parameter name="VALUE" type="string" value="frames"/>
    <Node name="node8" type="OutputStream" x="43.000000" y="190.000000"/>
    <Node name="node9" type="Save" x="243.000000" y="119.000000"/>
    <Link from="node2" output="OUTPUT" to="node5" input="INPUT"/>
    <Link from="node1" output="VALUE" to="node2" input="INPUT"/>
    <Link from="node6" output="VALUE" to="node8" input="INPUT"/>
    <Link from="node5" output="TRAIN_IN" to="node9" input="OBJECT"/>
    <Link from="node8" output="OUTPUT" to="node9" input="STREAM"/>

Links define which node is connected to which. Input and output names need to be
defined since nodes can have more than one input/output.

    <NetOutput name="OUTPUT" node="node9" terminal="OUTPUT"/>

NetOutput means which node (and which output of that node) will be used as the
output of the whole network. The same applies to NetInput and NetCondition.

  <Network type="iterator" name="MAIN_LOOP">
    <Node name="node1" type="AudioStream" x="-526.000000" y="93.000000">
      <Parameter name="LENGTH" type="subnet_param" value="FRAME_SIZE"/>
      <Parameter name="ENCODING" type="string" value="LIN16"/>
      <Parameter name="STREAM_TYPE" type="string" value="FILE"/>
    <Node name="node2" type="NotDone" x="-344.000000" y="45.000000"/>
    <Node name="node10" type="FrameAccumulator" x="-336.000000" y="131.000000">
      <Parameter name="LENGTH" type="int" value="256"/>
      <Parameter name="CACHEALL" type="int" value="1"/>
    <Link from="node1" output="OUTPUT" to="node2" input="INPUT"/>
    <Link from="node1" output="OUTPUT" to="node10" input="INPUT"/>
    <NetInput name="INPUT" node="node1" terminal="INPUT"/>
    <NetCondition name="CONDITION" node="node2" terminal="OUTPUT"/>
    <NetOutput name="TRAIN_IN" node="node10" terminal="OUTPUT"/>
  <Parameter name="IN" type="string" value="/data/ntt/french/*/*"/>



Jean-Marc Valin
Universite de Sherbrooke - Genie Electrique
valj01 at gel.usherb.ca

More information about the Pipet-Devel mailing list