Converts a graph to and from a subset of the Pajek format.
This class supports only a subset of the Pajek format, which is roughly described in the Pajek Reference Manual at http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/pajekman.pdf.

This is the supported subset:

*vertices N 1 "vertex 1 name" [x y z] 2 "vertex 2 name" [x y z] ... N "vertex N name" [x y z] *edges Vi Vj weight Vm Vn weight ... *edgeslist Vi Vj Vk ... Vm Vn ... ... *arcs Vi Vj weight Vm Vn weight ... *arcslist Vi Vj Vk ... Vm Vn ... ...

The delimiter is any combination of spaces and tabs.

All sections are optional. If there is at least one section, there must be one and only one *vertices section and it must be the first section. If edges are specified with *edges and *edgeslist sections only, the graph is considered undirected. If edges are specified with *arcs and *arcslist sections only, the graph is considered directed. If there are both undirected and directed edges, the graph is considered mixed.

Empty lines are ignored. Lines starting with slash-asterisk are considered comments and are skipped.

Everything is case-insensitive except the vertex names.

Inheritance: GraphAdapterBase, IGraphAdapter
    OpenObject
    (
        String sFileName,
        out Object oObject
    )
    {
        Debug.Assert( !String.IsNullOrEmpty(sFileName) );
        Debug.Assert( File.Exists(sFileName) );
        AssertValid();

        oObject = null;

        // Use a graph adapter to create a graph from the file.

        IGraphAdapter oPajekGraphAdapter = new PajekGraphAdapter();

        oObject = oPajekGraphAdapter.LoadGraphFromFile(sFileName);
    }
    SetUp()
    {
        m_oGraphAdapter = new PajekGraphAdapter();

        m_sTempFileName = Path.GetTempFileName();
    }