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