Ignore:
Timestamp:
May 3, 2006, 10:14:37 AM (15 years ago)
Author:
Eugene Romanenko
Message:

update makefiles, remove absolute paths, update djvulibre to version 3.5.17

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libdjvu/miniexp.cpp

    r15 r17  
    1515// -------------------------------------------------------------------
    1616*/
    17 /* $Id: miniexp.cpp,v 1.5 2005/09/14 02:46:54 leonb Exp $ */
     17/* $Id: miniexp.cpp,v 1.12 2006/02/21 19:27:41 leonb Exp $ */
    1818
    1919#ifdef HAVE_CONFIG_H
     
    108108symtable_t::~symtable_t()
    109109{
    110   for (int i=0; i<nbuckets; i++)
     110  int i=0;
     111  for (; i<nbuckets; i++)
    111112    while (buckets[i])
    112113      {
     
    124125  struct sym **b = new sym*[nb];
    125126  memset(b, 0, nb*sizeof(sym*));
    126   for (int i=0; i<nbuckets; i++)
     127  int i=0;
     128  for (; i<nbuckets; i++)
    127129    while (buckets[i])
    128130      {
     
    363365      // mark
    364366      minivar_t::mark(gc_mark);
    365       for (int i=0; i<recentsize; i++)
    366         gc_mark((miniexp_t*)&gc.recent[i]);
     367      { // extra nesting for windows
     368        for (int i=0; i<recentsize; i++)
     369          gc_mark((miniexp_t*)&gc.recent[i]);
     370      }
    367371      // sweep
    368372      gc.objs_free = gc.pairs_free = 0;
     
    448452minilisp_gc(void)
    449453{
    450   for (int i=0; i<recentsize; i++)
     454  int i;
     455  for (i=0; i<recentsize; i++)
    451456    gc.recent[i] = 0;
    452457  gc_run();
     
    674679}
    675680
    676 void
    677 miniobj_t::mark(minilisp_mark_t action)
     681void 
     682miniobj_t::mark(minilisp_mark_t*)
    678683{
    679684}
     
    789794          static char *tr1 = "\"\\tnrbf";
    790795          static char *tr2 = "\"\\\t\n\r\b\f";
    791           for (int i=0; tr2[i]; i++)
    792             if (c == tr2[i])
    793               letter = tr1[i];
     796          { // extra nesting for windows
     797            for (int i=0; tr2[i]; i++)
     798              if (c == tr2[i])
     799                letter = tr1[i];
     800          }
    794801          char_out('\\', d, n);
    795802          if (letter)
     
    857864miniexp_concat(miniexp_t p)
    858865{
    859   minivar_t l = p;
     866  miniexp_t l = p;
    860867  const char *s;
    861868  int n = 0;
     
    881888/* -------------------------------------------------- */
    882889
     890extern "C" {
     891  // SunCC needs this to be defined inside extern "C" { ... }
     892  // Beware the difference between extern "C" {...} and extern "C".
     893  miniexp_t (*minilisp_macrochar_parser[128])(void);
     894}
     895
    883896/* --------- OUTPUT */
    884 
    885 int minilisp_print_7bits = 1;
    886897
    887898static FILE *outputfile;
     
    897908
    898909int (*minilisp_puts)(const char *s) = stdio_puts;
     910
     911int minilisp_print_7bits = 1;
    899912
    900913void
     
    11331146  printer.print(p);
    11341147  // check
    1135   ASSERT(! printer.l);
     1148  ASSERT(printer.l == 0);
    11361149  return p;
    11371150}
     
    11451158}
    11461159
     1160/* --------- PNAME */
     1161
     1162static struct {
     1163  char *b; int l; int m;
     1164} pname_data;
     1165
     1166static int
     1167pname_puts(const char *s)
     1168{
     1169  int x = strlen(s);
     1170  if (pname_data.l + x >= pname_data.m)
     1171    {
     1172      int nm = pname_data.l + x + 256;
     1173      char *nb = new char[nm+1];
     1174      memcpy(nb, pname_data.b, pname_data.l);
     1175      delete [] pname_data.b;
     1176      pname_data.m = nm;
     1177      pname_data.b = nb;
     1178    }
     1179  strcpy(pname_data.b + pname_data.l, s);
     1180  pname_data.l += x;
     1181  return x;
     1182}
     1183
     1184miniexp_t
     1185miniexp_pname(miniexp_t p, int width)
     1186{
     1187  minivar_t r;
     1188  int (*saved)(const char*) = minilisp_puts;
     1189  pname_data.b = 0;
     1190  pname_data.m = pname_data.l = 0;
     1191  try
     1192    {
     1193      minilisp_puts = pname_puts;
     1194      if (width > 0)
     1195        miniexp_pprin(p, width);
     1196      else
     1197        miniexp_prin(p);
     1198      minilisp_puts = saved;
     1199      r = miniexp_string(pname_data.b);
     1200      delete [] pname_data.b;
     1201      pname_data.b = 0;
     1202    }
     1203  catch(...)
     1204    {
     1205      minilisp_puts = saved;
     1206      delete [] pname_data.b;
     1207      pname_data.b = 0;
     1208    }
     1209  return r;
     1210}
     1211
     1212
     1213
    11471214/* --------- INPUT */
    11481215
     
    11671234
    11681235int (*minilisp_getc)(void) = stdio_getc;
     1236
    11691237int (*minilisp_ungetc)(int c) = stdio_ungetc;
    11701238
     
    11761244  minilisp_ungetc = stdio_ungetc;
    11771245}
    1178 
    1179 miniexp_t (*minilisp_macrochar_parser[128])(void);
    11801246
    11811247static void
     
    12751341          static char *tr1 = "tnrbfva";
    12761342          static char *tr2 = "\t\n\r\b\f\013\007";
    1277           for (int i=0; tr1[i]; i++)
    1278             if (c == tr1[i])
    1279               c = tr2[i];
     1343          { // extra nesting for windows
     1344            for (int i=0; tr1[i]; i++)
     1345              if (c == tr1[i])
     1346                c = tr2[i];
     1347          }
    12801348        }
    12811349      append(c,s,l,m);
     
    13791447                }
    13801448              p = read_miniexp(c);
    1381               if (p == miniexp_dummy)
     1449              if ((miniexp_t)p == miniexp_dummy)
    13821450                return miniexp_dummy;
    13831451              *where = miniexp_cons(p, miniexp_nil);
     
    14461514  // clear minivars
    14471515  minivar_t::mark(gc_clear);
    1448   for (int i=0; i<recentsize; i++)
    1449     gc.recent[i] = 0;
     1516  { // extra nesting for windows
     1517    for (int i=0; i<recentsize; i++)
     1518      gc.recent[i] = 0;
     1519  }
    14501520  // collect everything
    14511521  gc_run();
Note: See TracChangeset for help on using the changeset viewer.