From b1f3fe7dc10bb84d5b5d75f2fc4b269f42ba1a47 Mon Sep 17 00:00:00 2001 From: Maxime Jacquemin <maxime.jacquemin@cea.fr> Date: Tue, 5 Apr 2022 14:14:37 +0200 Subject: [PATCH] [ivette] Cleaning the Eva component --- ivette/src/dome/renderer/dome.tsx | 2 +- .../src/frama-c/plugins/eva/ControlPoint.tsx | 61 ------------------ ivette/src/frama-c/plugins/eva/img/after.svg | Bin 2642 -> 0 bytes ivette/src/frama-c/plugins/eva/img/before.svg | Bin 2637 -> 0 bytes ivette/src/frama-c/plugins/eva/img/else.svg | Bin 3246 -> 0 bytes ivette/src/frama-c/plugins/eva/img/index.d.ts | 1 - ivette/src/frama-c/plugins/eva/img/then.svg | Bin 3236 -> 0 bytes ivette/src/frama-c/plugins/eva/valuetable.tsx | 22 ++----- 8 files changed, 5 insertions(+), 81 deletions(-) delete mode 100644 ivette/src/frama-c/plugins/eva/ControlPoint.tsx delete mode 100644 ivette/src/frama-c/plugins/eva/img/after.svg delete mode 100644 ivette/src/frama-c/plugins/eva/img/before.svg delete mode 100644 ivette/src/frama-c/plugins/eva/img/else.svg delete mode 100644 ivette/src/frama-c/plugins/eva/img/index.d.ts delete mode 100644 ivette/src/frama-c/plugins/eva/img/then.svg diff --git a/ivette/src/dome/renderer/dome.tsx b/ivette/src/dome/renderer/dome.tsx index ade2d71019d..51eb64b19f4 100644 --- a/ivette/src/dome/renderer/dome.tsx +++ b/ivette/src/dome/renderer/dome.tsx @@ -592,7 +592,7 @@ type Serialize<A> = (a: A) => string; The hook returns the cached version of the function. */ export function useCache<K, V>(r: (k: K) => V, s?: Serialize<K>): (k: K) => V { - const [ cache ] = React.useState(new Map<string, V>()); + const { current: cache } = React.useRef(new Map<string, V>()); const serialize = React.useMemo(() => s ? s : (k: K) => `${k}`, [s]); const get = React.useCallback((k: K): V => { const id = serialize(k); diff --git a/ivette/src/frama-c/plugins/eva/ControlPoint.tsx b/ivette/src/frama-c/plugins/eva/ControlPoint.tsx deleted file mode 100644 index 10b5ddddd70..00000000000 --- a/ivette/src/frama-c/plugins/eva/ControlPoint.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/* ************************************************************************ */ -/* */ -/* This file is part of Frama-C. */ -/* */ -/* Copyright (C) 2007-2021 */ -/* CEA (Commissariat à l'énergie atomique et aux énergies */ -/* alternatives) */ -/* */ -/* you can redistribute it and/or modify it under the terms of the GNU */ -/* Lesser General Public License as published by the Free Software */ -/* Foundation, version 2.1. */ -/* */ -/* It 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 Lesser General Public License for more details. */ -/* */ -/* See the GNU Lesser General Public License version 2.1 */ -/* for more details (enclosed in the file licenses/LGPLv2.1). */ -/* */ -/* ************************************************************************ */ - -import React from 'react'; -import BeforeImage from './img/before.svg'; -import AfterImage from './img/after.svg'; -import ThenImage from './img/then.svg'; -import ElseImage from './img/else.svg'; - -type controlPointKind = 'before' | 'after' | 'then' | 'else'; -interface Props { kind : controlPointKind } - -function imageSource(kind: controlPointKind): string { - switch (kind) { - case 'before': return BeforeImage; - case 'after': return AfterImage; - case 'then': return ThenImage; - case 'else': return ElseImage; - } -} - -function imageTitle(kind: controlPointKind): string { - switch (kind) { - case 'before': return 'Before the selected statement'; - case 'after': return 'After the selected statement'; - case 'then': return 'Inside the "then" branch'; - case 'else': return 'Inside the "else" branch'; - } -} - -export default function ControlPoint(p: Props): JSX.Element { - return ( - <img - style={{ verticalAlign: 'middle' }} - src={imageSource(p.kind)} - height="18px" - width="18px" - title={imageTitle(p.kind)} - alt={imageTitle(p.kind)} - /> - ); -} diff --git a/ivette/src/frama-c/plugins/eva/img/after.svg b/ivette/src/frama-c/plugins/eva/img/after.svg deleted file mode 100644 index 402642a8a8cad649cff5a9e1c869b95b047b8f46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2642 zcmc(hTW{Mo6vyB5DLCaN!Ayy|*p^hw1=gTIU$+i>rX|YeB9R(J$8kS>4=GZ1E(1Dj zzyt)b&V}Up@y|nTK0fyydSYtiQdB`4k^nJL%Z7`675x77GtL7vYAPDqNx`Z>$l&Al zX7dxq=#yepvj&~GKA<n+ajfaU(A`1np^T!_=@fEj45ivf_Xy+d&CO<f+TS3AU|unn zO<e^pVK}PJ1~zrXI@U9x$0!ctD7b{zm+;!m&YxH<`(BFCW{UClDp)n`Jh)lSDYZdy zQ4|qLq9nl(fycAZ^clZQg*CpHnh-)F@LeYPv8ZwcpacBP;ocCA@~CRo0w5L&rlW_i z50Q6b5;nTIOjdfH^Du893)-`BpfwvKA8hkaywL~PUlKwIWVz~lYd$c(Kj<n*@-U89 zBwsuG6KAJi<Z~4eM9`ds<}jOlrJC3pcvA&HCrMH=y}Ru%=SUJ3Nw`FJ30V<V$8FIr zP(l)dNrp*&Z?k;$Wg}}-P8HBrGZh-{Tad!0VeM!nfsmQdyd_DJ1t_xKIo;$orjSeQ zj*iUEfzUwrAe~OCD!6U!;~YDw8m7E!WuF%=33$0aPlv^g?F%)d&VFF+68%<`#y=it zBTvBmwey>ly%{xo?WkcR(q$U1(wMB?IAJBY$U+jw#qv!mFg%)*gpY#ju?pP&0y@9s z`lyr%=;)aN4Et}|PK3sTJnfaC+|q7F*K&<}s`gx9EeFtuThf)iV=bua9fz9q_Ks&K zwKny8*Sx?J7r+a91?O4*8i9-OVvb4thLQ^bkn1<xoewxB>%SSgr_a3S-x!dHz0i85 zX+t%=$je(mj%zDb5G%Bp^4EvYMw;f?)OGoXRFCczEGB^N<Pmte92?ivB{YSe>Mid< zG^XqP3@vjLT^#cm8?fo~z-EIRR<WtO%<ba3#Wr;hDjrz$o912j#Z2NVGxM8c27_|l zv8|nR`su5PTp3eYo9L>_P2@4y<7j*RmE1bIV_g+|qTOFdhP=?`&E6|{9D3Qnskch> z`vKrzC{rscMgyn{?9UEvBIqhbn8P7S7dTmlMV!ak`rdEEK=r``8uht@8Cod36mYG5 z7`2j*th_bNkr4MfNv<T}GAD3n6l-tqxL|PCmAj+X*S0?;7bQ?-%3JMA2h!1H=4}my z4xki0Ur&u)*C;&^grMXe;e=$SCQ>X?Xr55gdWqm(h|?@97I7YuG|$u2VVXLksWeYg z?8SUVzm@`)uBF0o?4PJUD!>3&zHOaGom|!3tRshMUfKr>%(YAVa#^;k?ne>+8!)CH zO*O{YA9RFj(+6ipGZ51|J;V#!EBU}zOULfw1&*id$7mn=U>2@Pu}t9W=O41M0y3cf hcQz?rUN9IsSpjm%;O@Pc{~J1+Xb<0nrblgWz5_0934#Cs diff --git a/ivette/src/frama-c/plugins/eva/img/before.svg b/ivette/src/frama-c/plugins/eva/img/before.svg deleted file mode 100644 index e2972eb52ae1b2cf502d3a9300d92156ada101ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2637 zcmc(hU5}$S6o&8TSGdg0j5-DbAptgIrS52@z35GMSG{(?N!$UO8Z(*fukW$Jz<f!q zTB(sn6V8VZ=ke>~Y(G9VHF{*K<5Cn}=o1eyQOb&oW8r=O_8F%h>NFJ<t)*avC#3gr zceVWqWAsTes#%53T%XVv@z9mDW$5Olb(;sl`F!^IX!NBz2Db>~-PP5$dpuqtgrKhI z@~SMnF`?~MZ3C+^U^Q!)&|MJvVc^Z-<s4p`>im(FvT3B~Y^Lb07s0AJOpBYhImb3A z%(5&XQ4mEKB5-#Rnm*y@sql_(rACC10DN<izZaEv0JMd_Dcl+SPWGx~2LQx;!E|u{ z?LKf$O#Dh$bFtj<oR)b7S<r@cEiG9WxL})q=9NCd{t_QrAj!IEtog+F@uUkcN_~>8 zHc>j-A2~b!BA*J6AcCeOG=<sZg=#`;;8o!Pop2pz!}GZP`4ma~Eb<d{6OlDxWq8OA zcPJte!DNL=dTX;>_jx5t(@x>-4Ikzk@H^1Lwql3QXaXTq(L6!P*h7K!PWdLeGM&t^ zd)hHu1fiB5K|8fng?D|hpV6_Gs$$By*7ozvC4n#3m*KRGYr9U(s*@jJkBM$Ca^vq# zw326l{?hqF%Eqj^dg&-(C(_JcMI=cE)X=&sS(-Nq{dE>6$*U!SVQ)?n?giIf;f?#d zOz)L40X4laU}68c8r?~rkIFzk(0U?w;2Jkn9l5|-wxE&mbr<%U9Y9rYIMkrGH#~c( zwQ1kErvA=c050qloUYQBc*Y1P=8%NzcS3;U<`ttc9WX|lck&wg#2fyD0g2G*tYMl~ zRMS~q&H`#&Tcv_lVZ`LW-G4U9G@or*=D$nzFg}9C1kk<gf!CO0<Ek<T(Kl4@cmtX- zQ|D(GncHA?OlxexrY|j<4CAtj4bx>B7t0Y_l?{lvWx-d?>-vi+GInO_n^Ojha$U2X ztvP&kT?AtrLtEQm(d9O980=}Zvwk7Bn(kR$c%NwfXU~um+O*k6CHuCK6`XpjM7JLR z{+TkhqM|c^3eSG6;U>Dl>&z!<9Fz18CvYO-5Dv_(+liLylOxpWOARFs(0MN4Ui;8# zB_CLRZKfk3<Kv*YocKwaL{S)q&R%oD;Ihm2z1B<HACik4urlSW_Mryt=zQgD6@>|) z6um4<<8f-_4hcfg^RH;LvMt5&U9z?v#VfRl{cM${Nq7g|ERMt2X?mE5rqeWvM|KPN zr4;buS}I)j>XGVR0R*`5?cg-x<f^PE8I6#p7yDpw!LYQ5%)|WBV{h*RByj6y8;9WE zU@_xp=x|15W*~Ne=Elw3bO7B*Kxm;I_{mbUoA3^Y!`)+q4?}R}Z%CFz@YClXk}>y) h#q@uZ!3zk64N%xbNk(Q0{}G#QaD<<OW<2e#{sLaD2+#lk diff --git a/ivette/src/frama-c/plugins/eva/img/else.svg b/ivette/src/frama-c/plugins/eva/img/else.svg deleted file mode 100644 index 049e435fa26a592758befa64d802f350c8bfa6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3246 zcmdT{U2oeq6n)RH;FOmH3nhyBRxKA;g93fn%i3bkv_#ulB+;YjIPS0CB}K|k;sC>1 z44Z%;;{70b56?Z67w@0?4n1-?wqmHf&?g?^LoJ$i*i_!vFCTI4p;57+VVxLw<qg7n zzr0%fgfaRcIa9nrhgNOTr{Q6&*^Z-|tx~%(2o8sX-&&(D<R-X97%#7`7USdQ3LymR z4rAHWm1h%nd)b-5rVe<=dp@W!2>medPT}<_yw<C?kGvLrFNV=%4&(J%ux!@z<a#%U z$OMH&Q3Qkrlwyd$<8e^z2|rJTJzh$sgpdGyr$zo=R5=2mJNTQ!oxvZ)Ue<gK0C9id zD!Bi0A2=r_exsVxVx_}#p5_(E1MB&?V>KTG7i{tmZKJl8M>D@58KH6C8}pX8o2{Dc zQAWbT+8<kf_(eQb9zg`nN#@OjndCFpgvQV|l?Uj=X+oy4J^pfzBz{5t1l>@Q5?+Vv zVtt1wp#+l{ll<0Xx$4VC)ViF?<K4)84f_(9uxR*t)Qmt#uct?G8pj?AjCan~sg17V z6uV+0H%lP2V;f*jCuHSaugzl}D<K;$ohvoZGnW8#TXmdz#m?>O)U(ch0=;y>KW<qg z4gmQ}=QkmG0Njs~m!2990*49l!?1|cS6<i)j!EWIlBCf~FMzn$t%UbOtH#Q+2Mpl3 zP1k!VbwJ0C9N;kjrt?H-+=|0SYMj>$4&mkGhjxHkuq9WR$N3u(j%OhWU+v#c0ySo@ zFtI+UkY;a8-Lt2*Z@+QaqucemRk&wz(+*gP9bjrx&+Hvv1MM$3<kS!sJS(A;IUz^2 zo-5Wc#ZCls79eD1$O?1?jVXV-|ES5SpG94lzYF<bhhWhGY$f)vADd(1nz{s4=$Tr! zJ<v+a&d;Eki{Rv#=U9ME9d~>-*l8u7<Ym^2bB%549(cUt!DrQW-6y?>txT`48x1CH zRmYcR&FR%u5!f=OvKGNvm5ac^U>eeh{Tbalw&GpoePG?6dyd?Z&1~FAvETKgfwnhH zbf*r-`;3`NvSHK!Ri1h6;3~Soxu4O5Bn7?0VdRHN8W-WMJBb}rTZho7jvXwqhRVwU zF1B~0lH!4v*P!t5*x|(NlK632BuSja&fc{Hhuf}P?Ug#W{UO?+1X#IrRx{{;p{ks- z8wMgEB|DxkjjeE$4ibc*=3fz|ewyVO4e!ESSCr5QL2bIu;x0;kQbcj)nq$&LU1*+D zoMA`fGyH2Yz}}UR7#jbPsl5ao;MO<tsrlK;x|^9~ahmt`&LCzb(+p1gwk5xXVUiQL zd5i2vAfpw@R7pb|;RL6cU?(gH)mjl9G=*glm_cGJa`_3cGa|tUOvi6R;Ldat=`H|8 zjQxxh355?KhtYR32`<Rgq42LUslUji+%J+Sita-AFo=NUPQafNiQ)n~ZT|68G7YDB z^&g=U1xj5eQ|_+UiA+)GrxDz`?!rdspOEQ)*Kn!E2cKlhw3`*D@OisU;*}KNfzTq@ M!0!!x{VlKl0s)%1L;wH) diff --git a/ivette/src/frama-c/plugins/eva/img/index.d.ts b/ivette/src/frama-c/plugins/eva/img/index.d.ts deleted file mode 100644 index bff94710c91..00000000000 --- a/ivette/src/frama-c/plugins/eva/img/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '*.svg'; diff --git a/ivette/src/frama-c/plugins/eva/img/then.svg b/ivette/src/frama-c/plugins/eva/img/then.svg deleted file mode 100644 index 862c51f3bc08572f49b8d266823d6dddb08ce86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3236 zcmd5<O^@3)5WVlOV6~SGYD%Q6@7Nol2?FHMOPiu+TB2=rCDNtn^*X;kLyDBVUqIRv zMFcF?oEdUBPjBAXt9K85hwix=S}E264M~8wsAbcN-8%T=^G93+XwXbFtdoMT10jQV zw^ys5Fh=hcXPP(Y)apI@B<_Zq9XPt#YkjDq=yW=TtuuyF?V>jb<J+sN)o{PNLI^=# zF;q>x4%~*rQFS)3sUzO;o(nxhG^9~5hu3p>ZL+ubyq0}0#b9@e;rb$2HQVWMbDPuB z2GO!CBN9h(j3ELKXQ9~xe!La#_|n#x5E6lJPV#M0)c}AV;BN}|hH#KaRr4(X#6!V# z^x^Y|$U89!8{N#wDv#%M%rlS$>-lhCH6J1$Z1<nqM(@`_oQEaJDNXv`n)kfj?e%D1 zW@TA8`+dt#zsQGmKoCLGCi}^T+07TMq1Mng>j2PMCbS&a?)6twBnitnOwmnDGQw-R zEw>94lbB$VU{buXyL|OkBWqL6I?#JALIe9PFk#j3?O+&zkjZCOkZ>8G$a<&UW@}^W zm}56=;5G$92et#|bW*K@>#cp9V<T0=m3L+KdE}CSZmZ8@ueh^)o#xcZPoS4x@DF>| z$P+;R)cHlq9sm!Q=~GV)F9Ih;8O9|^MrfgUpR|U%#Ca0ZjF4we!0>1~2_HqPhjrlI z@8$NRQYN5dXAWrCf8*;!XxPisP8pcDteddgwi@?L?OK7gJiwLReJ|`C-vX;%aHx@Q zFL*XmYYV{B>QAizz_4R5Et2Au2v258X!c470GU4n-X*XwzOt`p4{hIm;eZ77OzXL3 z4byDqm$v{PGs{(AD@aWB+lP;ao90>7b@iuIcWwz56Tmj|2za?YHm<2F5QU!U+qMT* z8P)k2By$zbj_HgQ*!20pCxbgy@ljnSxww?rrtX2p2Oj;d+pha$lDNuDe$!`gXsbJZ zYjchteHD=_V=QYGT~xV>JPfuUt=3=Atz#SBt%LWh`}@d|C)z~jos!2xFB|B3%S8V^ z0Qg7D)QXA000in_K6WsPZg3ulah$^IU*IAM%bb>=DejI3ruQD8L7zLwu!X`a0b}j$ zpq0Gi)ivllJZ?Est|DQQm1!E6OK<O5!C}@_o1@m3w!dU6DnOMhZ?%gKsH3aI+ZqNE zpcFe_rp8V-Dvt<4Q1Y*+$U>SIX;v<v{mUE%P=@l{R++>LN{pTtW#V8OCDBw`6fw?c z>!cM@z}2->xIU_TrjH6>fRS&t)3CEubvN<I!8Bd%tpyD9(t>0b^R-=duR)j=1jcTe zdl0?{7^6qF#+c$IPH~34oFHVx5I={-D5!^R2J3=E@ZF{3H*|sNID||GfEp%YPRcZf z??4`*@264bG5FtT)W1lhA}rHox=a=nNCZ<onSq%Q1{THG50#59uKybznZavG^@H#z z#>=T^9x=&}WFQzYsZ2w<j47Fe{|%GAvDbbaj56ppKUiI-c~SBsdBn$wRxxYYKgMSj N?ci62nR>TZUjdw?w$K0o diff --git a/ivette/src/frama-c/plugins/eva/valuetable.tsx b/ivette/src/frama-c/plugins/eva/valuetable.tsx index bcad18f8c8c..8ac37bf297b 100644 --- a/ivette/src/frama-c/plugins/eva/valuetable.tsx +++ b/ivette/src/frama-c/plugins/eva/valuetable.tsx @@ -835,20 +835,17 @@ class FunctionsManager { setByCallstacks(fct: string, byCallstacks: boolean): void { const infos = this.cache.get(fct); - if (!infos) return; - infos.byCallstacks = byCallstacks; + if (infos) infos.byCallstacks = byCallstacks; } setFolded(fct: string, folded: boolean): void { const infos = this.cache.get(fct); - if (!infos) return; - infos.folded = folded; + if (infos) infos.folded = folded; } changeStartingCallstack(fct: string, n: number): void { const infos = this.cache.get(fct); - if (!infos) return; - infos.startingCallstack = n; + if (infos) infos.startingCallstack = n; } pin(loc: Location): void { @@ -866,21 +863,10 @@ class FunctionsManager { this.getInfos(fct).track(target); } - status(loc?: Location): MarkerStatus | undefined { - if (!loc) return undefined; - const infos = this.cache.get(loc.fct); - if (infos?.pinned.has(loc.target)) - return [ 'Pinned', true ]; - else if (infos?.tracked.has(loc.target)) - return [ 'Tracked', true ]; - return 'JustFocused'; - } - removeLocation(loc: Location): void { const { target, fct } = loc; const infos = this.cache.get(fct); - if (!infos) return; - infos.delete(target); + if (infos) infos.delete(target); } delete(fct: string): void { -- GitLab