Initialize Tizen 2.3
[framework/web/wrt-plugins-common.git] / src_wearable / wrt-popup / wrt / PopupSerializer.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16
17 #include "PopupSerializer.h"
18
19 #include <memory>
20
21 namespace Wrt {
22 namespace PopupSerializer {
23 void appendArg(int arg, DPL::BinaryQueue &buffer)
24 {
25     size_t argSize = sizeof(arg);
26     buffer.AppendCopy(&argSize, sizeof(argSize));
27     buffer.AppendCopy(&arg, sizeof(arg));
28 }
29
30 void appendArg(const std::string &arg, DPL::BinaryQueue &buffer)
31 {
32     size_t argSize = arg.size();
33     buffer.AppendCopy(&argSize, sizeof(argSize));
34     buffer.AppendCopy(arg.c_str(), argSize);
35 }
36
37 int getIntArg(DPL::BinaryQueue &buffer)
38 {
39     int result;
40     size_t argSize;
41     buffer.FlattenConsume(&argSize, sizeof(argSize));
42     buffer.FlattenConsume(&result, argSize);
43     //TODO: what if argSize != sizeof(int)
44     //This should not be problem if this is run on the same machine.
45     return result;
46 }
47
48 std::string getStringArg(DPL::BinaryQueue &buffer)
49 {
50     std::string::size_type size;
51     buffer.FlattenConsume(&size, sizeof(size));
52     std::unique_ptr<char[]> str(new char[size]);
53     buffer.FlattenConsume(str.get(), size);
54     return std::string(str.get(), str.get() + size);
55 }
56 }
57 } // Wrt