Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/netscape/tools/jmc/JavaImplHeaderGen.java

// Copyright (c) 1995 Netscape Communications Corporation. All rights reserved. 

package netscape.tools.jmc;

import netscape.tools.jmc.*;
import netscape.tools.jric.*;
import netscape.tools.ClassFileParser.*;
import java.io.*;
import java.util.Vector;

public 
class JavaImplHeaderGen extends JMCGenerator {

    public JavaImplHeaderGen(netscape.tools.jmc.Main global, ClassDef clazz) {
	super(global, clazz);
    }

    protected String getFileName() {
	return "M" + getImplName() + ".h";
    }

    protected String getHeaderString() {
	return clazz.name + " module C-language header file\n * Generated by jmc";
    }

    protected void generateOutput() throws IOException {
	int i;
	    
	String prefix = getImplName();

	out.println("#ifndef _M" + prefix + "_H_");
	out.println("#define _M" + prefix + "_H_\n");

	out.println("#include \"M" + clazz.getPrefix() + ".h\"");
	out.println("typedef struct " + getImplName()
                    + "\t" + getImplName() + ";\n");

	out.println("#ifdef __cplusplus");
	out.println("extern \"C\" {");
	out.println("#endif /* __cplusplus */\n");

	Vector interfaces = getInterfaces(clazz);

	printBlockComment("Factory Operations");

	out.println("JRI_PUBLIC_API(" + prefix + "*)");
	out.println(prefix + "Factory_Create(jint size);\n");

	out.println("#ifdef __cplusplus");
	out.println("} /* extern \"C\" */");
	out.println("#endif /* __cplusplus */\n");

	out.println("#endif /* _M" + prefix + "_H_ */");
    }

    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//
    
}