#include <CORBA-SMALL.h>
#include <string.h>
#include "dictionary.h"
#include "wordpair.h"

int main( int argc, char *argv[] )
{
    // ORB initialization
    CORBA::ORB_var orb = CORBA::ORB_init( argc, argv, "mico-local-orb" );
    CORBA::BOA_var boa = orb->BOA_init (argc, argv, "mico-local-boa");

    // client side
    assert (argc == 2);
    CORBA::ORB::ObjectTag_var tag = CORBA::ORB::string_to_tag ("foobar");
    /*
     * bind to an instance of type "IDL:Dictionary:1.0" whose ReferenceData
     * equals "foobar".
     */
    CORBA::Object_var obj = orb->bind ("IDL:Dictionary:1.0", tag.in(), argv[1]);
    assert (!CORBA::is_nil (obj));
    Dictionary_var client = Dictionary::_narrow( obj );

	char words[][15] = {"absurdity", "blemish", "zebu", "enmity", "insanity"};
	
	for(int i=0; i<5; i++) 
	{
		wpair* w = client->lookup(words[i]);

		if(!w) 
		{
			cout << "Unable to open dictionary\n" << flush;
			exit(0);
		}
		if(string(w->meaning) == "") {
			cout << "'" << w->word << "' NOT in the dictionary.\n" << flush;
		}
		else {
			cout << "'" << w->word << "' means '" << w->meaning << "'\n" << flush;	
		}
	}

    return 0;
}
