diff --git a/c/set-protocol/docs/GUI_PLOT.md b/c/set-protocol/docs/GUI_PLOT.md index 97f9eda..52234d8 100644 --- a/c/set-protocol/docs/GUI_PLOT.md +++ b/c/set-protocol/docs/GUI_PLOT.md @@ -3,7 +3,8 @@ Численная логика находится в `include/set_plot.h` и `src/set_plot.c`. Это модуль C99 без Qt, Android, транспорта, динамической памяти и глобального состояния. Он собирается в существующую библиотеку SETProtocol; отдельная DLL -для графиков не требуется. Версия ABI графиков — `set_plot_abi_version() == 2`. +для графиков не требуется. Версия ABI графиков — `set_plot_abi_version() == 1`; +новые операции добавляются без изменения существующих значений и сигнатур. | Общее в templates | Адаптер приложения | |---|---| diff --git a/c/set-protocol/include/set_plot.h b/c/set-protocol/include/set_plot.h index df7cc60..8e0b006 100644 --- a/c/set-protocol/include/set_plot.h +++ b/c/set-protocol/include/set_plot.h @@ -21,7 +21,7 @@ enum set_plot_operation { SET_PLOT_LIMITS = 8 /* xMin,xMax,yMin,yMax -> validated unchanged limits */ }; -/** Version of this plot ABI, independently of the transport ABI (currently 2). */ +/** Version of this additive plot ABI, independently of the transport ABI. */ PCAN_ABI_API uint32_t set_plot_abi_version(void); /** Evaluates one operation. Returns output count, or 0 for invalid arguments. * TRANSFORM rejects malformed viewports; invalid gesture values return the diff --git a/c/set-protocol/src/set_plot.c b/c/set-protocol/src/set_plot.c index 368275b..ab9d99f 100644 --- a/c/set-protocol/src/set_plot.c +++ b/c/set-protocol/src/set_plot.c @@ -8,7 +8,7 @@ static int finite_values(const double *v, size_t n) { return 1; } -uint32_t set_plot_abi_version(void) { return 2U; } +uint32_t set_plot_abi_version(void) { return 1U; } size_t set_plot_eval(uint32_t op, const double *v, size_t n, double *out, size_t cap) { static const size_t sizes[] = {10, 3, 4, 4, 6, 2, 3, 2, 4}; diff --git a/c/set-protocol/tests/fixtures/plot-v1.json b/c/set-protocol/tests/fixtures/plot-v1.json index b5b9a34..a06e11f 100644 --- a/c/set-protocol/tests/fixtures/plot-v1.json +++ b/c/set-protocol/tests/fixtures/plot-v1.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 1, "cases": [ {"name":"zoom_x_anchor","op":0,"input":[0,0,1,1,2,1,0,0,0.25,0.5],"output":[0.125,0,0.5,1]}, {"name":"zoom_y_anchor","op":0,"input":[0,0,1,1,1,4,0,0,0.5,0.75],"output":[0,0.5625,1,0.25]}, diff --git a/c/set-protocol/tests/test_plot.c b/c/set-protocol/tests/test_plot.c index 6615548..640621c 100644 --- a/c/set-protocol/tests/test_plot.c +++ b/c/set-protocol/tests/test_plot.c @@ -9,7 +9,7 @@ int main(void) { const double y[] = {15, 10, 30, 1}; const double drag[] = {0, 100, 500, -10, 10, 1}; double back[4], bad[] = {NAN, 10, 8}; - assert(set_plot_abi_version() == 2); + assert(set_plot_abi_version() == 1); assert(set_plot_eval(SET_PLOT_TRANSFORM, zoom, 10, output, 4) == 4); assert(output[0] == .125 && output[1] == 0 && output[2] == .5 && output[3] == 1); assert(output[4] == 12345); diff --git a/python/protocan/plot.py b/python/protocan/plot.py index 967638d..26bfeaf 100644 --- a/python/protocan/plot.py +++ b/python/protocan/plot.py @@ -37,7 +37,7 @@ class PlotMath: self.library = library library.set_plot_abi_version.restype = ctypes.c_uint32 library.set_plot_abi_version.argtypes = [] - if library.set_plot_abi_version() != 2: + if library.set_plot_abi_version() != 1: raise RuntimeError("Unsupported plot ABI") library.set_plot_eval.argtypes = [ctypes.c_uint32, ctypes.POINTER(ctypes.c_double), ctypes.c_size_t, ctypes.POINTER(ctypes.c_double), ctypes.c_size_t]