From 98ed2a8ee501e8d9b54e4a1cb747b00990768fa3 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 29 Mar 2016 06:07:14 -0700 Subject: [PATCH] alien.libraries: split update-library and add-library again. --- basis/alien/libraries/libraries.factor | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/basis/alien/libraries/libraries.factor b/basis/alien/libraries/libraries.factor index 4af246851e..070aee7092 100755 --- a/basis/alien/libraries/libraries.factor +++ b/basis/alien/libraries/libraries.factor @@ -57,6 +57,16 @@ M: library dispose dll>> [ dispose ] when* ; : same-library? ( library path abi -- ? ) [ swap path>> = ] [ swap abi>> = ] bi-curry* bi and ; +: add-library? ( name path abi -- ? ) + [ lookup-library ] 2dip '[ _ _ same-library? not ] [ t ] if* ; + +: add-library ( name path abi -- ) + 3dup add-library? [ + [ 2drop remove-library ] + [ [ nip ] dip make-library ] + [ 2drop libraries get set-at ] 3tri + ] [ 3drop ] if ; + : change-dll ( library path abi -- ) swap >>abi swap >>path @@ -64,7 +74,7 @@ M: library dispose dll>> [ dispose ] when* ; [ path>> open-dll ] [ swap >>dlerror swap >>dll drop ] tri ; -: add-library ( name path abi -- ) +: update-library ( name path abi -- ) pick lookup-library [ [ 2over same-library? not ] keep swap [ change-dll drop ] [ 4drop ] if