Example #1
0
        private void graph_creator_aux(IInputFormatInstance gif)
        {
            for (int i = 0; i < gif.ESIZE;)
            {
                if (gif.Target [i] != 0)                   // Será usada a forma canonica: i->j, onde i<j, i>0 j>0
                {
                    int s = gif.Source [i] < gif.Target [i] ? gif.Source [i] : gif.Target [i];
                    int t = gif.Target [i] > gif.Source [i] ? gif.Target [i] : gif.Source [i];
                    g.addVertex(s);
                    g.addVertex(t);
                    g.noSafeAdd(s, t);
                    i++;
                }
            }
            IIteratorInstance <IKVPair <IInteger, IInputFormat> > output_gifs_instance = (IIteratorInstance <IKVPair <IInteger, IInputFormat> >)Output_gif.Instance;
            IKVPairInstance <IInteger, IInputFormat> item = (IKVPairInstance <IInteger, IInputFormat>)Output_gif.createItem();

            ((IIntegerInstance)item.Key).Value = gif.PARTID;
            item.Value = gif;
            output_gifs_instance.put(item);          // Emite-se gif novamente para que a funcão de particionamento do conector receba a instancia PartitionTABLE.
        }                                            // Isso é necessário no caso de IKey ser do tipo IVertex.
Example #2
0
        private void graph_creator_aux(IInputFormatInstance gif)
        {
            for (int i = 0; i < gif.ESIZE;)
            {
                if (gif.Target [i] != 0)                   // Será usada a forma canonica: i->j, onde i<j, i>0 j>0
                {
                    int s = gif.Source [i] < gif.Target [i] ? gif.Source [i] : gif.Target [i];
                    int t = gif.Target [i] > gif.Source [i] ? gif.Target [i] : gif.Source [i];
                    g.addVertex(s);
                    g.addVertex(t);
                    g.noSafeAdd(s, t);                      //Usando noSafeAdd! Isso significa que erros no arquivo fonte não serão tratados.
                    i++;                                    //Ou seja, os dados serão inseridos da forma como chegam. Para tratamento, usa-se g.addEdge(s,t).
                }
            }
            IIteratorInstance <IKVPair <IInteger, IInputFormat> > output_gifs_instance = (IIteratorInstance <IKVPair <IInteger, IInputFormat> >)Output_gif.Instance;
            IKVPairInstance <IInteger, IInputFormat> item = (IKVPairInstance <IInteger, IInputFormat>)Output_gif.createItem();

            ((IIntegerInstance)item.Key).Value = gif.PARTID;
            item.Value = gif;
            output_gifs_instance.put(item);          // Emite-se gif novamente para que a funcão de particionamento do conector receba a instancia PartitionTABLE.
        }                                            // Isso é necessário no caso de IKey ser do tipo IVertex.