#pragma once

#include "codec.hh"
#include "params.hh"

class Base_Type;
class TTCN_Typedescriptor_t;
class TTCN_Buffer;

namespace LibItsHttp__JsonMessageBodyTypes {
  class JsonBody;
}

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

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

}; // End of class json_codec
