/*************************************************************************** * * Copyright (c) 2015 Baidu, Inc. All Rights Reserved. * * 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. * **************************************************************************/ // Author: Pan Yunhong // #include "bigflow_python/objectors/float_serde.h" #include namespace baidu { namespace bigflow { namespace python { uint32_t FloatSerde::serialize(void* object, char* buffer, uint32_t buffer_size) { boost::python::object* py_obj = static_cast(object); double d = boost::python::extract(*py_obj); if (buffer_size >= sizeof(d)) { memcpy(buffer, (char *)&d, sizeof(d)); } return sizeof(d); } void* FloatSerde::deserialize(const char* buffer, uint32_t buffer_size) { CHECK_EQ(buffer_size, sizeof(double)); double d = 0.0; memcpy((char *)&d, buffer, buffer_size); return new boost::python::object(d); } void FloatSerde::release(void* object) { delete static_cast(object); } } // namespace python } // namespace bigflow } // namespace baidu