From e1ca00a27b4d4f1265d0b2d0634422397aa377d8 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Wed, 11 Jun 2025 12:41:57 +0900 Subject: [PATCH] Implement Array HLL This HLL defines numerous functions, but only two are used in Dungeons & Dolls: NV_eneq and NV_sceq. --- CMakeLists.txt | 1 + src/ffi.c | 2 + src/hll/Array.c | 498 ++++++++++++++++++++++++++++++++++++++++++++++++ src/meson.build | 1 + 4 files changed, 502 insertions(+) create mode 100644 src/hll/Array.c diff --git a/CMakeLists.txt b/CMakeLists.txt index cae6ce1..91333d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,7 @@ target_sources(xsystem4 PRIVATE src/hll/AliceLogo4.c src/hll/AliceLogo5.c src/hll/AnteaterADVEngine.c + src/hll/Array.c src/hll/BanMisc.c src/hll/Bitarray.c src/hll/CalcTable.c diff --git a/src/ffi.c b/src/ffi.c index 5fa5b3c..94e349b 100644 --- a/src/ffi.c +++ b/src/ffi.c @@ -414,6 +414,7 @@ extern struct static_library lib_AliceLogo3; extern struct static_library lib_AliceLogo4; extern struct static_library lib_AliceLogo5; extern struct static_library lib_AnteaterADVEngine; +extern struct static_library lib_Array; extern struct static_library lib_BanMisc; extern struct static_library lib_Bitarray; extern struct static_library lib_CalcTable; @@ -522,6 +523,7 @@ static struct static_library *static_libraries[] = { &lib_AliceLogo4, &lib_AliceLogo5, &lib_AnteaterADVEngine, + &lib_Array, &lib_BanMisc, &lib_Bitarray, &lib_CalcTable, diff --git a/src/hll/Array.c b/src/hll/Array.c new file mode 100644 index 0000000..451cce9 --- /dev/null +++ b/src/hll/Array.c @@ -0,0 +1,498 @@ +/* Copyright (C) 2025 kichikuou + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +#include "hll.h" +#include "vm/page.h" + +static void check_array(struct page *array) +{ + if (array->type != ARRAY_PAGE || array->a_type != AIN_ARRAY_INT || array->array.rank != 1) + VM_ERROR("Not a flat integer array"); +} + +//void Array_NV_copy(struct page **nArray, int nNum); +//void Array_NV_add(struct page **nArray, int nNum); +//void Array_NV_sub(struct page **nArray, int nNum); +//void Array_NV_mul(struct page **nArray, int nNum); +//void Array_NV_div(struct page **nArray, int nNum); +//void Array_NV_and(struct page **nArray, int nNum); +//void Array_NV_or(struct page **nArray, int nNum); +//void Array_NV_xor(struct page **nArray, int nNum); +//void Array_NV_min(struct page **nArray, int nNum); +//void Array_NV_max(struct page **nArray, int nNum); +//void Array_NN_copy(struct page **nArray, struct page *nArrayS); +//void Array_NN_add(struct page **nArray, struct page *nArrayS); +//void Array_NN_sub(struct page **nArray, struct page *nArrayS); +//void Array_NN_mul(struct page **nArray, struct page *nArrayS); +//void Array_NN_div(struct page **nArray, struct page *nArrayS); +//void Array_NN_and(struct page **nArray, struct page *nArrayS); +//void Array_NN_or(struct page **nArray, struct page *nArrayS); +//void Array_NN_xor(struct page **nArray, struct page *nArrayS); +//void Array_NN_min(struct page **nArray, struct page *nArrayS); +//void Array_NN_max(struct page **nArray, struct page *nArrayS); +//void Array_NS_copy(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_add(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_sub(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_mul(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_div(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_and(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_or(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_xor(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_min(struct page **nArray, struct page *sArray, int nMember); +//void Array_NS_max(struct page **nArray, struct page *sArray, int nMember); +//void Array_SV_copy(struct page **sArray, int nMember, int nNum); +//void Array_SV_add(struct page **sArray, int nMember, int nNum); +//void Array_SV_sub(struct page **sArray, int nMember, int nNum); +//void Array_SV_mul(struct page **sArray, int nMember, int nNum); +//void Array_SV_div(struct page **sArray, int nMember, int nNum); +//void Array_SV_and(struct page **sArray, int nMember, int nNum); +//void Array_SV_or(struct page **sArray, int nMember, int nNum); +//void Array_SV_xor(struct page **sArray, int nMember, int nNum); +//void Array_SV_min(struct page **sArray, int nMember, int nNum); +//void Array_SV_max(struct page **sArray, int nMember, int nNum); +//void Array_SN_copy(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_add(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_sub(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_mul(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_div(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_and(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_or(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_xor(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_min(struct page **sArray, int nMember, struct page *nArray); +//void Array_SN_max(struct page **sArray, int nMember, struct page *nArray); +//void Array_SS_copy(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_add(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_sub(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_mul(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_div(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_and(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_or(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_xor(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_min(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_SS_max(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS); + +static int Array_NV_eneq(struct page *array, int num) +{ + if (!array) + return 0; + check_array(array); + int count = 0; + for (int i = 0; i < array->nr_vars; i++) { + if (array->values[i].i == num) + count++; + } + return count; +} + +//int Array_NV_enne(struct page *nArray, int nNum); +//int Array_NV_enlo(struct page *nArray, int nNum); +//int Array_NV_enhi(struct page *nArray, int nNum); +//int Array_NV_enra(struct page *nArray, int nMin, int nMax); +//int Array_NN_eneq(struct page *nArray, struct page *nArrayS); +//int Array_NN_enne(struct page *nArray, struct page *nArrayS); +//int Array_NN_enlo(struct page *nArray, struct page *nArrayS); +//int Array_NN_enhi(struct page *nArray, struct page *nArrayS); +//int Array_NS_eneq(struct page *nArray, struct page *sArray, int nMember); +//int Array_NS_enne(struct page *nArray, struct page *sArray, int nMember); +//int Array_NS_enlo(struct page *nArray, struct page *sArray, int nMember); +//int Array_NS_enhi(struct page *nArray, struct page *sArray, int nMember); +//int Array_SV_eneq(struct page *sArray, int nMember, int nNum); +//int Array_SV_enne(struct page *sArray, int nMember, int nNum); +//int Array_SV_enlo(struct page *sArray, int nMember, int nNum); +//int Array_SV_enhi(struct page *sArray, int nMember, int nNum); +//int Array_SV_enra(struct page *sArray, int nMember, int nMin, int nMax); +//int Array_SN_eneq(struct page *sArray, int nMember, struct page *nArray); +//int Array_SN_enne(struct page *sArray, int nMember, struct page *nArray); +//int Array_SN_enlo(struct page *sArray, int nMember, struct page *nArray); +//int Array_SN_enhi(struct page *sArray, int nMember, struct page *nArray); +//int Array_SS_eneq(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS); +//int Array_SS_enne(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS); +//int Array_SS_enlo(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS); +//int Array_SS_enhi(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS); +//void Array_NV_cheq(struct page **nArray, int nNum, int nChg); +//void Array_NV_chne(struct page **nArray, int nNum, int nChg); +//void Array_NV_chlo(struct page **nArray, int nNum, int nChg); +//void Array_NV_chhi(struct page **nArray, int nNum, int nChg); +//void Array_NV_chra(struct page **nArray, int nMin, int nMax, int nChg); +//void Array_NN_cheq(struct page **nArray, struct page *nArrayS, int nChg); +//void Array_NN_chne(struct page **nArray, struct page *nArrayS, int nChg); +//void Array_NN_chlo(struct page **nArray, struct page *nArrayS, int nChg); +//void Array_NN_chhi(struct page **nArray, struct page *nArrayS, int nChg); +//void Array_NS_cheq(struct page **nArray, struct page *sArray, int nMember, int nChg); +//void Array_NS_chne(struct page **nArray, struct page *sArray, int nMember, int nChg); +//void Array_NS_chlo(struct page **nArray, struct page *sArray, int nMember, int nChg); +//void Array_NS_chhi(struct page **nArray, struct page *sArray, int nMember, int nChg); +//void Array_SV_cheq(struct page **sArray, int nMember, int nNum, int nChg); +//void Array_SV_chne(struct page **sArray, int nMember, int nNum, int nChg); +//void Array_SV_chlo(struct page **sArray, int nMember, int nNum, int nChg); +//void Array_SV_chhi(struct page **sArray, int nMember, int nNum, int nChg); +//void Array_SV_chra(struct page **sArray, int nMember, int nMin, int nMax, int nChg); +//void Array_SN_cheq(struct page **sArray, int nMember, struct page *nArray, int nChg); +//void Array_SN_chne(struct page **sArray, int nMember, struct page *nArray, int nChg); +//void Array_SN_chlo(struct page **sArray, int nMember, struct page *nArray, int nChg); +//void Array_SN_chhi(struct page **sArray, int nMember, struct page *nArray, int nChg); +//void Array_SS_cheq(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS, int nChg); +//void Array_SS_chne(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS, int nChg); +//void Array_SS_chlo(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS, int nChg); +//void Array_SS_chhi(struct page **sArray, int nMember, struct page *sArrayS, int nMemberS, int nChg); +//void Array_NV_fweq(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fwne(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fwlo(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fwhi(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fwra(struct page *nArray, int nMin, int nMax, struct page **nArrayD); +//void Array_NV_faeq(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fane(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_falo(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fahi(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fara(struct page *nArray, int nMin, int nMax, struct page **nArrayD); +//void Array_NV_foeq(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fone(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_folo(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fohi(struct page *nArray, int nNum, struct page **nArrayD); +//void Array_NV_fora(struct page *nArray, int nMin, int nMax, struct page **nArrayD); +//void Array_NN_fweq(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fwne(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fwlo(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fwhi(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_faeq(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fane(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_falo(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fahi(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_foeq(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fone(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_folo(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NN_fohi(struct page *nArray, struct page *nArrayS, struct page **nArrayD); +//void Array_NS_fweq(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fwne(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fwlo(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fwhi(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_faeq(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fane(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_falo(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fahi(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_foeq(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fone(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_folo(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_NS_fohi(struct page *nArray, struct page *sArray, int nMember, struct page **nArrayD); +//void Array_SV_fweq(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fwne(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fwlo(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fwhi(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fwra(struct page *sArray, int nMember, int nMin, int nMax, struct page **nArrayD); +//void Array_SV_faeq(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fane(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_falo(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fahi(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fara(struct page *sArray, int nMember, int nMin, int nMax, struct page **nArrayD); +//void Array_SV_foeq(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fone(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_folo(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fohi(struct page *sArray, int nMember, int nNum, struct page **nArrayD); +//void Array_SV_fora(struct page *sArray, int nMember, int nMin, int nMax, struct page **nArrayD); +//void Array_SN_fweq(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fwne(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fwlo(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fwhi(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_faeq(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fane(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_falo(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fahi(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_foeq(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fone(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_folo(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SN_fohi(struct page *sArray, int nMember, struct page *nArrayS, struct page **nArrayD); +//void Array_SS_fweq(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fwne(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fwlo(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fwhi(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_faeq(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fane(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_falo(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fahi(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_foeq(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fone(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_folo(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); +//void Array_SS_fohi(struct page *sArray, int nMember, struct page *sArrayS, int nMemberS, struct page **nArrayD); + +static int Array_NV_sceq(struct page *array, int index, int num, int *out_index) +{ + if (!array) + return 0; + check_array(array); + + if (index >= 0) { + for (int i = index; i < array->nr_vars; i++) { + if (array->values[i].i == num) { + *out_index = i; + return 1; + } + } + } else { + // Negative index means backwards search + index &= 0x7fffffff; + if (index >= array->nr_vars) + return 0; + for (int i = index; i >= 0; --i) { + if (array->values[i].i == num) { + *out_index = i; + return 1; + } + } + } + return 0; + +} + +//int Array_NV_scne(struct page *nArray, int nIndex, int nNum, int *pnIndex); +//int Array_NV_sclo(struct page *nArray, int nIndex, int nNum, int *pnIndex); +//int Array_NV_schi(struct page *nArray, int nIndex, int nNum, int *pnIndex); +//int Array_NV_scra(struct page *nArray, int nIndex, int nMin, int nMax, int *pnIndex); +//int Array_SV_sceq(struct page *sArray, int nMember, int nIndex, int nNum, int *pnIndex); +//int Array_SV_scne(struct page *sArray, int nMember, int nIndex, int nNum, int *pnIndex); +//int Array_SV_sclo(struct page *sArray, int nMember, int nIndex, int nNum, int *pnIndex); +//int Array_SV_schi(struct page *sArray, int nMember, int nIndex, int nNum, int *pnIndex); +//int Array_SV_scra(struct page *sArray, int nMember, int nIndex, int nMin, int nMax, int *pnIndex); +//int Array_NN_sclowest(struct page *nArray, struct page **nArrayD, int *pnIndex); +//int Array_NN_schighest(struct page *nArray, struct page **nArrayD, int *pnIndex); +//int Array_NS_sclowest(struct page *nArray, struct page **sArray, int nMember, int *pnIndex); +//int Array_NS_schighest(struct page *nArray, struct page **sArray, int nMember, int *pnIndex); +//int Array_SN_sclowest(struct page *sArray, int nMember, struct page **nArray, int *pnIndex); +//int Array_SN_schighest(struct page *sArray, int nMember, struct page **nArray, int *pnIndex); +//int Array_SS_sclowest(struct page *sArray, int nMember, struct page **sArrayD, int nMemberS, int *pnIndex); +//int Array_SS_schighest(struct page *sArray, int nMember, struct page **sArrayD, int nMemberS, int *pnIndex); +//int Array_VN_add(struct page *nArray); +//int Array_VN_and(struct page *nArray); +//int Array_VN_or(struct page *nArray); +//int Array_VS_add(struct page *sArray, int nMember); +//int Array_VS_and(struct page *sArray, int nMember); +//int Array_VS_or(struct page *sArray, int nMember); + +HLL_LIBRARY(Array, + HLL_TODO_EXPORT(NV_copy, Array_NV_copy), + HLL_TODO_EXPORT(NV_add, Array_NV_add), + HLL_TODO_EXPORT(NV_sub, Array_NV_sub), + HLL_TODO_EXPORT(NV_mul, Array_NV_mul), + HLL_TODO_EXPORT(NV_div, Array_NV_div), + HLL_TODO_EXPORT(NV_and, Array_NV_and), + HLL_TODO_EXPORT(NV_or, Array_NV_or), + HLL_TODO_EXPORT(NV_xor, Array_NV_xor), + HLL_TODO_EXPORT(NV_min, Array_NV_min), + HLL_TODO_EXPORT(NV_max, Array_NV_max), + HLL_TODO_EXPORT(NN_copy, Array_NN_copy), + HLL_TODO_EXPORT(NN_add, Array_NN_add), + HLL_TODO_EXPORT(NN_sub, Array_NN_sub), + HLL_TODO_EXPORT(NN_mul, Array_NN_mul), + HLL_TODO_EXPORT(NN_div, Array_NN_div), + HLL_TODO_EXPORT(NN_and, Array_NN_and), + HLL_TODO_EXPORT(NN_or, Array_NN_or), + HLL_TODO_EXPORT(NN_xor, Array_NN_xor), + HLL_TODO_EXPORT(NN_min, Array_NN_min), + HLL_TODO_EXPORT(NN_max, Array_NN_max), + HLL_TODO_EXPORT(NS_copy, Array_NS_copy), + HLL_TODO_EXPORT(NS_add, Array_NS_add), + HLL_TODO_EXPORT(NS_sub, Array_NS_sub), + HLL_TODO_EXPORT(NS_mul, Array_NS_mul), + HLL_TODO_EXPORT(NS_div, Array_NS_div), + HLL_TODO_EXPORT(NS_and, Array_NS_and), + HLL_TODO_EXPORT(NS_or, Array_NS_or), + HLL_TODO_EXPORT(NS_xor, Array_NS_xor), + HLL_TODO_EXPORT(NS_min, Array_NS_min), + HLL_TODO_EXPORT(NS_max, Array_NS_max), + HLL_TODO_EXPORT(SV_copy, Array_SV_copy), + HLL_TODO_EXPORT(SV_add, Array_SV_add), + HLL_TODO_EXPORT(SV_sub, Array_SV_sub), + HLL_TODO_EXPORT(SV_mul, Array_SV_mul), + HLL_TODO_EXPORT(SV_div, Array_SV_div), + HLL_TODO_EXPORT(SV_and, Array_SV_and), + HLL_TODO_EXPORT(SV_or, Array_SV_or), + HLL_TODO_EXPORT(SV_xor, Array_SV_xor), + HLL_TODO_EXPORT(SV_min, Array_SV_min), + HLL_TODO_EXPORT(SV_max, Array_SV_max), + HLL_TODO_EXPORT(SN_copy, Array_SN_copy), + HLL_TODO_EXPORT(SN_add, Array_SN_add), + HLL_TODO_EXPORT(SN_sub, Array_SN_sub), + HLL_TODO_EXPORT(SN_mul, Array_SN_mul), + HLL_TODO_EXPORT(SN_div, Array_SN_div), + HLL_TODO_EXPORT(SN_and, Array_SN_and), + HLL_TODO_EXPORT(SN_or, Array_SN_or), + HLL_TODO_EXPORT(SN_xor, Array_SN_xor), + HLL_TODO_EXPORT(SN_min, Array_SN_min), + HLL_TODO_EXPORT(SN_max, Array_SN_max), + HLL_TODO_EXPORT(SS_copy, Array_SS_copy), + HLL_TODO_EXPORT(SS_add, Array_SS_add), + HLL_TODO_EXPORT(SS_sub, Array_SS_sub), + HLL_TODO_EXPORT(SS_mul, Array_SS_mul), + HLL_TODO_EXPORT(SS_div, Array_SS_div), + HLL_TODO_EXPORT(SS_and, Array_SS_and), + HLL_TODO_EXPORT(SS_or, Array_SS_or), + HLL_TODO_EXPORT(SS_xor, Array_SS_xor), + HLL_TODO_EXPORT(SS_min, Array_SS_min), + HLL_TODO_EXPORT(SS_max, Array_SS_max), + HLL_EXPORT(NV_eneq, Array_NV_eneq), + HLL_TODO_EXPORT(NV_enne, Array_NV_enne), + HLL_TODO_EXPORT(NV_enlo, Array_NV_enlo), + HLL_TODO_EXPORT(NV_enhi, Array_NV_enhi), + HLL_TODO_EXPORT(NV_enra, Array_NV_enra), + HLL_TODO_EXPORT(NN_eneq, Array_NN_eneq), + HLL_TODO_EXPORT(NN_enne, Array_NN_enne), + HLL_TODO_EXPORT(NN_enlo, Array_NN_enlo), + HLL_TODO_EXPORT(NN_enhi, Array_NN_enhi), + HLL_TODO_EXPORT(NS_eneq, Array_NS_eneq), + HLL_TODO_EXPORT(NS_enne, Array_NS_enne), + HLL_TODO_EXPORT(NS_enlo, Array_NS_enlo), + HLL_TODO_EXPORT(NS_enhi, Array_NS_enhi), + HLL_TODO_EXPORT(SV_eneq, Array_SV_eneq), + HLL_TODO_EXPORT(SV_enne, Array_SV_enne), + HLL_TODO_EXPORT(SV_enlo, Array_SV_enlo), + HLL_TODO_EXPORT(SV_enhi, Array_SV_enhi), + HLL_TODO_EXPORT(SV_enra, Array_SV_enra), + HLL_TODO_EXPORT(SN_eneq, Array_SN_eneq), + HLL_TODO_EXPORT(SN_enne, Array_SN_enne), + HLL_TODO_EXPORT(SN_enlo, Array_SN_enlo), + HLL_TODO_EXPORT(SN_enhi, Array_SN_enhi), + HLL_TODO_EXPORT(SS_eneq, Array_SS_eneq), + HLL_TODO_EXPORT(SS_enne, Array_SS_enne), + HLL_TODO_EXPORT(SS_enlo, Array_SS_enlo), + HLL_TODO_EXPORT(SS_enhi, Array_SS_enhi), + HLL_TODO_EXPORT(NV_cheq, Array_NV_cheq), + HLL_TODO_EXPORT(NV_chne, Array_NV_chne), + HLL_TODO_EXPORT(NV_chlo, Array_NV_chlo), + HLL_TODO_EXPORT(NV_chhi, Array_NV_chhi), + HLL_TODO_EXPORT(NV_chra, Array_NV_chra), + HLL_TODO_EXPORT(NN_cheq, Array_NN_cheq), + HLL_TODO_EXPORT(NN_chne, Array_NN_chne), + HLL_TODO_EXPORT(NN_chlo, Array_NN_chlo), + HLL_TODO_EXPORT(NN_chhi, Array_NN_chhi), + HLL_TODO_EXPORT(NS_cheq, Array_NS_cheq), + HLL_TODO_EXPORT(NS_chne, Array_NS_chne), + HLL_TODO_EXPORT(NS_chlo, Array_NS_chlo), + HLL_TODO_EXPORT(NS_chhi, Array_NS_chhi), + HLL_TODO_EXPORT(SV_cheq, Array_SV_cheq), + HLL_TODO_EXPORT(SV_chne, Array_SV_chne), + HLL_TODO_EXPORT(SV_chlo, Array_SV_chlo), + HLL_TODO_EXPORT(SV_chhi, Array_SV_chhi), + HLL_TODO_EXPORT(SV_chra, Array_SV_chra), + HLL_TODO_EXPORT(SN_cheq, Array_SN_cheq), + HLL_TODO_EXPORT(SN_chne, Array_SN_chne), + HLL_TODO_EXPORT(SN_chlo, Array_SN_chlo), + HLL_TODO_EXPORT(SN_chhi, Array_SN_chhi), + HLL_TODO_EXPORT(SS_cheq, Array_SS_cheq), + HLL_TODO_EXPORT(SS_chne, Array_SS_chne), + HLL_TODO_EXPORT(SS_chlo, Array_SS_chlo), + HLL_TODO_EXPORT(SS_chhi, Array_SS_chhi), + HLL_TODO_EXPORT(NV_fweq, Array_NV_fweq), + HLL_TODO_EXPORT(NV_fwne, Array_NV_fwne), + HLL_TODO_EXPORT(NV_fwlo, Array_NV_fwlo), + HLL_TODO_EXPORT(NV_fwhi, Array_NV_fwhi), + HLL_TODO_EXPORT(NV_fwra, Array_NV_fwra), + HLL_TODO_EXPORT(NV_faeq, Array_NV_faeq), + HLL_TODO_EXPORT(NV_fane, Array_NV_fane), + HLL_TODO_EXPORT(NV_falo, Array_NV_falo), + HLL_TODO_EXPORT(NV_fahi, Array_NV_fahi), + HLL_TODO_EXPORT(NV_fara, Array_NV_fara), + HLL_TODO_EXPORT(NV_foeq, Array_NV_foeq), + HLL_TODO_EXPORT(NV_fone, Array_NV_fone), + HLL_TODO_EXPORT(NV_folo, Array_NV_folo), + HLL_TODO_EXPORT(NV_fohi, Array_NV_fohi), + HLL_TODO_EXPORT(NV_fora, Array_NV_fora), + HLL_TODO_EXPORT(NN_fweq, Array_NN_fweq), + HLL_TODO_EXPORT(NN_fwne, Array_NN_fwne), + HLL_TODO_EXPORT(NN_fwlo, Array_NN_fwlo), + HLL_TODO_EXPORT(NN_fwhi, Array_NN_fwhi), + HLL_TODO_EXPORT(NN_faeq, Array_NN_faeq), + HLL_TODO_EXPORT(NN_fane, Array_NN_fane), + HLL_TODO_EXPORT(NN_falo, Array_NN_falo), + HLL_TODO_EXPORT(NN_fahi, Array_NN_fahi), + HLL_TODO_EXPORT(NN_foeq, Array_NN_foeq), + HLL_TODO_EXPORT(NN_fone, Array_NN_fone), + HLL_TODO_EXPORT(NN_folo, Array_NN_folo), + HLL_TODO_EXPORT(NN_fohi, Array_NN_fohi), + HLL_TODO_EXPORT(NS_fweq, Array_NS_fweq), + HLL_TODO_EXPORT(NS_fwne, Array_NS_fwne), + HLL_TODO_EXPORT(NS_fwlo, Array_NS_fwlo), + HLL_TODO_EXPORT(NS_fwhi, Array_NS_fwhi), + HLL_TODO_EXPORT(NS_faeq, Array_NS_faeq), + HLL_TODO_EXPORT(NS_fane, Array_NS_fane), + HLL_TODO_EXPORT(NS_falo, Array_NS_falo), + HLL_TODO_EXPORT(NS_fahi, Array_NS_fahi), + HLL_TODO_EXPORT(NS_foeq, Array_NS_foeq), + HLL_TODO_EXPORT(NS_fone, Array_NS_fone), + HLL_TODO_EXPORT(NS_folo, Array_NS_folo), + HLL_TODO_EXPORT(NS_fohi, Array_NS_fohi), + HLL_TODO_EXPORT(SV_fweq, Array_SV_fweq), + HLL_TODO_EXPORT(SV_fwne, Array_SV_fwne), + HLL_TODO_EXPORT(SV_fwlo, Array_SV_fwlo), + HLL_TODO_EXPORT(SV_fwhi, Array_SV_fwhi), + HLL_TODO_EXPORT(SV_fwra, Array_SV_fwra), + HLL_TODO_EXPORT(SV_faeq, Array_SV_faeq), + HLL_TODO_EXPORT(SV_fane, Array_SV_fane), + HLL_TODO_EXPORT(SV_falo, Array_SV_falo), + HLL_TODO_EXPORT(SV_fahi, Array_SV_fahi), + HLL_TODO_EXPORT(SV_fara, Array_SV_fara), + HLL_TODO_EXPORT(SV_foeq, Array_SV_foeq), + HLL_TODO_EXPORT(SV_fone, Array_SV_fone), + HLL_TODO_EXPORT(SV_folo, Array_SV_folo), + HLL_TODO_EXPORT(SV_fohi, Array_SV_fohi), + HLL_TODO_EXPORT(SV_fora, Array_SV_fora), + HLL_TODO_EXPORT(SN_fweq, Array_SN_fweq), + HLL_TODO_EXPORT(SN_fwne, Array_SN_fwne), + HLL_TODO_EXPORT(SN_fwlo, Array_SN_fwlo), + HLL_TODO_EXPORT(SN_fwhi, Array_SN_fwhi), + HLL_TODO_EXPORT(SN_faeq, Array_SN_faeq), + HLL_TODO_EXPORT(SN_fane, Array_SN_fane), + HLL_TODO_EXPORT(SN_falo, Array_SN_falo), + HLL_TODO_EXPORT(SN_fahi, Array_SN_fahi), + HLL_TODO_EXPORT(SN_foeq, Array_SN_foeq), + HLL_TODO_EXPORT(SN_fone, Array_SN_fone), + HLL_TODO_EXPORT(SN_folo, Array_SN_folo), + HLL_TODO_EXPORT(SN_fohi, Array_SN_fohi), + HLL_TODO_EXPORT(SS_fweq, Array_SS_fweq), + HLL_TODO_EXPORT(SS_fwne, Array_SS_fwne), + HLL_TODO_EXPORT(SS_fwlo, Array_SS_fwlo), + HLL_TODO_EXPORT(SS_fwhi, Array_SS_fwhi), + HLL_TODO_EXPORT(SS_faeq, Array_SS_faeq), + HLL_TODO_EXPORT(SS_fane, Array_SS_fane), + HLL_TODO_EXPORT(SS_falo, Array_SS_falo), + HLL_TODO_EXPORT(SS_fahi, Array_SS_fahi), + HLL_TODO_EXPORT(SS_foeq, Array_SS_foeq), + HLL_TODO_EXPORT(SS_fone, Array_SS_fone), + HLL_TODO_EXPORT(SS_folo, Array_SS_folo), + HLL_TODO_EXPORT(SS_fohi, Array_SS_fohi), + HLL_EXPORT(NV_sceq, Array_NV_sceq), + HLL_TODO_EXPORT(NV_scne, Array_NV_scne), + HLL_TODO_EXPORT(NV_sclo, Array_NV_sclo), + HLL_TODO_EXPORT(NV_schi, Array_NV_schi), + HLL_TODO_EXPORT(NV_scra, Array_NV_scra), + HLL_TODO_EXPORT(SV_sceq, Array_SV_sceq), + HLL_TODO_EXPORT(SV_scne, Array_SV_scne), + HLL_TODO_EXPORT(SV_sclo, Array_SV_sclo), + HLL_TODO_EXPORT(SV_schi, Array_SV_schi), + HLL_TODO_EXPORT(SV_scra, Array_SV_scra), + HLL_TODO_EXPORT(NN_sclowest, Array_NN_sclowest), + HLL_TODO_EXPORT(NN_schighest, Array_NN_schighest), + HLL_TODO_EXPORT(NS_sclowest, Array_NS_sclowest), + HLL_TODO_EXPORT(NS_schighest, Array_NS_schighest), + HLL_TODO_EXPORT(SN_sclowest, Array_SN_sclowest), + HLL_TODO_EXPORT(SN_schighest, Array_SN_schighest), + HLL_TODO_EXPORT(SS_sclowest, Array_SS_sclowest), + HLL_TODO_EXPORT(SS_schighest, Array_SS_schighest), + HLL_TODO_EXPORT(VN_add, Array_VN_add), + HLL_TODO_EXPORT(VN_and, Array_VN_and), + HLL_TODO_EXPORT(VN_or, Array_VN_or), + HLL_TODO_EXPORT(VS_add, Array_VS_add), + HLL_TODO_EXPORT(VS_and, Array_VS_and), + HLL_TODO_EXPORT(VS_or, Array_VS_or) + ); diff --git a/src/meson.build b/src/meson.build index dd6a127..a096cf8 100644 --- a/src/meson.build +++ b/src/meson.build @@ -70,6 +70,7 @@ xsystem4 = [version_h, 'hll/AliceLogo4.c', 'hll/AliceLogo5.c', 'hll/AnteaterADVEngine.c', + 'hll/Array.c', 'hll/BanMisc.c', 'hll/Bitarray.c', 'hll/CalcTable.c',