• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
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
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 LIBABCKIT_SRC_ADAPTER_DYNAMIC_METADATA_INSPECT_DYNAMIC_H
17 #define LIBABCKIT_SRC_ADAPTER_DYNAMIC_METADATA_INSPECT_DYNAMIC_H
18 
19 #include "libabckit/include/c/metadata_core.h"
20 
21 namespace libabckit {
22 
23 // ========================================
24 // Module
25 // ========================================
26 
27 bool ModuleEnumerateAnonymousFunctionsDynamic(AbckitCoreModule *m, void *data,
28                                               bool (*cb)(AbckitCoreFunction *function, void *data));
29 
30 // ========================================
31 // Namespace
32 // ========================================
33 
34 AbckitString *NamespaceGetNameDynamic(AbckitCoreNamespace *n);
35 
36 // ========================================
37 // Class
38 // ========================================
39 
40 AbckitString *ClassGetNameDynamic(AbckitCoreClass *klass);
41 
42 // ========================================
43 // Function
44 // ========================================
45 
46 AbckitString *FunctionGetNameDynamic(AbckitCoreFunction *function);
47 void FileEnumerateTopLevelMethodsDynamic(AbckitFile *file, void *data,
48                                          bool (*cb)(AbckitCoreFunction *function, void *data));
49 AbckitGraph *CreateGraphFromFunctionDynamic(AbckitCoreFunction *function);
50 bool FunctionIsStaticDynamic(AbckitCoreFunction *function);
51 bool FunctionIsCtorDynamic(AbckitCoreFunction *function);
52 bool FunctionIsAnonymousDynamic(AbckitCoreFunction *function);
53 bool FunctionIsNativeDynamic(AbckitCoreFunction *function);
54 
55 // ========================================
56 // Annotation
57 // ========================================
58 
59 AbckitString *AnnotationInterfaceGetNameDynamic(AbckitCoreAnnotationInterface *ai);
60 
61 // ========================================
62 // String
63 // ========================================
64 
65 void StringToStringDynamic(AbckitFile *file, AbckitString *value, char *out, size_t *len);
66 
67 // ========================================
68 // ImportDescriptor
69 // ========================================
70 
71 AbckitString *ImportDescriptorGetNameDynamic(AbckitCoreImportDescriptor *i);
72 AbckitString *ImportDescriptorGetAliasDynamic(AbckitCoreImportDescriptor *i);
73 
74 // ========================================
75 // ExportDescriptor
76 // ========================================
77 
78 AbckitString *ExportDescriptorGetNameDynamic(AbckitCoreExportDescriptor *i);
79 AbckitString *ExportDescriptorGetAliasDynamic(AbckitCoreExportDescriptor *i);
80 
81 // ========================================
82 // Literal
83 // ========================================
84 
85 bool LiteralGetBoolDynamic(AbckitLiteral *lit);
86 uint8_t LiteralGetU8Dynamic(AbckitLiteral *lit);
87 uint16_t LiteralGetU16Dynamic(AbckitLiteral *lit);
88 uint16_t LiteralGetMethodAffiliateDynamic(AbckitLiteral *lit);
89 uint32_t LiteralGetU32Dynamic(AbckitLiteral *lit);
90 uint64_t LiteralGetU64Dynamic(AbckitLiteral *lit);
91 float LiteralGetFloatDynamic(AbckitLiteral *lit);
92 double LiteralGetDoubleDynamic(AbckitLiteral *lit);
93 AbckitLiteralArray *LiteralGetLiteralArrayDynamic(AbckitLiteral *lit);
94 AbckitString *LiteralGetStringDynamic(AbckitLiteral *lit);
95 AbckitLiteralTag LiteralGetTagDynamic(AbckitLiteral *lit);
96 bool LiteralArrayEnumerateElementsDynamic(AbckitLiteralArray *litArr, void *data,
97                                           bool (*cb)(AbckitFile *file, AbckitLiteral *lit, void *data));
98 
99 // ========================================
100 // Value
101 // ========================================
102 
103 AbckitType *ValueGetTypeDynamic(AbckitValue *value);
104 bool ValueGetU1Dynamic(AbckitValue *value);
105 double ValueGetDoubleDynamic(AbckitValue *value);
106 AbckitString *ValueGetStringDynamic(AbckitValue *value);
107 AbckitLiteralArray *ArrayValueGetLiteralArrayDynamic(AbckitValue *value);
108 
109 }  // namespace libabckit
110 
111 #endif
112