#pragma once

#include "codec_gen.hh"
#include "params.hh"

class Base_Type;
class TTCN_Typedescriptor_t;
class TTCN_Buffer;

namespace LibHttp__JsonMessageBodyTypes {
  class JsonBody;
}

class json_codec: public codec_gen <LibHttp__JsonMessageBodyTypes::JsonBody, LibHttp__JsonMessageBodyTypes::JsonBody>
{
public:
  explicit json_codec() : codec_gen<LibHttp__JsonMessageBodyTypes::JsonBody, LibHttp__JsonMessageBodyTypes::JsonBody>() { };
  virtual ~json_codec() { };

  virtual int encode (const LibHttp__JsonMessageBodyTypes::JsonBody&, OCTETSTRING& data);
  virtual int decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody&, params* p_params = NULL);

}; // End of class json_codec
