#pragma once
// AUTOGENERATED FILE: DO NOT EDIT

#include <cstdint>
#include "object.h"
#include "proxy_base.hpp"

class IIBcTuiReadData {
   public:
    virtual ~IIBcTuiReadData() {}

    virtual int32_t readData(uint32_t* ret_ptr, uint32_t cmd_id_val, const void* caller_ta_name_ptr, size_t caller_ta_name_len, const void* sned_data_ptr, size_t sned_data_len, void* resp_data_ptr, size_t resp_data_len, size_t* resp_data_lenout) = 0;

   protected:
    static const ObjectOp OP_readData = 0;
};

class IBcTuiReadData : public IIBcTuiReadData, public ProxyBase {
   public:
    IBcTuiReadData() {}
    IBcTuiReadData(Object impl) : ProxyBase(impl) {}
    virtual ~IBcTuiReadData() {}

    virtual int32_t readData(uint32_t* ret_ptr, uint32_t cmd_id_val, const void* caller_ta_name_ptr, size_t caller_ta_name_len, const void* sned_data_ptr, size_t sned_data_len, void* resp_data_ptr, size_t resp_data_len, size_t* resp_data_lenout) {
        ObjectArg a[5]={{{0,0}}};
        a[3].b = (ObjectBuf) {ret_ptr, sizeof(uint32_t)};
        a[0].b = (ObjectBuf) {&cmd_id_val, sizeof(uint32_t)};
        a[1].bi = (ObjectBufIn) {caller_ta_name_ptr, caller_ta_name_len * 1};
        a[2].bi = (ObjectBufIn) {sned_data_ptr, sned_data_len * 1};
        a[4].b = (ObjectBuf) {resp_data_ptr, resp_data_len * 1};

        int32_t result = invoke(OP_readData, a, ObjectCounts_pack(3, 2, 0, 0));
        if (Object_OK != result) { return result; }

        *resp_data_lenout = a[4].b.size / 1;

        return result;
    }

};

