file exists system predicate $source_file -> $user source hide and make system preds fix check_head_and_body user_expansion never fails goal expansion is controlled b dynamic procedure add must_be_of_type predicate_indicator fix neat_call, debug flag is user controlled use simplecudd, not ptoblogbdd compile all of myddas fx junk in file_name fix warnings use common file opening struct and funds avoid pairs module fix db queues
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*************************************************************************
 | 
						|
*									 *
 | 
						|
*	 YAP Prolog 							 *
 | 
						|
*									 *
 | 
						|
*	Yap Prolog was developed at NCCUP - Universidade do Porto	 *
 | 
						|
*									 *
 | 
						|
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997	 *
 | 
						|
*									 *
 | 
						|
**************************************************************************
 | 
						|
*									 *
 | 
						|
* File:		myddas_mysql.c						 *
 | 
						|
* Last rev:	22/03/05						 *
 | 
						|
* mods:									 *
 | 
						|
* comments:	Predicates for comunicating with a mysql database system *
 | 
						|
*									 *
 | 
						|
*************************************************************************/
 | 
						|
 | 
						|
#include "Yap.h"
 | 
						|
#include <string.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <mysql.h>
 | 
						|
#include <myddas_util.h>
 | 
						|
 | 
						|
#ifdef MYDDAS_MYSQL
 | 
						|
/* Auxilary function to table_write*/
 | 
						|
static void n_print(Int, char);
 | 
						|
#endif
 | 
						|
 | 
						|
/* Auxilary function to table_write*/
 | 
						|
static void n_print(Int n, char c) {
 | 
						|
  for (; n > 0; n--)
 | 
						|
    printf("%c", c);
 | 
						|
}
 | 
						|
 | 
						|
void myddas_util_table_write(MYSQL_RES *res_set) {
 | 
						|
 | 
						|
  MYSQL_ROW row;
 | 
						|
  MYSQL_FIELD *fields;
 | 
						|
  Int i, f;
 | 
						|
 | 
						|
  if (mysql_num_rows(res_set) == 0) {
 | 
						|
    printf("Empty Set\n");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  f = mysql_num_fields(res_set);
 | 
						|
 | 
						|
  fields = mysql_fetch_field(res_set);
 | 
						|
  for (i = 0; i < f; i++) {
 | 
						|
    printf("+");
 | 
						|
    if (strlen(fields[i].name) > fields[i].max_length)
 | 
						|
      fields[i].max_length = strlen(fields[i].name);
 | 
						|
    n_print(fields[i].max_length + 2, '-');
 | 
						|
  }
 | 
						|
  printf("+\n");
 | 
						|
 | 
						|
  for (i = 0; i < f; i++) {
 | 
						|
    printf("|");
 | 
						|
    printf(" %s ", fields[i].name);
 | 
						|
    n_print(fields[i].max_length - strlen(fields[i].name), ' ');
 | 
						|
  }
 | 
						|
  printf("|\n");
 | 
						|
 | 
						|
  for (i = 0; i < f; i++) {
 | 
						|
    printf("+");
 | 
						|
    n_print(fields[i].max_length + 2, '-');
 | 
						|
  }
 | 
						|
  printf("+\n");
 | 
						|
 | 
						|
  while ((row = mysql_fetch_row(res_set)) != NULL) {
 | 
						|
    for (i = 0; i < f; i++) {
 | 
						|
      printf("|");
 | 
						|
      if (row[i] != NULL) {
 | 
						|
        printf(" %s ", row[i]);
 | 
						|
        n_print(fields[i].max_length - strlen(row[i]), ' ');
 | 
						|
      } else {
 | 
						|
        printf(" NULL ");
 | 
						|
        n_print(fields[i].max_length - 4, ' ');
 | 
						|
      }
 | 
						|
    }
 | 
						|
    printf("|\n");
 | 
						|
  }
 | 
						|
 | 
						|
  for (i = 0; i < f; i++) {
 | 
						|
    printf("+");
 | 
						|
    n_print(fields[i].max_length + 2, '-');
 | 
						|
  }
 | 
						|
  printf("+\n");
 | 
						|
}
 |