

import java.util.*;
import Jakarta.util.FixDosOutputStream;
import Jakarta.util.Util2;
import java.io.*;

//--------------------------- Begin TOOL OUTPUT ------------------------
// the output of this tool is an instance of MMOutput.
// each MMOutput instance describes a unit of a collective.  By nesting 
// (or creating a hierarchy) of MMOutput instances, one can model 
// collectives of collectives.

// this is a variant of HashMap -- instead of overriding existing
// objects, copies are not stored.  This turns out to be important
// in Mixin-produced files, as the same method (unit) may appear
// in multiple places -- the first one counts.

public class MMHashMap extends HashMap {

    public void putUnique( String key,  MMOutput value ) {
        if ( !containsKey( key ) )
            super.put( key,value );
    }

    public void print( String indent ) { // for debugging

        List keys = new ArrayList( keySet() ) ;
        Collections.sort( keys ) ;

        for ( Iterator p = keys.iterator() ; p.hasNext() ; ) {
            MMOutput value = ( MMOutput ) get( ( String )p.next() ) ;
            value.print( indent +  MMGlobals.INDENT ) ;
        }
    }

}
