#include <fstream.h>
#include "Gsnitt_c.hh"

const int MAXBUF = 1024;

int main(int argc, char* const* argv) 
{
    try {

	//
	// Følgende er ikke applikasjonsspesifikk
	//

	// Initialize the ORB.
	CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);

	//
	// Få aksess til objektet
	//

	// Les objektreferanse fra fil
	ifstream in("ior.dat");
	char ior[MAXBUF];
	in.getline(ior, MAXBUF);
	in.close();

	// Konverter serialisert IOR til objekreferanse
	CORBA::Object_ptr obj = orb->string_to_object(ior);
	
	// Konverter til rett type
	Math_var m = Math::_narrow(obj);
	if (CORBA::is_nil(m)) {
	  cerr << "m is nil!" << endl;
	  exit(1);
	}
	Math_var n = Math::_nil();
	if (CORBA::is_nil(n)) {
	  cerr << "n is nil!" << endl;
	}
	
	//
	// Bruk objektet
	//

	CORBA::Double x = 12.45;
	CORBA::Double y = 32.51;
	CORBA::Double z = m->add(x, y);
	cout << "Resultat: " << x << " + " << y << " = " << z << endl;

    } catch(const CORBA::Exception& e) {
	cerr << e << endl;
	return 1;
    }

    return 0;
}
