#ifndef __X10_LANG_RUNTIME__X10RTMESSAGESTATS_H
#define __X10_LANG_RUNTIME__X10RTMESSAGESTATS_H

#include <x10rt.h>


#define X10_LANG_ANY_H_NODEPS
#include <x10/lang/Any.h>
#undef X10_LANG_ANY_H_NODEPS
#define X10_LANG_ANY_H_NODEPS
#include <x10/lang/Any.h>
#undef X10_LANG_ANY_H_NODEPS
#define X10_LANG_LONG_H_NODEPS
#include <x10/lang/Long.h>
#undef X10_LANG_LONG_H_NODEPS
namespace x10 { namespace lang { 
class Long;
} } 
namespace x10 { namespace lang { 
class String;
} } 
namespace x10 { namespace compiler { 
class Native;
} } 
namespace x10 { namespace compiler { 
class NonEscaping;
} } 
namespace x10 { namespace lang { 
class Int;
} } 
namespace x10 { namespace lang { 
class Boolean;
} } 
namespace x10 { namespace lang { 

class Runtime__X10RTMessageStats   {
    public:
    RTT_H_DECLS_STRUCT
    
    x10::lang::Runtime__X10RTMessageStats* operator->() { return this; }
    
    static x10aux::itable_entry _itables[2];
    
    x10aux::itable_entry* _getITables() { return _itables; }
    
    static x10::lang::Any::itable<x10::lang::Runtime__X10RTMessageStats > _itable_0;
    
    static x10aux::itable_entry _iboxitables[2];
    
    x10aux::itable_entry* _getIBoxITables() { return _iboxitables; }
    
    static x10::lang::Runtime__X10RTMessageStats _alloc(){x10::lang::Runtime__X10RTMessageStats t; return t; }
    
    void _constructor() {
        
        //#line 157 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": polyglot.ast.Empty_c
        ;
        
        //#line 157 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.AssignPropertyCall_c
        
        //#line 158 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(bytesSent) = ((x10_long) (((x10_int)0)));
        
        //#line 159 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(messagesSent) = ((x10_long) (((x10_int)0)));
        
        //#line 160 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(bytesReceived) = ((x10_long) (((x10_int)0)));
        
        //#line 161 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(messagesReceived) = ((x10_long) (((x10_int)0)));
    }
    static x10::lang::Runtime__X10RTMessageStats _make() {
        x10::lang::Runtime__X10RTMessageStats this_; 
        this_->_constructor();
        return this_;
    }
    
    void _constructor(x10_long bytesSent, x10_long messagesSent, x10_long bytesReceived,
                      x10_long messagesReceived) {
        
        //#line 163 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": polyglot.ast.Empty_c
        ;
        
        //#line 163 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.AssignPropertyCall_c
        
        //#line 164 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(bytesSent) = bytesSent;
        
        //#line 165 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(messagesSent) = messagesSent;
        
        //#line 166 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(bytesReceived) = bytesReceived;
        
        //#line 167 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": Eval of x10.ast.X10FieldAssign_c
        (*this)->FMGL(messagesReceived) = messagesReceived;
    }
    static x10::lang::Runtime__X10RTMessageStats _make(x10_long bytesSent,
                                                       x10_long messagesSent,
                                                       x10_long bytesReceived,
                                                       x10_long messagesReceived)
    {
        x10::lang::Runtime__X10RTMessageStats this_; 
        this_->_constructor(bytesSent, messagesSent, bytesReceived,
        messagesReceived);
        return this_;
    }
    
    x10_long FMGL(bytesSent);
    
    x10_long FMGL(messagesSent);
    
    x10_long FMGL(bytesReceived);
    
    x10_long FMGL(messagesReceived);
    
