@name Client Examples
/*
	$Log: ExamplesClient.dxx,v $
	Revision 1.1  2001/02/23 20:29:05  karl
	documentation cleanup
	
*/

/** @name Client Coding Examples


<B>Example 1</B>

Declaration of a Class and the addition of qualifiers, properties,
and methods to that class.
Finally, the code converts the class defined to XML with print,
outputs it, restores it to a new class and compares the results.

This example is one of the tests defined for Pegasus in the
/commmon/tests directory

<PRE><CODE>
Example of Class Declaration

#include <Pegasus/ClassDecl.h>
#include <Pegasus/Name.h>

using namespace Pegasus;

void test01()
{
    ClassDecl class1("MyClass", "YourClass");

    class1
	.addQualifier(Qualifier("association", true))
	.addQualifier(Qualifier("q1", Uint32(55)))
	.addQualifier(Qualifier("q2", "Hello"))
	.addProperty(Property("message", "Hello"))
	.addProperty(Property("count", Uint32(77)))
	.addProperty(
	    Property("ref1", Reference("MyClass.key1=\"fred\""), "MyClass"))
	.addMethod(Method("isActive", Type::BOOLEAN)
	    .addParameter(Parameter("hostname", Type::STRING))
	    .addParameter(Parameter("port", Type::UINT32)));

    // class1.print();

    OutBuffer out;
    out << class1;

    InBuffer in(out.getData());
    ClassDecl tmp;
    in >> tmp;

    assert(class1.identical(tmp));
}

int main()
{
    try
    {
	test01();
    }
    catch (Exception& e)
    {
	cout << "Exception: " << e.getMessage() << endl;
    }

    cout << "+++++ passed all tests" << endl;

    return 0;
}

</CODE/>
</PRE>
*/