hacks
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1668 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
		
							
								
								
									
										43
									
								
								C/stdpreds.c
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								C/stdpreds.c
									
									
									
									
									
								
							@@ -11,8 +11,12 @@
 | 
				
			|||||||
* File:		stdpreds.c						 *
 | 
					* File:		stdpreds.c						 *
 | 
				
			||||||
* comments:	General-purpose C implemented system predicates		 *
 | 
					* comments:	General-purpose C implemented system predicates		 *
 | 
				
			||||||
*									 *
 | 
					*									 *
 | 
				
			||||||
* Last rev:     $Date: 2006-05-19 14:31:32 $,$Author: vsc $						 *
 | 
					* Last rev:     $Date: 2006-06-05 19:36:00 $,$Author: vsc $						 *
 | 
				
			||||||
* $Log: not supported by cvs2svn $
 | 
					* $Log: not supported by cvs2svn $
 | 
				
			||||||
 | 
					* Revision 1.104  2006/05/19 14:31:32  vsc
 | 
				
			||||||
 | 
					* get rid of IntArrays and FloatArray code.
 | 
				
			||||||
 | 
					* include holes when calculating memory usage.
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
* Revision 1.103  2006/05/18 16:33:05  vsc
 | 
					* Revision 1.103  2006/05/18 16:33:05  vsc
 | 
				
			||||||
* fix info reported by memory manager under DL_MALLOC and SYSTEM_MALLOC
 | 
					* fix info reported by memory manager under DL_MALLOC and SYSTEM_MALLOC
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
@@ -2833,6 +2837,40 @@ p_loop(void) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if QSAR
 | 
				
			||||||
 | 
					static Int
 | 
				
			||||||
 | 
					p_in_range(void) {
 | 
				
			||||||
 | 
					  Term t;
 | 
				
			||||||
 | 
					  double i,j;
 | 
				
			||||||
 | 
					  double d1;
 | 
				
			||||||
 | 
					  double d2;
 | 
				
			||||||
 | 
					  double d3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  t = Deref(ARG1);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t); 
 | 
				
			||||||
 | 
					  t = Deref(ARG4);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
 | 
				
			||||||
 | 
					  d1 = i-j;
 | 
				
			||||||
 | 
					  t = Deref(ARG2);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t); 
 | 
				
			||||||
 | 
					  t = Deref(ARG5);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
 | 
				
			||||||
 | 
					  d2 = i-j;
 | 
				
			||||||
 | 
					  t = Deref(ARG3);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t); 
 | 
				
			||||||
 | 
					  t = Deref(ARG6);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
 | 
				
			||||||
 | 
					  d3 = i-j;
 | 
				
			||||||
 | 
					  t = Deref(ARG7);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) i = FloatOfTerm(t); else i = IntegerOfTerm(t); 
 | 
				
			||||||
 | 
					  t = Deref(ARG8);
 | 
				
			||||||
 | 
					  if (IsFloatTerm(t)) j = FloatOfTerm(t); else j = IntegerOfTerm(t);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return fabs(sqrt(d1*d1 + d2*d2 + d3*d3)-i) <= j; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static Int
 | 
					static Int
 | 
				
			||||||
p_max_tagged_integer(void) {
 | 
					p_max_tagged_integer(void) {
 | 
				
			||||||
  return Yap_unify(ARG1, MkIntTerm(MAX_ABS_INT-1L));
 | 
					  return Yap_unify(ARG1, MkIntTerm(MAX_ABS_INT-1L));
 | 
				
			||||||
@@ -2952,6 +2990,9 @@ Yap_InitCPreds(void)
 | 
				
			|||||||
  Yap_InitCPred("euc_dist", 3, p_euc_dist, SafePredFlag);
 | 
					  Yap_InitCPred("euc_dist", 3, p_euc_dist, SafePredFlag);
 | 
				
			||||||
  Yap_InitCPred("loop", 0, p_loop, SafePredFlag);
 | 
					  Yap_InitCPred("loop", 0, p_loop, SafePredFlag);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#if QSAR
 | 
				
			||||||
 | 
					  Yap_InitCPred("in_range", 8, p_in_range, SafePredFlag);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#ifdef DEBUG
 | 
					#ifdef DEBUG
 | 
				
			||||||
  Yap_InitCPred("dump_active_goals", 0, p_dump_active_goals, SafePredFlag|SyncPredFlag);
 | 
					  Yap_InitCPred("dump_active_goals", 0, p_dump_active_goals, SafePredFlag|SyncPredFlag);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/*  $Id: jpl.c,v 1.10 2006-05-19 13:48:11 vsc Exp $
 | 
					/*  $Id: jpl.c,v 1.11 2006-06-05 19:36:00 vsc Exp $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Part of JPL -- SWI-Prolog/Java interface
 | 
					    Part of JPL -- SWI-Prolog/Java interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2201,6 +2201,35 @@ jni_SetByteArrayElement(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 %T jni_SetByteArrayElement(+term, +term, +term)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					static foreign_t
 | 
				
			||||||
 | 
					jni_SetDoubleArrayElement(
 | 
				
			||||||
 | 
					    term_t	ta1,	// +Arg1
 | 
				
			||||||
 | 
					    term_t	ta2,	// +Arg2
 | 
				
			||||||
 | 
					    term_t	ta3	// +Arg3
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      jboolean	r;	// Prolog exit/fail outcome
 | 
				
			||||||
 | 
					      jdoubleArray p1;
 | 
				
			||||||
 | 
					      jint i2;
 | 
				
			||||||
 | 
					      jdouble i3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if	(   !jni_ensure_jvm()	)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						  return FALSE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					      r = 
 | 
				
			||||||
 | 
						JNI_term_to_double_jarray(env,ta1,&p1)
 | 
				
			||||||
 | 
						&& JNI_term_to_jint(ta2,&i2)
 | 
				
			||||||
 | 
						&& JNI_term_to_jdouble(ta3,&i3)
 | 
				
			||||||
 | 
						&& ( (*env)->SetDoubleArrayRegion(env,p1,i2,1,&i3) , TRUE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return jni_check_exception() && r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
%T jni_void( +integer, +term, +term, +term)
 | 
					%T jni_void( +integer, +term, +term, +term)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -3902,6 +3931,7 @@ PL_extension predspecs[] =
 | 
				
			|||||||
      { "jni_func",			 5, jni_func_3_plc,		       0 },
 | 
					      { "jni_func",			 5, jni_func_3_plc,		       0 },
 | 
				
			||||||
      { "jni_func",			 6, jni_func_4_plc,		       0 },
 | 
					      { "jni_func",			 6, jni_func_4_plc,		       0 },
 | 
				
			||||||
      { "jni_SetByteArrayElement",	 3, jni_SetByteArrayElement,	       0 },
 | 
					      { "jni_SetByteArrayElement",	 3, jni_SetByteArrayElement,	       0 },
 | 
				
			||||||
 | 
					      { "jni_SetDoubleArrayElement",	 3, jni_SetDoubleArrayElement,	       0 },
 | 
				
			||||||
      { "jpl_c_lib_version",		 1, jpl_c_lib_version_1_plc,	       0 },
 | 
					      { "jpl_c_lib_version",		 1, jpl_c_lib_version_1_plc,	       0 },
 | 
				
			||||||
      { "jpl_c_lib_version",		 4, jpl_c_lib_version_4_plc,	       0 },
 | 
					      { "jpl_c_lib_version",		 4, jpl_c_lib_version_4_plc,	       0 },
 | 
				
			||||||
      { NULL,				 0, NULL,			       0 }
 | 
					      { NULL,				 0, NULL,			       0 }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user