From 1b6dc41ebfffe1cb5deea107a5dfb416563fc94c Mon Sep 17 00:00:00 2001 From: vsc Date: Fri, 28 Oct 2005 17:53:27 +0000 Subject: [PATCH] add CLP files from SWI git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1418 b08c6af1-5177-4d33-ba66-4b1c6b8b522a --- LGPL/clp/Makefile.in | 32 +++++++++++++++ LGPL/clp/clp_events.pl | 89 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 LGPL/clp/Makefile.in create mode 100644 LGPL/clp/clp_events.pl diff --git a/LGPL/clp/Makefile.in b/LGPL/clp/Makefile.in new file mode 100644 index 000000000..1af5a18f7 --- /dev/null +++ b/LGPL/clp/Makefile.in @@ -0,0 +1,32 @@ +# +# default base directory for YAP installation +# +ROOTDIR = @prefix@ +# +# where the binary should be +# +BINDIR = $(ROOTDIR)/bin +# +# where YAP should look for binary libraries +# +LIBDIR=$(ROOTDIR)/lib/Yap +# +# where YAP should look for architecture-independent Prolog libraries +# +SHAREDIR=$(ROOTDIR)/share +# +# +# You shouldn't need to change what follows. +# +INSTALL=@INSTALL@ +INSTALL_DATA=@INSTALL_DATA@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +srcdir=@srcdir@ + +PROGRAMS= $(srcdir)/clp_events.pl + +install: $(PROGRAMS) + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap + mkdir -p $(DESTDIR)$(SHAREDIR)/Yap/clp + for p in $(PROGRAMS); do $(INSTALL_DATA) $$p $(DESTDIR)$(SHAREDIR)/Yap/clp; done + diff --git a/LGPL/clp/clp_events.pl b/LGPL/clp/clp_events.pl new file mode 100644 index 000000000..d15abc7b4 --- /dev/null +++ b/LGPL/clp/clp_events.pl @@ -0,0 +1,89 @@ +/* $Id: clp_events.pl,v 1.1 2005-10-28 17:53:27 vsc Exp $ + + Part of SWI-Prolog + + Author: Tom Schrijvers + E-mail: tom.schrijvers@cs.kuleuven.ac.be + WWW: http://www.swi-prolog.org + Copyright (C): 2005, K.U.Leuven + + 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 Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + As a special exception, if you link this library with other files, + compiled with a Free Software compiler, to produce an executable, this + library does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. +*/ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Module for managing constraint solver events. +% +% Author: Tom Schrijvers +% E-mail: tom.schrijvers@cs.kuleuven.ac.be +% Copyright: 2005, K.U.Leuven +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +:-module(clp_events, + [ + notify/2, + subscribe/4, + unsubscribe/2 + ]). + +notify(V,NMod) :- + ( get_attr(V,clp_events,List) -> + notify_list(List,NMod) + ; + true + ). + +subscribe(V,NMod,SMod,Goal) :- + ( get_attr(V,clp_events,List) -> + put_attr(V,clp_events,[entry(NMod,SMod,Goal)|List]) + ; + put_attr(V,clp_events,[entry(NMod,SMod,Goal)]) + ). + +unsubscribe(V,SMod) :- + ( get_attr(V,clp_events,List) -> + unsubscribe_list(List,SMod,NList), + put_attr(V,clp_events,NList) + ; + true + ). + +notify_list([],_). +notify_list([entry(Mod,_,Goal)|Rest],NMod) :- + ( Mod == NMod -> + call(Goal) + ; + true + ), + notify_list(Rest,NMod). + +unsubscribe_list([],_,_). +unsubscribe_list([Entry|Rest],SMod,List) :- + Entry = entry(_,Mod,_), + ( Mod == SMod -> + List = Rest + ; + List = [Entry|Tail], + unsubscribe_list(Rest,SMod,Tail) + ). + +attr_unify_hook(_,_).