Skip to content

File method_struct_value.hpp

File List > cubrid > src > method > method_struct_value.hpp

Go to the documentation of this file

/*
 *
 * Copyright 2016 CUBRID Corporation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */

#ifndef _METHOD_STRUCT_VALUE_HPP_
#define _METHOD_STRUCT_VALUE_HPP_

#include "packer.hpp"
#include "packable_object.hpp"

namespace cubmethod
{
  /*
   * cubmethod::dbvalue_java
   *
   * description
   *    javasp specialized packing for DB_VALUE
   *
   * how to use
   *    - packing
   *        DB_VALUE db_val;
   *        dbvalue_java sp_wrapper;
   *        sp_val.value = (DB_VALUE *) &db_val;
   *        sp_val.pack (serializator); // serializator is cubpacking::packer
   *
   *    - unpacking
   *        DB_VALUE db_val;
   *        dbvalue_java sp_wrapper;
   *        sp_val.value = &db_val[i];
   *        sp_val.unpack (deserializator); // deserializator is cubpacking::unpacker
   *
   * note
   *    - packing/unpacking shoudld should sync with CUBRIDPacker.java and CUBRIDUnpacker.java
   *
   */
  struct dbvalue_java : public cubpacking::packable_object
  {
    dbvalue_java ();

    void pack (cubpacking::packer &serializator) const override;
    void unpack (cubpacking::unpacker &deserializator) override;
    size_t get_packed_size (cubpacking::packer &serializator, std::size_t start_offset) const override;

    void pack_value_internal (cubpacking::packer &serializator, DB_VALUE &v) const;
    void unpack_value_interanl (cubpacking::unpacker &deserializator, DB_VALUE *v);
    size_t get_packed_value_size_internal (cubpacking::packer &serializator, std::size_t start_offset, DB_VALUE &v) const;

    DB_VALUE *value;
  };
} // namespace cubmethod

#endif // _METHOD_STRUCT_VALUE_HPP_