2
* Copyright (c) 2024 Huawei Device Co., Ltd.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at
7
* http://www.apache.org/licenses/LICENSE-2.0
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
16
#include "DeserializerBase.h"
21
struct MyDeserializer : CustomDeserializer {
22
std::vector<string> supported;
24
supported.push_back("Function");
25
supported.push_back("Resource");
26
DeserializerBase::registerCustomDeserializer(this);
28
virtual bool supports(const string& kind) {
29
return std::find(supported.begin(), supported.end(), kind) != supported.end();
31
virtual Ark_CustomObject deserialize(DeserializerBase* deserializer, const string& kind) {
32
Ark_String value = deserializer->readString();
34
//fprintf(stderr, "native deserialize() for %s, got %s\n", kind.c_str(), value.chars);
35
Ark_CustomObject result;
36
strcpy(result.kind, "NativeError");
38
strcat(result.kind, kind.c_str());
43
MyDeserializer deserilizer;
45
struct DateDeserializer final : CustomDeserializer {
46
const std::vector<string> supported = {"Date"};
48
DeserializerBase::registerCustomDeserializer(this);
50
virtual bool supports(const string& kind) {
51
return std::find(supported.begin(), supported.end(), kind) != supported.end();
53
virtual Ark_CustomObject deserialize(DeserializerBase* deserializer, const string& kind) {
54
Ark_CustomObject result = {};
55
result.string = deserializer->readString();
56
strncpy(result.kind, kind.c_str(), sizeof(result.kind) - 1);
60
DateDeserializer dateDeserializer;