From fba3e3747c6743596941af6395bbc03d30125d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Fri, 5 Jul 2024 11:29:46 +0200 Subject: [PATCH] [Ivette] Eva sidebar: minor factorization. --- ivette/src/frama-c/plugins/eva/EvaSidebar.tsx | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/ivette/src/frama-c/plugins/eva/EvaSidebar.tsx b/ivette/src/frama-c/plugins/eva/EvaSidebar.tsx index 4cd074a94b0..93ff242072c 100644 --- a/ivette/src/frama-c/plugins/eva/EvaSidebar.tsx +++ b/ivette/src/frama-c/plugins/eva/EvaSidebar.tsx @@ -23,7 +23,7 @@ import React from 'react'; import * as Forms from 'dome/layout/forms'; import * as Ivette from 'ivette'; -import { useServerField } from 'frama-c/states'; +import { useServerField, State } from 'frama-c/states'; import * as Params from 'frama-c/kernel/api/parameters'; import * as EvaDef from 'frama-c/plugins/eva/EvaDefinitions'; import { EvaFormOptions } from 'frama-c/plugins/eva/components/Form'; @@ -33,31 +33,34 @@ import EvaTools from './components/Tools'; export function EvaSideBar(): JSX.Element { const remote = Forms.useController(); - /* eslint-disable max-len */ - const precision = Forms.useBuffer(remote, useServerField(Params.evaPrecision, 0)); - const main = Forms.useBuffer(remote, useServerField(Params.main, "")); - const libEntry = Forms.useBuffer(remote, useServerField(Params.libEntry, false)); - const domains = Forms.useBuffer(remote, useServerField(Params.evaDomains, "cvalue")); + function useField<A>(state: State<A>, defaultValue: A) : Forms.FieldState<A> { + return Forms.useBuffer(remote, useServerField(state, defaultValue)); + } + + const precision = useField(Params.evaPrecision, 0); + const main = useField(Params.main, ""); + const libEntry = useField(Params.libEntry, false); + const domains = useField(Params.evaDomains, "cvalue"); const domainsFiltered = Forms.useFilter( domains, EvaDef.domainsToKeyVal, EvaDef.KeyValToDomains, EvaDef.formEvaDomains ); - const WideningDelay = Forms.useBuffer(remote, useServerField(Params.evaWideningDelay, 0)); - const ArrayPrecisionLevel = Forms.useBuffer(remote, useServerField(Params.evaPlevel, 0)); - const LinearLevel = Forms.useBuffer(remote, useServerField(Params.evaSubdivideNonLinear, 0)); - const EqualityCall = Forms.useBuffer(remote, useServerField(Params.evaEqualityThroughCalls, "none")); - const OctagonCall = Forms.useBuffer(remote, useServerField(Params.evaOctagonThroughCalls, false)); - const sLevel = Forms.useBuffer(remote, useServerField(Params.evaSlevel, 0)); - const iLevel = Forms.useBuffer(remote, useServerField(Params.evaIlevel, 0)); - const AutoLoopUnroll = Forms.useBuffer(remote, useServerField(Params.evaAutoLoopUnroll, 0)); - const MinLoopUnroll = Forms.useBuffer(remote, useServerField(Params.evaMinLoopUnroll, 0)); - const SplitReturn = Forms.useBuffer(remote, useServerField(Params.evaSplitReturn, "none")); - const HistoryPartitioning = Forms.useBuffer(remote, useServerField(Params.evaPartitionHistory, 0)); - const AllocReturnsNull = Forms.useBuffer(remote, useServerField(Params.evaAllocReturnsNull, false)); - const WarnPointerComparison = Forms.useBuffer(remote, useServerField(Params.evaWarnUndefinedPointerComparison, "none")); - /* eslint-enable max-len */ + const WideningDelay = useField(Params.evaWideningDelay, 0); + const ArrayPrecisionLevel = useField(Params.evaPlevel, 0); + const LinearLevel = useField(Params.evaSubdivideNonLinear, 0); + const EqualityCall = useField(Params.evaEqualityThroughCalls, "none"); + const OctagonCall = useField(Params.evaOctagonThroughCalls, false); + const sLevel = useField(Params.evaSlevel, 0); + const iLevel = useField(Params.evaIlevel, 0); + const AutoLoopUnroll = useField(Params.evaAutoLoopUnroll, 0); + const MinLoopUnroll = useField(Params.evaMinLoopUnroll, 0); + const SplitReturn = useField(Params.evaSplitReturn, "none"); + const HistoryPartitioning = useField(Params.evaPartitionHistory, 0); + const AllocReturnsNull = useField(Params.evaAllocReturnsNull, false); + const WarnPointerComparison = + useField(Params.evaWarnUndefinedPointerComparison, "none"); const evaFields = { "precision": { -- GitLab