[PPL-devel] [GIT] ppl/ppl(master): Get rid of pretty_printing stuff. A string wrapping function is made

Basile STARYNKEVITCH basile at starynkevitch.net
Fri Mar 27 17:46:09 CET 2009


Abramo Bagnara wrote:
> Module: ppl/ppl
> Branch: master
> Commit: 4bbd3ca34d382cab896a3ea43bd9fdb1d1df2df2
> URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=4bbd3ca34d382cab896a3ea43bd9fdb1d1df2df2
>
> Author: Abramo Bagnara <abramo.bagnara at gmail.com>
> Date:   Fri Mar 27 17:22:08 2009 +0100
>
> Get rid of pretty_printing stuff. A string wrapping function is made
> available.


What is the correct way of debugprinting now? Roberto mentioned in 
http://www.cs.unipr.it/pipermail/ppl-devel/2009-March/014162.html that

/ppl_io_asprint_Polyhedron is obsolete. I would be glad of having a C function for printing inside a string buffer like the old to_buffer functions, with an indentation.

I think there are lots of interesting stuff in PPL git. What do you suggest me to use?

For what it is worth, the gcc/basilys.c file of MELT branch rev145113 still has

#warning using unstable PPL asprint functions "http://www.cs.unipr.it/pipermail/ppl-devel/2009-March/014162.html"
void
basilysgc_ppstrbuf_ppl_varnamvect (basilys_ptr_t sbuf_p, int indentsp, basilys_ptr_t ppl_p, basilys_ptr_t varnamvect_p)
{
  int mag = 0;
  char *ppstr = NULL;
  BASILYS_ENTERFRAME(4, NULL);
#define sbufv    curfram__.varptr[0]
#define pplv     curfram__.varptr[1]
#define varvectv curfram__.varptr[2]
#define spec_pplv ((struct basilysspecial_st*)(pplv))
  sbufv = sbuf_p;
  pplv = ppl_p;
  varvectv = varnamvect_p;
  if (!pplv) 
    goto end;
  ppl_io_set_variable_output_function (ppl_basilys_variable_output_function);
  mag = basilys_magic_discr((basilys_ptr_t) pplv);
  if (varvectv)
    basilys_pplcoefvectp = (basilys_ptr_t*)&varvectv;
  else
    basilys_pplcoefvectp = NULL;
  switch (mag) {
  case OBMAG_SPECPPL_COEFFICIENT:
    if (ppl_io_asprint_Coefficient(&ppstr, 
				   spec_pplv->val.sp_coefficient))
      fatal_error("failed to ppl_io_asprint_Coefficient");
    break;
  case OBMAG_SPECPPL_LINEAR_EXPRESSION:
    if (ppl_io_asprint_Linear_Expression(&ppstr,
					 spec_pplv->val.sp_linear_expression))
      fatal_error("failed to ppl_io_asprint_Linear_Expression");
    break;
  case OBMAG_SPECPPL_CONSTRAINT:
    if (ppl_io_asprint_Constraint(&ppstr, 
				  spec_pplv->val.sp_constraint))
      fatal_error("failed to ppl_io_asprint_Constraint");
    break;
  case OBMAG_SPECPPL_CONSTRAINT_SYSTEM:
    if (ppl_io_asprint_Constraint_System(&ppstr, 
					 spec_pplv->val.sp_constraint_system))
      fatal_error("failed to ppl_io_asprint_Constraint_System");
    break;
  case OBMAG_SPECPPL_GENERATOR:
    if (ppl_io_asprint_Generator(&ppstr, spec_pplv->val.sp_generator))
      fatal_error("failed to ppl_io_asprint_Generator");
    break;
  case OBMAG_SPECPPL_GENERATOR_SYSTEM:
    if (ppl_io_asprint_Generator_System(&ppstr, 
					spec_pplv->val.sp_generator_system))
      fatal_error("failed to ppl_io_asprint_Generator_System");
    break;
  default:
    {
      char errmsg[64];
      memset(errmsg, 0, sizeof(errmsg));
      snprintf(errmsg, sizeof(errmsg)-1, "{{unknown PPL magic %d}}", mag); 
      ppstr = xstrdup(errmsg);
    }
    break;
  }
  if (!ppstr) 
    fatal_error("ppl_io_asprint_* gives a null string pointer");
  /* in the resulting ppstr, replace each newline with appropriate
     indentation */
  {
    char*bl = NULL;		/* current begin of line */
    char*nl = NULL;		/* current newline = end of line */
    for (bl = ppstr; (nl = bl?strchr(bl, '\n'):NULL), bl; bl = nl?(nl+1):NULL) {
      if (nl) 
	*nl = (char)0;
      basilysgc_add_strbuf_raw((basilys_ptr_t) sbufv, bl);
      if (nl) 
	basilysgc_strbuf_add_indent((basilys_ptr_t) sbufv, indentsp, 0);
    }
  }
  free(ppstr);
 end:
  basilys_pplcoefvectp = (basilys_ptr_t*)0;
  BASILYS_EXITFRAME();
#undef sbufv
#undef pplv
#undef varvectv
#undef spec_pplv
}


But of course I can replace it with new code. But what are the blessed way of debugprinting into a malloc-ed string or whatever using the C API?


Of course I am using the latest git snapshot and I am git pulling several times a day.

Regards.
/


-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***




More information about the PPL-devel mailing list