import java.io.*;

public class CaoJNI {

	/* --- Cao Native Interfases --- */
	public native int CreateCaoEngine();
	public native int AddController(String CtrlName, String ProvName, String Machine, String Param);
	public native int AddVariable(String VarName);
	public native String GetValue();
	public native void PutValue(String strVal);
	public native void FreeMemory();

	// コンストラクタ
	public void CaoJNI() {
	}

	// CaoJNIクラスの初期化処理
	public void init() {
		System.loadLibrary("CaoJNI");
	}

	public static void main (String args[]) {

		CaoJNI cao= new CaoJNI();
		cao.init();

		int iRet;

		// CaoEngineの作成
		iRet = cao.CreateCaoEngine();
		if (iRet != 0) {
			System.out.println("Can't make CaoEngine!");
			return;
		}

		iRet = cao.AddController("RC1", "CaoProv.Dummy", "", "");
		if (iRet != 0) {
			System.out.println("Error on OpenController: ErrorCode(" + Integer.toHexString(iRet) + ")");
			cao.FreeMemory();
			return;
		}

		iRet = cao.AddVariable("S11");
		if (iRet != 0) {
			System.out.println("Error on GetVariable: ErrorCode(" + Integer.toHexString(iRet) + ")");
			cao.FreeMemory();
			return;
		}

		cao.PutValue("Sample Data");
		System.out.println("PutValue Succeeded");

		String strRet = cao.GetValue();
		System.out.println(strRet);

		cao.FreeMemory();
	}
}
