// Test suite part 1: base types, constant definitions

module SequenceOfStringModule {
  typedef sequence < string > strings;
};

module org
{
   module jacorb
   {
      module test
      {
         module idl
         {
            module basetypes
            {

               struct Utest {
                  short s;
                  unsigned short us;
                  long l;
                  unsigned long ul;
                  long long ll;
                  unsigned long long ull;
                  wstring ws;
               };


               // definitions
               typedef wstring MY_W;

               typedef long ASN1_Integer;
               typedef ASN1_Integer NotificationIdentifierHelper;

               interface foo {
                  typedef  string < 8 > octstring;

                  octstring afunction(in octstring asdf);
                  const wstring WS1 = L"Hello";
               };

               const long arrayBound = 011;

               const long LEN = 5;
               typedef string<LEN> ls;

               const wstring WS1 = L"Hello";
               const string S1 = "Hello";
               // const string WS1 = L"Hello"; // illegal, must be detected

               const float f_c1 = 1.11;
               const float f_c2 = 11e-2;
               const float f_c3 = 0.41;
               //       const float f_c4 = 1; // illegal

               const string A = "/*";
               const fixed ff = 1.1d;

               typedef long b[arrayBound];
               typedef octet array[2][3][4];



               typedef Object myObject;

               typedef fixed <5,2> first_fixed;

               // test uses

               struct ArrayContainer {
                  long    a1[arrayBound];
                  long    a2[7];
                  b       a3;
                  first_fixed f;
                  fixed <3,1> second_f;
                  myObject o;
               };

               interface N;

               interface Inter
               {
                  oneway void op();
                  wstring wop( out wstring  p );
               };

            };



            module TestX
            {
               interface M : ::org::jacorb::test::idl::basetypes::N
               {
                  void op();
                  basetypes::first_fixed get_fixed(out basetypes::first_fixed f);
               };
            };


            module basetypes
            {
               interface N
               {
                  void notify();
                  ::org::jacorb::test::idl::TestX::M getM();
               };
            };
         };
      };
   };
};
