Merge branch 'master' of yap.dcc.fc.up.pt:yap-6
This commit is contained in:
		
							
								
								
									
										5
									
								
								C/exec.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								C/exec.c
									
									
									
									
									
								
							@@ -1034,11 +1034,6 @@ init_stack(int arity, CELL *pt, int top, choiceptr saved_b)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  B = (choiceptr)ASP;
 | 
					  B = (choiceptr)ASP;
 | 
				
			||||||
  B--;
 | 
					  B--;
 | 
				
			||||||
#ifdef TABLING
 | 
					 | 
				
			||||||
  if (top && GLOBAL_root_dep_fr) {
 | 
					 | 
				
			||||||
    DepFr_cons_cp(GLOBAL_root_dep_fr) = B;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
#endif /* TABLING */
 | 
					 | 
				
			||||||
  B->cp_h     = H;
 | 
					  B->cp_h     = H;
 | 
				
			||||||
  B->cp_tr    = TR;
 | 
					  B->cp_tr    = TR;
 | 
				
			||||||
  B->cp_cp    = CP;
 | 
					  B->cp_cp    = CP;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								C/write.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								C/write.c
									
									
									
									
									
								
							@@ -292,29 +292,30 @@ wrputref(CODEADDR ref, int Quote_illegal, wrf writewch)			/* writes a data base
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static int 
 | 
					static int 
 | 
				
			||||||
legalAtom(unsigned char *s)			/* Is this a legal atom ? */
 | 
					legalAtom(unsigned char *s)			/* Is this a legal atom ? */
 | 
				
			||||||
	                  
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  wchar_t ch = *s;
 | 
					  wchar_t ch = *s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (ch == '\0')
 | 
					  if (ch == '\0')
 | 
				
			||||||
    return(FALSE);
 | 
					    return FALSE;
 | 
				
			||||||
  if (Yap_chtype[ch] != LC) {
 | 
					  if (Yap_chtype[ch] != LC) {
 | 
				
			||||||
    if (ch == '[')
 | 
					    if (ch == '[') {
 | 
				
			||||||
      return (*++s == ']' && !(*++s));
 | 
					      return (s[1] == ']' && !s[2]);
 | 
				
			||||||
    else if (ch == '{')
 | 
					    } else if (ch == '{') {
 | 
				
			||||||
      return (*++s == '}' && !(*++s));
 | 
						return (s[1] == '}' && !s[2]);
 | 
				
			||||||
//    else if (ch == '/')
 | 
					//    else if (ch == '/')
 | 
				
			||||||
//      return (*++s != '*');
 | 
					//      return (*++s != '*');
 | 
				
			||||||
    else if (Yap_chtype[ch] == SL)
 | 
					    } else if (Yap_chtype[ch] == SL) {
 | 
				
			||||||
      return (!*++s);
 | 
					      return (!s[1]);
 | 
				
			||||||
    else if ((ch == ',' || ch == '.') && !s[1])
 | 
					    } else if ((ch == ',' || ch == '.') && !s[1]) {
 | 
				
			||||||
      return FALSE;
 | 
					      return FALSE;
 | 
				
			||||||
    else
 | 
					    } else {
 | 
				
			||||||
      while (ch) {
 | 
					      while (ch) {
 | 
				
			||||||
	if (Yap_chtype[ch] != SY)
 | 
						if (Yap_chtype[ch] != SY) {
 | 
				
			||||||
	  return FALSE;
 | 
						  return FALSE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	ch = *++s;
 | 
						ch = *++s;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
  } else
 | 
					  } else
 | 
				
			||||||
    while ((ch = *++s) != 0)
 | 
					    while ((ch = *++s) != 0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -239,6 +239,9 @@ void make_root_frames(void) {
 | 
				
			|||||||
  /* root dependency frame */
 | 
					  /* root dependency frame */
 | 
				
			||||||
  if (!GLOBAL_root_dep_fr) {
 | 
					  if (!GLOBAL_root_dep_fr) {
 | 
				
			||||||
    new_dependency_frame(GLOBAL_root_dep_fr, FALSE, NULL, NULL, NULL, NULL, NULL);
 | 
					    new_dependency_frame(GLOBAL_root_dep_fr, FALSE, NULL, NULL, NULL, NULL, NULL);
 | 
				
			||||||
 | 
					#ifdef TABLING
 | 
				
			||||||
 | 
					    DepFr_cons_cp(GLOBAL_root_dep_fr) = B;
 | 
				
			||||||
 | 
					#endif /* TABLING */
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
#endif /* TABLING */
 | 
					#endif /* TABLING */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -513,8 +513,8 @@ extern X_API int PL_recorded_external(char *, term_t);
 | 
				
			|||||||
extern X_API int PL_erase_external(char *);
 | 
					extern X_API int PL_erase_external(char *);
 | 
				
			||||||
extern X_API int PL_action(int,...);
 | 
					extern X_API int PL_action(int,...);
 | 
				
			||||||
extern X_API void PL_on_halt(void (*)(int, void *), void *);
 | 
					extern X_API void PL_on_halt(void (*)(int, void *), void *);
 | 
				
			||||||
extern X_API void *PL_malloc(int);
 | 
					extern X_API void *PL_malloc(size_t);
 | 
				
			||||||
extern X_API void *PL_realloc(void*,int);
 | 
					extern X_API void *PL_realloc(void*,size_t);
 | 
				
			||||||
extern X_API void PL_free(void *);
 | 
					extern X_API void PL_free(void *);
 | 
				
			||||||
extern X_API int  PL_eval_expression_to_int64_ex(term_t t, int64_t *val);
 | 
					extern X_API int  PL_eval_expression_to_int64_ex(term_t t, int64_t *val);
 | 
				
			||||||
extern X_API void  PL_cleanup_fork(void);
 | 
					extern X_API void  PL_cleanup_fork(void);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@
 | 
				
			|||||||
:- module(system, [concat_atom/2,
 | 
					:- module(system, [concat_atom/2,
 | 
				
			||||||
		   concat_atom/3,
 | 
							   concat_atom/3,
 | 
				
			||||||
		   setenv/2,
 | 
							   setenv/2,
 | 
				
			||||||
		   prolog_to_os_filename/2,
 | 
					 | 
				
			||||||
		   is_absolute_file_name/1,
 | 
							   is_absolute_file_name/1,
 | 
				
			||||||
		   read_clause/1,
 | 
							   read_clause/1,
 | 
				
			||||||
		   string/1,
 | 
							   string/1,
 | 
				
			||||||
@@ -224,7 +223,6 @@ goal_expansion(rename_file(A,B),system:swi_rename_file(A,B)) :- swi_io.
 | 
				
			|||||||
goal_expansion(is_absolute_file_name(A), is_absolute_file_name(A)) :- swi_io.
 | 
					goal_expansion(is_absolute_file_name(A), is_absolute_file_name(A)) :- swi_io.
 | 
				
			||||||
goal_expansion(file_base_name(A,B),system:swi_file_base_name(A,B)) :- swi_io.
 | 
					goal_expansion(file_base_name(A,B),system:swi_file_base_name(A,B)) :- swi_io.
 | 
				
			||||||
goal_expansion(file_directory_name(A,B),system:swi_file_directory_name(A,B)) :- swi_io.
 | 
					goal_expansion(file_directory_name(A,B),system:swi_file_directory_name(A,B)) :- swi_io.
 | 
				
			||||||
goal_expansion(prolog_to_os_filename(A,B),system:swi_prolog_to_os_filename(A,B)) :- swi_io.
 | 
					 | 
				
			||||||
goal_expansion('$mark_executable'(A), system:'swi_is_absolute_file_name'(A)) :- swi_io.
 | 
					goal_expansion('$mark_executable'(A), system:'swi_is_absolute_file_name'(A)) :- swi_io.
 | 
				
			||||||
goal_expansion('$absolute_file_name'(A,B),system:'swi_$absolute_file_name'(A,B)) :- swi_io.
 | 
					goal_expansion('$absolute_file_name'(A,B),system:'swi_$absolute_file_name'(A,B)) :- swi_io.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -281,8 +279,6 @@ concat_atom(List, New) :-
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
setenv(X,Y) :- unix(putenv(X,Y)).
 | 
					setenv(X,Y) :- unix(putenv(X,Y)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prolog_to_os_filename(X,X).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
is_absolute_file_name(X) :-
 | 
					is_absolute_file_name(X) :-
 | 
				
			||||||
	absolute_file_name(X,X).
 | 
						absolute_file_name(X,X).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -612,8 +612,17 @@ TrNode core_breadth_reduction(TrEngine engine, TrNode node, TrNode breadth_node,
 | 
				
			|||||||
    } while (bucket != first_bucket);
 | 
					    } while (bucket != first_bucket);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    do {
 | 
					    do {
 | 
				
			||||||
      if (TrNode_entry(child) == PairEndTag)
 | 
					      if (TrNode_entry(child) == PairEndTag) {
 | 
				
			||||||
        return core_breadth_reduction(engine, child, breadth_node, opt_level, construct_function, destruct_function, copy_function, correct_order_function);
 | 
					        /* do breadth reduction simplification */
 | 
				
			||||||
 | 
					        node = TrNode_parent(child);
 | 
				
			||||||
 | 
					        DATA_DESTRUCT_FUNCTION = destruct_function;
 | 
				
			||||||
 | 
					        remove_child_nodes(TrNode_child(node));
 | 
				
			||||||
 | 
					        TrNode_child(node) = NULL;
 | 
				
			||||||
 | 
					        node = trie_node_check_insert(node, PairEndTag);
 | 
				
			||||||
 | 
					        INCREMENT_ENTRIES(CURRENT_TRIE_ENGINE);
 | 
				
			||||||
 | 
					        return node;
 | 
				
			||||||
 | 
					        //return core_breadth_reduction(engine, node, breadth_node, opt_level, construct_function, destruct_function, copy_function, correct_order_function);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      while (IS_FUNCTOR_NODE(child)) {
 | 
					      while (IS_FUNCTOR_NODE(child)) {
 | 
				
			||||||
        child = TrNode_child(child);
 | 
					        child = TrNode_child(child);
 | 
				
			||||||
        if (IS_HASH_NODE(child)) { // gets first child in the hash
 | 
					        if (IS_HASH_NODE(child)) { // gets first child in the hash
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -272,8 +272,8 @@ ensure_space(char **sp, size_t room, unsigned flags) {
 | 
				
			|||||||
    min += 512;
 | 
					    min += 512;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (flags & BUF_MALLOC) {
 | 
					  if (flags & BUF_MALLOC) {
 | 
				
			||||||
    free(*sp);
 | 
					    PL_free(*sp);
 | 
				
			||||||
    *sp = malloc(room);
 | 
					    *sp = PL_malloc(room);
 | 
				
			||||||
    return *sp; 
 | 
					    return *sp; 
 | 
				
			||||||
  } else if (flags & BUF_RING) {
 | 
					  } else if (flags & BUF_RING) {
 | 
				
			||||||
    for (i=1; i<= SWI_BUF_RINGS; i++)
 | 
					    for (i=1; i<= SWI_BUF_RINGS; i++)
 | 
				
			||||||
@@ -512,7 +512,7 @@ static int do_yap_putc(int sno, wchar_t ch) {
 | 
				
			|||||||
    UInt bufsize = putc_cur_lim-putc_cur_buf;
 | 
					    UInt bufsize = putc_cur_lim-putc_cur_buf;
 | 
				
			||||||
    UInt bufpos = putc_curp-putc_cur_buf;
 | 
					    UInt bufpos = putc_curp-putc_cur_buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!(putc_cur_buf = realloc(putc_cur_buf, bufsize+SWI_BUF_SIZE))) {
 | 
					    if (!(putc_cur_buf = PL_realloc(putc_cur_buf, bufsize+SWI_BUF_SIZE))) {
 | 
				
			||||||
      /* we can+t go forever */
 | 
					      /* we can+t go forever */
 | 
				
			||||||
      return FALSE;
 | 
					      return FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -564,7 +564,7 @@ X_API int PL_get_chars(term_t l, char **sp, unsigned flags)
 | 
				
			|||||||
  if ((flags & BUF_RING)) {
 | 
					  if ((flags & BUF_RING)) {
 | 
				
			||||||
    tmp = alloc_ring_buf();
 | 
					    tmp = alloc_ring_buf();
 | 
				
			||||||
  } else if ((flags & BUF_MALLOC)) {
 | 
					  } else if ((flags & BUF_MALLOC)) {
 | 
				
			||||||
    tmp = malloc(SWI_BUF_SIZE);
 | 
					    tmp = PL_malloc(SWI_BUF_SIZE);
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    tmp = SWI_buffers[0];
 | 
					    tmp = SWI_buffers[0];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -641,7 +641,7 @@ X_API int PL_get_chars(term_t l, char **sp, unsigned flags)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  if (flags & BUF_MALLOC) {
 | 
					  if (flags & BUF_MALLOC) {
 | 
				
			||||||
    size_t sz = strlen(tmp);
 | 
					    size_t sz = strlen(tmp);
 | 
				
			||||||
    char *nbf = malloc(sz+1);
 | 
					    char *nbf = PL_malloc(sz+1);
 | 
				
			||||||
    if (!nbf)
 | 
					    if (!nbf)
 | 
				
			||||||
      return 0;
 | 
					      return 0;
 | 
				
			||||||
    strncpy(nbf,tmp,sz+1);
 | 
					    strncpy(nbf,tmp,sz+1);
 | 
				
			||||||
@@ -685,7 +685,7 @@ X_API int PL_get_wchars(term_t l, size_t *len, wchar_t **wsp, unsigned flags)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  room = (sz+1)*sizeof(wchar_t);
 | 
					  room = (sz+1)*sizeof(wchar_t);
 | 
				
			||||||
  if (flags & BUF_MALLOC) {
 | 
					  if (flags & BUF_MALLOC) {
 | 
				
			||||||
    *wsp = buf = (wchar_t *)malloc(room);
 | 
					    *wsp = buf = (wchar_t *)PL_malloc(room);
 | 
				
			||||||
  } else if (flags & BUF_RING) {
 | 
					  } else if (flags & BUF_RING) {
 | 
				
			||||||
    *wsp = (wchar_t *)alloc_ring_buf();
 | 
					    *wsp = (wchar_t *)alloc_ring_buf();
 | 
				
			||||||
    buf = (wchar_t *)ensure_space((char **)wsp, room, flags);
 | 
					    buf = (wchar_t *)ensure_space((char **)wsp, room, flags);
 | 
				
			||||||
@@ -1129,7 +1129,7 @@ X_API int PL_cons_functor(term_t d, functor_t f,...)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  va_list ap;
 | 
					  va_list ap;
 | 
				
			||||||
  int arity, i;
 | 
					  int arity, i;
 | 
				
			||||||
  Term *tmp = (Term *)SWI_buffers[0];
 | 
					  Term *tmp, t;
 | 
				
			||||||
  Functor ff = SWIFunctorToFunctor(f);
 | 
					  Functor ff = SWIFunctorToFunctor(f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (IsAtomTerm((Term)ff)) {
 | 
					  if (IsAtomTerm((Term)ff)) {
 | 
				
			||||||
@@ -1137,46 +1137,55 @@ X_API int PL_cons_functor(term_t d, functor_t f,...)
 | 
				
			|||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  arity = ArityOfFunctor(ff);
 | 
					  arity = ArityOfFunctor(ff);
 | 
				
			||||||
  if (arity > SWI_TMP_BUF_SIZE/sizeof(YAP_CELL)) {
 | 
					  while (Unsigned(H+arity) > Unsigned(ASP)-CreepFlag) {
 | 
				
			||||||
    fprintf(stderr,"PL_cons_functor: arity too large (%d)\n", arity); 
 | 
					    if (!Yap_gc(0, ENV, CP)) {
 | 
				
			||||||
    return FALSE;
 | 
					      return FALSE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (arity == 2 && ff == FunctorDot) {
 | 
				
			||||||
 | 
					    t = Yap_MkNewPairTerm();
 | 
				
			||||||
 | 
					    tmp = RepPair(t);
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    t = Yap_MkNewApplTerm(ff, arity);
 | 
				
			||||||
 | 
					    tmp = RepAppl(t)+1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  va_start (ap, f);
 | 
					  va_start (ap, f);
 | 
				
			||||||
  for (i = 0; i < arity; i++) {
 | 
					  for (i = 0; i < arity; i++) {
 | 
				
			||||||
    tmp[i] =  Yap_GetFromSlot(va_arg(ap, term_t));
 | 
					    Yap_unify(tmp[i],Yap_GetFromSlot(va_arg(ap, term_t)));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  va_end (ap);
 | 
					  va_end (ap);
 | 
				
			||||||
  if (arity == 2 && ff == FunctorDot)
 | 
					  Yap_PutInSlot(d,t);
 | 
				
			||||||
    Yap_PutInSlot(d,MkPairTerm(tmp[0],tmp[1]));
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    Yap_PutInSlot(d,Yap_MkApplTerm(ff,arity,tmp));
 | 
					 | 
				
			||||||
  if (Unsigned(H) > Unsigned(ASP)-CreepFlag) {
 | 
					 | 
				
			||||||
    if (!Yap_gc(0, ENV, CP)) {
 | 
					 | 
				
			||||||
      return FALSE;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X_API int PL_cons_functor_v(term_t d, functor_t f,term_t a0)
 | 
					X_API int PL_cons_functor_v(term_t d, functor_t f, term_t a0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  int arity;
 | 
					  int arity, i;
 | 
				
			||||||
 | 
					  Term *tmp, t;
 | 
				
			||||||
  Functor ff = SWIFunctorToFunctor(f);
 | 
					  Functor ff = SWIFunctorToFunctor(f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (IsAtomTerm((Term)ff)) {
 | 
					  if (IsAtomTerm((Term)ff)) {
 | 
				
			||||||
    Yap_PutInSlot(d,(Term)ff);
 | 
					    Yap_PutInSlot(d, (YAP_Term)f);
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  arity = ArityOfFunctor(ff);
 | 
					  arity = ArityOfFunctor(ff);
 | 
				
			||||||
  if (arity == 2 && ff == FunctorDot)
 | 
					  while (Unsigned(H+arity) > Unsigned(ASP)-CreepFlag) {
 | 
				
			||||||
    Yap_PutInSlot(d,MkPairTerm(Yap_GetFromSlot(a0),Yap_GetFromSlot(a0+1)));    
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    Yap_PutInSlot(d,Yap_MkApplTerm(ff,arity,Yap_AddressFromSlot(a0)));
 | 
					 | 
				
			||||||
  if (Unsigned(H) > Unsigned(ASP)-CreepFlag) {
 | 
					 | 
				
			||||||
    if (!Yap_gc(0, ENV, CP)) {
 | 
					    if (!Yap_gc(0, ENV, CP)) {
 | 
				
			||||||
      return FALSE;
 | 
					      return FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  if (arity == 2 && ff == FunctorDot) {
 | 
				
			||||||
 | 
					    t = Yap_MkNewPairTerm();
 | 
				
			||||||
 | 
					    tmp = RepPair(t);
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    t = Yap_MkNewApplTerm(ff, arity);
 | 
				
			||||||
 | 
					    tmp = RepAppl(t)+1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  for (i = 0; i < arity; i++) {
 | 
				
			||||||
 | 
					    Yap_unify(tmp[i],Yap_GetFromSlot(a0));
 | 
				
			||||||
 | 
					    a0++;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  Yap_PutInSlot(d,t);
 | 
				
			||||||
  return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -3011,21 +3020,33 @@ PL_set_engine(PL_engine_t engine, PL_engine_t *old)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X_API void *
 | 
					X_API void *
 | 
				
			||||||
PL_malloc(int sz)
 | 
					PL_malloc(size_t sz)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return (void *)Yap_AllocCodeSpace((long unsigned int)sz);
 | 
					  if ( sz == 0 )
 | 
				
			||||||
 | 
					    return NULL;
 | 
				
			||||||
 | 
					  return (void *)malloc((long unsigned int)sz);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X_API void *
 | 
					X_API void *
 | 
				
			||||||
PL_realloc(void *ptr, int sz)
 | 
					PL_realloc(void *ptr, size_t sz)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return Yap_ReallocCodeSpace((char *)ptr,(long unsigned int)sz);
 | 
					  if (ptr) {
 | 
				
			||||||
 | 
					    if (sz) {
 | 
				
			||||||
 | 
					      return realloc((char *)ptr,(long unsigned int)sz);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      free(ptr);
 | 
				
			||||||
 | 
					      return NULL;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    return PL_malloc(sz);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X_API void
 | 
					X_API void
 | 
				
			||||||
PL_free(void *obj)
 | 
					PL_free(void *obj)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return Yap_FreeCodeSpace((char *)obj);
 | 
					  if (obj)
 | 
				
			||||||
 | 
					    free(obj);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X_API int
 | 
					X_API int
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,6 +45,8 @@
 | 
				
			|||||||
:- use_module(library(option)).
 | 
					:- use_module(library(option)).
 | 
				
			||||||
:- use_module(library(error)).
 | 
					:- use_module(library(error)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:- use_module(library(maplist)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:- use_foreign_library(foreign(process)).
 | 
					:- use_foreign_library(foreign(process)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** <module> Create processes and redirect I/O
 | 
					/** <module> Create processes and redirect I/O
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -127,6 +127,10 @@
 | 
				
			|||||||
	    (rdf_meta)/1,		% +Heads
 | 
						    (rdf_meta)/1,		% +Heads
 | 
				
			||||||
	    op(1150, fx, (rdf_meta))
 | 
						    op(1150, fx, (rdf_meta))
 | 
				
			||||||
	  ]).
 | 
						  ]).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:- expects_dialect(swi).
 | 
				
			||||||
 | 
					:- assert(system:swi_io).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:- use_module(library(rdf)).
 | 
					:- use_module(library(rdf)).
 | 
				
			||||||
:- use_module(library(lists)).
 | 
					:- use_module(library(lists)).
 | 
				
			||||||
:- use_module(library(shlib)).
 | 
					:- use_module(library(shlib)).
 | 
				
			||||||
@@ -153,6 +157,16 @@
 | 
				
			|||||||
:- discontiguous
 | 
					:- discontiguous
 | 
				
			||||||
	term_expansion/2.
 | 
						term_expansion/2.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:- meta_predicate
 | 
				
			||||||
 | 
						rdf_transaction(0),
 | 
				
			||||||
 | 
						rdf_transaction(0, +),
 | 
				
			||||||
 | 
						rdf_monitor(1, +),
 | 
				
			||||||
 | 
						rdf_save(+, :),
 | 
				
			||||||
 | 
						rdf_load(+, :).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:- thread_local
 | 
				
			||||||
 | 
						named_anon/2.			% +Resource, -Id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** <module> Core RDF database
 | 
					/** <module> Core RDF database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@see Documentation for semweb package
 | 
					@see Documentation for semweb package
 | 
				
			||||||
@@ -1369,16 +1383,6 @@ rdf_reset_db :-
 | 
				
			|||||||
%			file-url (=|file://path|=) or a stream wrapped
 | 
					%			file-url (=|file://path|=) or a stream wrapped
 | 
				
			||||||
%			in a term stream(Out).
 | 
					%			in a term stream(Out).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:- meta_predicate
 | 
					 | 
				
			||||||
	rdf_transaction(0),
 | 
					 | 
				
			||||||
	rdf_transaction(0, +),
 | 
					 | 
				
			||||||
	rdf_monitor(1, +),
 | 
					 | 
				
			||||||
	rdf_save(+, :),
 | 
					 | 
				
			||||||
	rdf_load(+, :).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:- thread_local
 | 
					 | 
				
			||||||
	named_anon/2.			% +Resource, -Id
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rdf_save(File) :-
 | 
					rdf_save(File) :-
 | 
				
			||||||
	rdf_save2(File, []).
 | 
						rdf_save2(File, []).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2183,3 +2187,7 @@ into(_, _) --> [].			% TBD
 | 
				
			|||||||
in_time(Triples, ParseTime) -->
 | 
					in_time(Triples, ParseTime) -->
 | 
				
			||||||
	[ ' in ~2f sec; ~D triples'-[ParseTime, Triples]
 | 
						[ ' in ~2f sec; ~D triples'-[ParseTime, Triples]
 | 
				
			||||||
	].
 | 
						].
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:- retract(system:swi_io).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,4 +56,4 @@ install: all
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -f *.o *~ $(OBJS) $(SOBJS) *.BAK
 | 
						rm -f *.o *~ $(OBJS) $(SOBJS) *.BAK
 | 
				
			||||||
 | 
						-(cd libtai && $(MAKE) clean)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1036,6 +1036,8 @@ file_name_extension(A1,A2,F) :-
 | 
				
			|||||||
	atom_codes(A2, S2),
 | 
						atom_codes(A2, S2),
 | 
				
			||||||
	(
 | 
						(
 | 
				
			||||||
	 S2 = [0'.|_] %'
 | 
						 S2 = [0'.|_] %'
 | 
				
			||||||
 | 
						;
 | 
				
			||||||
 | 
						 A2 = ''
 | 
				
			||||||
	->
 | 
						->
 | 
				
			||||||
	 atom_concat(A1, A2, F)
 | 
						 atom_concat(A1, A2, F)
 | 
				
			||||||
	;
 | 
						;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								pl/yio.yap
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								pl/yio.yap
									
									
									
									
									
								
							@@ -1209,3 +1209,21 @@ with_output_to(Output, Command) :-
 | 
				
			|||||||
	atom_codes(Char, [Code]),
 | 
						atom_codes(Char, [Code]),
 | 
				
			||||||
	'$codes_to_chars'(String0, String, Chars).
 | 
						'$codes_to_chars'(String0, String, Chars).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prolog_to_os_filename(Prolog, OS) :-
 | 
				
			||||||
 | 
						'$undefined'(swi_prolog_to_os_filename(Prolog, OS), system),
 | 
				
			||||||
 | 
						'$current_module'(Old, system),
 | 
				
			||||||
 | 
						load_foreign_files([libplstream], [], initIO),
 | 
				
			||||||
 | 
						'$current_module'(system, Old),
 | 
				
			||||||
 | 
						fail.
 | 
				
			||||||
 | 
					prolog_to_os_filename(Prolog, OS) :-
 | 
				
			||||||
 | 
						system:swi_prolog_to_os_filename(Prolog, OS).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user