    x10::lang::Runtime__X10RTMessageStats __plus() {
        
        //#line 174 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.X10Return_c
        return (*this);
        
    }
    x10::lang::Runtime__X10RTMessageStats __minus() {
        
        //#line 175 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.X10Return_c
        return x10::lang::Runtime__X10RTMessageStats::_make(((x10_long) -((*this)->
                                                                            FMGL(bytesSent))),
                                                            ((x10_long) -((*this)->
                                                                            FMGL(messagesSent))),
                                                            ((x10_long) -((*this)->
                                                                            FMGL(bytesReceived))),
                                                            ((x10_long) -((*this)->
                                                                            FMGL(messagesReceived))));
        
    }
    x10::lang::Runtime__X10RTMessageStats __plus(x10::lang::Runtime__X10RTMessageStats that) {
        
        //#line 176 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.X10Return_c
        return x10::lang::Runtime__X10RTMessageStats::_make(((x10_long) (((*this)->
                                                                            FMGL(bytesSent)) + (that->
                                                                                                  FMGL(bytesSent)))),
                                                            ((x10_long) (((*this)->
                                                                            FMGL(messagesSent)) + (that->
                                                                                                     FMGL(messagesSent)))),
                                                            ((x10_long) (((*this)->
                                                                            FMGL(bytesReceived)) + (that->
                                                                                                      FMGL(bytesReceived)))),
                                                            ((x10_long) (((*this)->
                                                                            FMGL(messagesReceived)) + (that->
                                                                                                         FMGL(messagesReceived)))));
        
    }
    x10aux::ref<x10::lang::Any> __minus(x10::lang::Runtime__X10RTMessageStats that);
    x10aux::ref<x10::lang::String> toString();
    x10aux::ref<x10::lang::String> typeName();
    x10_int hashCode();
    x10_boolean equals(x10aux::ref<x10::lang::Any> other);
    x10_boolean equals(x10::lang::Runtime__X10RTMessageStats other) {
        
        //#line 156 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.X10Return_c
        return (x10aux::struct_equals((*this)->FMGL(bytesSent),
                                      other->FMGL(bytesSent))) &&
        (x10aux::struct_equals((*this)->FMGL(messagesSent),
                               other->FMGL(messagesSent))) &&
        (x10aux::struct_equals((*this)->FMGL(bytesReceived),
                               other->FMGL(bytesReceived))) &&
        (x10aux::struct_equals((*this)->FMGL(messagesReceived),
                               other->FMGL(messagesReceived)));
        
    }
    x10_boolean _struct_equals(x10aux::ref<x10::lang::Any> other);
    x10_boolean _struct_equals(x10::lang::Runtime__X10RTMessageStats other) {
        
        //#line 156 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.X10Return_c
        return (x10aux::struct_equals((*this)->FMGL(bytesSent),
                                      other->FMGL(bytesSent))) &&
        (x10aux::struct_equals((*this)->FMGL(messagesSent),
                               other->FMGL(messagesSent))) &&
        (x10aux::struct_equals((*this)->FMGL(bytesReceived),
                               other->FMGL(bytesReceived))) &&
        (x10aux::struct_equals((*this)->FMGL(messagesReceived),
                               other->FMGL(messagesReceived)));
        
    }
    x10::lang::Runtime__X10RTMessageStats x10__lang__Runtime__X10RTMessageStats____x10__lang__Runtime__X10RTMessageStats__this(
      ) {
        
        //#line 156 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/lang/Runtime.x10": x10.ast.X10Return_c
        return (*this);
        
    }
    
    static void _serialize(x10::lang::Runtime__X10RTMessageStats this_, x10aux::serialization_buffer& buf);
    
    static x10::lang::Runtime__X10RTMessageStats _deserialize(x10aux::deserialization_buffer& buf) {
        x10::lang::Runtime__X10RTMessageStats this_;
        this_->_deserialize_body(buf);
        return this_;
    }
    
    void _deserialize_body(x10aux::deserialization_buffer& buf);
    
};

} } 
#endif // X10_LANG_RUNTIME__X10RTMESSAGESTATS_H

namespace x10 { namespace lang { 
class Runtime__X10RTMessageStats;
} } 

#ifndef X10_LANG_RUNTIME__X10RTMESSAGESTATS_H_NODEPS
#define X10_LANG_RUNTIME__X10RTMESSAGESTATS_H_NODEPS
#ifndef X10_LANG_RUNTIME__X10RTMESSAGESTATS_H_GENERICS
#define X10_LANG_RUNTIME__X10RTMESSAGESTATS_H_GENERICS
#endif // X10_LANG_RUNTIME__X10RTMESSAGESTATS_H_GENERICS
#endif // __X10_LANG_RUNTIME__X10RTMESSAGESTATS_H_NODEPS
