// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 2003
// IONA Technologies, Inc.
// Waltham, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 4.1.3

#ifndef __OB_TimeBase_h__
#define __OB_TimeBase_h__

#ifndef OB_IMPORT
#   ifdef OB_DLL
#      define OB_IMPORT __declspec(dllimport)
#   else
#      define OB_IMPORT /**/
#   endif
#endif


#include <OB/TimeBase_fwd.h>

#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined! Is <OB/CORBA.h> included?
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 4010300L)
#       error ORBacus version mismatch!
#   endif
#endif

namespace OBStubImpl_TimeBase
{

} // End of namespace OBStubImpl_TimeBase

namespace OBStubImpl_TimeBase
{

} // End of namespace OBStubImpl_TimeBase

//
// IDL:omg.org/TimeBase:1.0
//
namespace TimeBase
{

//
// IDL:omg.org/TimeBase/TimeT:1.0
//
typedef ::CORBA::ULongLong TimeT;
typedef ::CORBA::ULongLong_out TimeT_out;
OB_IMPORT extern OB::TypeCodeConst _tc_TimeT;

//
// IDL:omg.org/TimeBase/InaccuracyT:1.0
//
typedef ::CORBA::ULongLong InaccuracyT;
typedef ::CORBA::ULongLong_out InaccuracyT_out;
OB_IMPORT extern OB::TypeCodeConst _tc_InaccuracyT;

//
// IDL:omg.org/TimeBase/TdfT:1.0
//
typedef ::CORBA::Short TdfT;
typedef ::CORBA::Short_out TdfT_out;
OB_IMPORT extern OB::TypeCodeConst _tc_TdfT;

//
// IDL:omg.org/TimeBase/UtcT:1.0
//
struct UtcT;
typedef OB::FixVar< UtcT > UtcT_var;
typedef UtcT& UtcT_out;

struct UtcT
{
    typedef UtcT_var _var_type;

    TimeT time;
    ::CORBA::ULong inacclo;
    ::CORBA::UShort inacchi;
    TdfT tdf;

    void _OB_marshal(OB::OutputStreamImpl*) const;
    static void _OB_unmarshal(UtcT&, OB::InputStreamImpl*);
};

OB_IMPORT extern OB::TypeCodeConst _tc_UtcT;

//
// IDL:omg.org/TimeBase/IntervalT:1.0
//
struct IntervalT;
typedef OB::FixVar< IntervalT > IntervalT_var;
typedef IntervalT& IntervalT_out;

struct IntervalT
{
    typedef IntervalT_var _var_type;

    TimeT lower_bound;
    TimeT upper_bound;

    void _OB_marshal(OB::OutputStreamImpl*) const;
    static void _OB_unmarshal(IntervalT&, OB::InputStreamImpl*);
};

OB_IMPORT extern OB::TypeCodeConst _tc_IntervalT;

} // End of namespace TimeBase

//
// IDL:omg.org/TimeBase:1.0
//
namespace OBProxy_TimeBase
{

} // End of namespace OBProxy_TimeBase

//
// IDL:omg.org/TimeBase:1.0
//
namespace OBStubImpl_TimeBase
{

} // End of namespace OBStubImpl_TimeBase

//
// IDL:omg.org/TimeBase:1.0
//
namespace OBMarshalStubImpl_TimeBase
{

} // End of namespace OBMarshalStubImpl_TimeBase

//
// IDL:omg.org/TimeBase:1.0
//
namespace OBV_TimeBase
{

} // End of namespace OBV_TimeBase

//
// IDL:omg.org/TimeBase/UtcT:1.0
//
void operator<<=(::CORBA::Any&, TimeBase::UtcT*);
void operator<<=(::CORBA::Any&, const TimeBase::UtcT&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const TimeBase::UtcT*&);

inline void
operator<<=(::CORBA::Any_var& any, TimeBase::UtcT* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const TimeBase::UtcT& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const TimeBase::UtcT*& val)
{
    return any.in() >>= val;
}

//
// IDL:omg.org/TimeBase/IntervalT:1.0
//
void operator<<=(::CORBA::Any&, TimeBase::IntervalT*);
void operator<<=(::CORBA::Any&, const TimeBase::IntervalT&);
CORBA::Boolean operator>>=(const ::CORBA::Any&, const TimeBase::IntervalT*&);

inline void
operator<<=(::CORBA::Any_var& any, TimeBase::IntervalT* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, const TimeBase::IntervalT& val)
{
    any.inout() <<= val;
}

inline ::CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, const TimeBase::IntervalT*& val)
{
    return any.in() >>= val;
}

#endif
