• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2021-2022 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
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
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.
14 */
15
16#ifndef PANDA_ASSEMBLER_EXTENSIONS_REGISTER_EXTENSIONS_H
17#define PANDA_ASSEMBLER_EXTENSIONS_REGISTER_EXTENSIONS_H
18
19#include "extensions/extensions.h"
20#include "extensions/ecmascript_meta.h"
21
22namespace panda::pandasm::extensions {
23std::unique_ptr<panda::pandasm::RecordMetadata> MetadataExtension::CreateRecordMetadata(panda::panda_file::SourceLang lang)
24{
25    switch (lang) {
26        case Language::ECMASCRIPT:
27        case Language::JAVASCRIPT:
28        case Language::TYPESCRIPT:
29        case Language::ARKTS:
30            return std::make_unique<panda::pandasm::extensions::ecmascript::RecordMetadata>();
31        case Language::PANDA_ASSEMBLY:
32            return std::make_unique<panda::pandasm::RecordMetadata>();
33        default:
34            break;
35    }
36
37    UNREACHABLE();
38    return {};
39}
40
41std::unique_ptr<panda::pandasm::FieldMetadata> MetadataExtension::CreateFieldMetadata(panda::panda_file::SourceLang lang)
42{
43    switch (lang) {
44        case Language::ECMASCRIPT:
45        case Language::JAVASCRIPT:
46        case Language::TYPESCRIPT:
47        case Language::ARKTS:
48            return std::make_unique<panda::pandasm::FieldMetadata>();
49        case Language::PANDA_ASSEMBLY:
50            return std::make_unique<panda::pandasm::FieldMetadata>();
51        default:
52            break;
53    }
54
55    UNREACHABLE();
56    return {};
57}
58
59std::unique_ptr<panda::pandasm::FunctionMetadata> MetadataExtension::CreateFunctionMetadata(panda::panda_file::SourceLang lang)
60{
61    switch (lang) {
62        case Language::ECMASCRIPT:
63        case Language::JAVASCRIPT:
64        case Language::TYPESCRIPT:
65        case Language::ARKTS:
66            return std::make_unique<panda::pandasm::FunctionMetadata>();
67        case Language::PANDA_ASSEMBLY:
68            return std::make_unique<panda::pandasm::FunctionMetadata>();
69        default:
70            break;
71    }
72
73    UNREACHABLE();
74    return {};
75}
76
77std::unique_ptr<panda::pandasm::ParamMetadata> MetadataExtension::CreateParamMetadata(panda::panda_file::SourceLang lang)
78{
79    switch (lang) {
80        case Language::ECMASCRIPT:
81        case Language::JAVASCRIPT:
82        case Language::TYPESCRIPT:
83        case Language::ARKTS:
84            return std::make_unique<panda::pandasm::ParamMetadata>();
85        case Language::PANDA_ASSEMBLY:
86            return std::make_unique<panda::pandasm::ParamMetadata>();
87        default:
88            break;
89    }
90
91    UNREACHABLE();
92    return {};
93}
94}  // namespace panda::pandasm::extensions
95#endif  // PANDA_ASSEMBLER_EXTENSIONS_REGISTER_EXTENSIONS_H
96