예제 #1
0
        public void graph_creator()
        {
            IKVPairInstance <IInteger, IIterator <IInputFormat> > input_gifs_instance = (IKVPairInstance <IInteger, IIterator <IInputFormat> >)Graph_values.Instance;
            IIteratorInstance <IInputFormat> vgifs = (IIteratorInstance <IInputFormat>)input_gifs_instance.Value;

            object o;

            if (partition_own == null)
            {
                if (vgifs.fetch_next(out o))
                {
                    IInputFormatInstance gif = (IInputFormatInstance)o;
                    partition      = gif.PartitionTABLE;
                    partid         = gif.PARTID;
                    partition_size = gif.PARTITION_SIZE;
                    g = Graph.newInstance(gif.VSIZE);              // pega-se uma instancia do graph, com vertices do tipo inteiro, com tamanho previsto VSIZE
                    g.DataContainer.AllowingLoops         = false; // não serão premitidos laços
                    g.DataContainer.AllowingMultipleEdges = false; // não serão permitidas múltiplas arestas
                    graph_creator_aux(gif);                        // inserem-se dados no grafo
                    partition_own          = new bool[partition_size];
                    partition_own [partid] = true;
                }
            }
            while (vgifs.fetch_next(out o))
            {
                graph_creator_aux((IInputFormatInstance)o);
                partition_own [((IInputFormatInstance)o).PARTID] = true;
            }
        }