/*
* Copyright (c) Huawei Technologies Co., Ltd. 2026. All rights reserved.
* This source file is part of the Cangjie project, licensed under Apache-2.0
* with Runtime Library Exception.
*
* See https://cangjie-lang.cn/pages/LICENSE for license information.
*/
package std.reflect
// Array strip baseptr for intrinsic function: include/cangjie/CodeGen/CGUtils.h: REFLECT_INTRINSIC_FUNC
// TypeInfo
@Intrinsic
func isInterface(ti: CPointer<Unit>): Bool
@Intrinsic
func isStruct(ti: CPointer<Unit>): Bool
@Intrinsic
func isPrimitive(ti: CPointer<Unit>): Bool
@Intrinsic
func isClass(ti: CPointer<Unit>): Bool
@Intrinsic
func isTuple(ti: CPointer<Unit>): Bool
@Intrinsic
func isFunction(ti: CPointer<Unit>): Bool
@Intrinsic
func isEnum(ti: CPointer<Unit>): Bool
@Intrinsic
func isGeneric(ti: CPointer<Unit>): Bool
@Intrinsic
func isBox(ti: CPointer<Unit>): Bool
@Intrinsic
func getTypeArgs(ti: CPointer<Unit>): CPointer<Unit>
@Intrinsic
func getOrCreateTypeInfoForReflect(typeTemplate: CPointer<Unit>, typeArgs: Array<CPointer<Unit>>): CPointer<Unit>
@Intrinsic
func getTypeTemplate(name: CPointer<UInt8>): CPointer<Unit>
@Intrinsic
func checkMethodActualArgs(methodInfo: CPointer<Unit>, genericTypeArgs: Array<CPointer<Unit>>, args: Array<Any>): Bool
@Intrinsic
func methodEntryPointIsNull(methodInfo: CPointer<Unit>): Bool
@Intrinsic
func isReflectUnsupportedType(ti: CPointer<Unit>): Bool
@Intrinsic
func getTypeForAny(obj: Any): CPointer<Unit>
@Intrinsic
func getTypeByMangledName<T>(): CPointer<Unit>
@Intrinsic
func getTypeName(obj: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getTypeByQualifiedName(qualifiedName: CPointer<UInt8>): CPointer<Unit>
@Intrinsic
func getTypeQualifiedNameLength(ti: CPointer<Unit>): UInt32
@Intrinsic
func getTypeQualifiedName(ti: CPointer<Unit>, name: CPointer<UInt8>): Unit
@Intrinsic
func getNumOfInterface(ti: CPointer<Unit>): UInt32
@Intrinsic
func getInterface(ti: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func isSubType(ti: CPointer<Unit>, superTypeclassInfo: CPointer<Unit>): Bool
// return modifier flags, parsed in enum ModifierInfo
@Intrinsic
func getTypeInfoModifier(ti: CPointer<Unit>): UInt32
@Intrinsic
func getTypeInfoAnnotations(ti: CPointer<Unit>, arrayTi: CPointer<Unit>): Any
// ClassTypeInfo
@Intrinsic
func getObjClass(obj: Object): CPointer<Unit>
@Intrinsic
func getSuperTypeInfo(ti: CPointer<Unit>): CPointer<Unit>
// InstanceFunctionInfo & StaticFunctionInfo
@Intrinsic
func getNumOfInstanceMethodInfos(ti: CPointer<Unit>): UInt32
@Intrinsic
func getInstanceMethodInfo(ti: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getNumOfStaticMethodInfos(ti: CPointer<Unit>): UInt32
@Intrinsic
func getStaticMethodInfo(ti: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getMethodName(methodInfo: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getParameterInfo(methodInfo: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getMethodReturnType(methodInfo: CPointer<Unit>): CPointer<Unit>
@Intrinsic
func getMethodModifier(methodInfo: CPointer<Unit>): UInt32
@Intrinsic
func getMethodAnnotations(methodInfo: CPointer<Unit>, arrayTi: CPointer<Unit>): Any
@Intrinsic
func getNumOfActualParameters(methodInfo: CPointer<Unit>): UInt32
@Intrinsic
func getNumOfGenericParameters(methodInfo: CPointer<Unit>): UInt32
@Intrinsic
func getActualParameterInfo(methodInfo: CPointer<Unit>, idx: UInt32): CPointer<Unit>
@Intrinsic
func getGenericParameterInfo(methodInfo: CPointer<Unit>, idx: UInt32): CPointer<Unit>
// InstanceVariableInfo & StaticVariableInfo
@Intrinsic
func getNumOfInstanceFieldInfos(ti: CPointer<Unit>): UInt32
@Intrinsic
func getInstanceFieldInfo(ti: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getNumOfStaticFieldInfos(ti: CPointer<Unit>): UInt32
@Intrinsic
func getStaticFieldInfo(ti: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getStaticFieldName(fieldInfo: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getStaticFieldType(fieldInfo: CPointer<Unit>): CPointer<Unit>
@Intrinsic
func getStaticFieldAnnotations(fieldInfo: CPointer<Unit>, arrayTi: CPointer<Unit>): Any
@Intrinsic
func getInstanceFieldName(fieldInfo: CPointer<Unit>, declaringTypeInfo: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getInstanceFieldType(fieldInfo: CPointer<Unit>, declaringTypeInfo: CPointer<Unit>): CPointer<Unit>
@Intrinsic
func getInstanceFieldModifier(fieldInfo: CPointer<Unit>): UInt32
@Intrinsic
func getStaticFieldModifier(fieldInfo: CPointer<Unit>): UInt32
@Intrinsic
func getInstanceFieldAnnotations(fieldInfo: CPointer<Unit>, arrayTi: CPointer<Unit>): Any
@Intrinsic
func getInstanceFieldValue(fieldInfo: CPointer<Unit>, declaringTypeInfo: CPointer<Unit>, instance: Any): Any
@Intrinsic
func setInstanceFieldValue(fieldInfo: CPointer<Unit>, declaringTypeInfo: CPointer<Unit>, instance: Any, value: Any): Unit
@Intrinsic
func getStaticFieldValue(fieldInfo: CPointer<Unit>): Any
@Intrinsic
func setStaticFieldValue(fieldInfo: CPointer<Unit>, value: Any): Unit
// ParameterInfo
@Intrinsic
func getParameterIndex(parameterInfo: CPointer<Unit>): UInt32
@Intrinsic
func getParameterName(parameterInfo: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getParameterType(parameterInfo: CPointer<Unit>): CPointer<Unit>
@Intrinsic
func getParameterAnnotations(parameterInfo: CPointer<Unit>, arrayTi: CPointer<Unit>): Any
// ConstructorInfo
@Intrinsic
func applyCJInstanceMethod(methodInfo: CPointer<Unit>, instance: Any, args: Array<Any>): Any
@Intrinsic
func applyCJStaticMethod(methodInfo: CPointer<Unit>, args: Array<Any>, thisType: CPointer<Unit>): Any
@Intrinsic
func applyCJGenericInstanceMethod(methodInfo: CPointer<Unit>, instance: Any, genericTypeArgs: Array<CPointer<Unit>>,
args: Array<Any>): Any
@Intrinsic
func applyCJGenericStaticMethod(methodInfo: CPointer<Unit>, genericTypeArgs: Array<CPointer<Unit>>, args: Array<Any>,
thisType: CPointer<Unit>): Any
// for dynamic load
// success return 0, fail return -1
@Intrinsic
func getRelatedPackageInfo(packageInfo: CPointer<Unit>): CPointer<Unit>
@Intrinsic
func getPackageName(packageInfo: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getPackageNumOfTypeInfos(packageInfo: CPointer<Unit>): UInt32
@Intrinsic
func getPackageTypeInfo(packageInfo: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getPackageNumOfGlobalMethodInfos(packageInfo: CPointer<Unit>): UInt32
@Intrinsic
func getPackageGlobalMethodInfo(packageInfo: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func getPackageNumOfGlobalFieldInfos(packageInfo: CPointer<Unit>): UInt32
@Intrinsic
func getPackageGlobalFieldInfo(packageInfo: CPointer<Unit>, index: UInt32): CPointer<Unit>
@Intrinsic
func loadPackage(path: CPointer<UInt8>): CPointer<Unit>
@Intrinsic
func getPackageByQualifiedName(qualifiedName: CPointer<UInt8>): CPointer<Unit>
@Intrinsic
func getPackageVersion(packageInfo: CPointer<Unit>): CPointer<UInt8>
@Intrinsic
func getSubPackages(packageInfo: CPointer<Unit>, arrayTi: CPointer<Unit>): Any
// TupleTypeInfo
@Intrinsic
func getNumOfFieldTypes(ti: CPointer<Unit>): UInt32 /* return tuple elements count */
@Intrinsic
func getFieldTypes(ti: CPointer<Unit>): CPointer<Unit> /* return pointer to array of TypeInfo */
@Intrinsic
func newAndInitEnumTupleObject(ti: CPointer<Unit>, args: Array<Any>): Object /* create and init object of given TypeInfo, for TupleTypeInfo and EnumTypeInfo */
@Intrinsic
func getAssociatedValues(tupleObj: Any, arrayTi: CPointer<Unit>): Any /* return array of associated values*/
// FunctionTypeInfo
@Intrinsic
func getNumOfFunctionSignatureTypes(funcTi: CPointer<Unit>): UInt32 /* return function signature types count */
@Intrinsic
func getFunctionSignatureTypes(funcTi: CPointer<Unit>): CPointer<Unit> /* return pointer to array of function signature TypeInfo */
// EnumTypeInfo and EnumConstructorInfo
@Intrinsic
func getNumOfEnumConstructorInfos(enumTi: CPointer<Unit>): UInt32 /* return number of enum constructors */
@Intrinsic
func getEnumConstructorInfo(enumTi: CPointer<Unit>, index: UInt32): CPointer<Unit> /* return pointer to enum constructor info at index */
@Intrinsic
func getEnumConstructorName(enumCtorInfo: CPointer<Unit>): CPointer<UInt8> /* return enum constructor name */
@Intrinsic
func getEnumConstructorInfoFromAny(instance: Any): CPointer<Unit> /* return enum constructor info from enum instance */