From a32d37c75350e625f66441012532b73bf24d9c1f Mon Sep 17 00:00:00 2001 From: vsc Date: Tue, 14 Oct 2003 20:48:57 +0000 Subject: [PATCH] support access through instance/2 git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@899 b08c6af1-5177-4d33-ba66-4b1c6b8b522a --- C/dbase.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/C/dbase.c b/C/dbase.c index b09334ae8..4115ce062 100644 --- a/C/dbase.c +++ b/C/dbase.c @@ -3998,9 +3998,18 @@ p_instance(void) Term t1 = Deref(ARG1); DBRef dbr; - if (IsVarTerm(t1) || !IsDBRefTerm(t1)) - return (FALSE); - dbr = DBRefOfTerm(t1); + if (IsVarTerm(t1) || !IsDBRefTerm(t1)) { + if (IsIntegerTerm(t1)) + dbr = (DBRef)IntegerOfTerm(t1); + else + return (FALSE); + /* limited sanity checking */ + if (dbr->id != FunctorDBRef) { + return FALSE; + } + } else { + dbr = DBRefOfTerm(t1); + } if (dbr->Flags & LogUpdMask) { op_numbers opc; LogUpdClause *cl = (LogUpdClause *)dbr; @@ -4041,9 +4050,18 @@ p_instance_module(void) Term t1 = Deref(ARG1); DBRef dbr; - if (IsVarTerm(t1) || !IsDBRefTerm(t1)) - return (FALSE); - dbr = DBRefOfTerm(t1); + if (IsVarTerm(t1) || !IsDBRefTerm(t1)) { + if (IsIntegerTerm(t1)) + dbr = (DBRef)IntegerOfTerm(t1); + else + return (FALSE); + /* limited sanity checking */ + if (dbr->id != FunctorDBRef) { + return FALSE; + } + } else { + dbr = DBRefOfTerm(t1); + } if (dbr->Flags & LogUpdMask) { LogUpdClause *cl = (LogUpdClause *)dbr;