[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/himdd/bigflow/master/bigflow_python/objectors/float_serde.cpp [Back]  [Original]

/***************************************************************************
 *
 * 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

Web Proxy Viewer  |  New URL  |  Original Page