Changeset 4ab28dc in git


Ignore:
Timestamp:
Feb 16, 2011, 7:46:51 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
9f04ad074eb79dfc6f730e59b1ec34816c133461
Parents:
5c3bc3a6d0bf51749fcdb814cb5faa401681046d
Message:
better error testing: blackbox

git-svn-id: file:///usr/local/Singular/svn/trunk@13849 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/blackbox.cc

    r5c3bc3 r4ab28dc  
    66
    77//#define BLACKBOX_DEVEL 1
     8#define MAX_BB_TYPES 256
    89
    9 static blackbox* blackboxTable[100];
    10 static char *    blackboxName[100];
     10static blackbox* blackboxTable[MAX_BB_TYPES];
     11static char *    blackboxName[MAX_BB_TYPES];
    1112static int blackboxTableCnt=0;
    1213#define BLACKBOX_OFFSET (MAX_TOK+1)
     
    7879int setBlackboxStuff(blackbox *bb, const char *n)
    7980{
    80   blackboxTable[blackboxTableCnt]=bb;
    81   blackboxName[blackboxTableCnt]=omStrDup(n);
     81  int where=-1;
     82  if (MAX_BB_TYPES<=blackboxTableCnt)
     83  {
     84    // second try, find empty slot from removed bb:
     85    for (int i=0;i<MAX_BB_TYPES;i++)
     86    {
     87      if (blackboxTable[i]==NULL) { where=i; break; }
     88    }
     89  }
     90  else
     91  {
     92    where=blackboxTableCnt;
     93    blackboxTableCnt++;
     94  }
     95  if (where==-1)
     96  {
     97    WerrorS("too many bb types defined");
     98    return 0;
     99  }
     100  else
     101  {
     102    blackboxTable[where]=bb;
     103    blackboxName[where]=omStrDup(n);
    82104#ifdef BLACKBOX_DEVEL
    83   Print("define bb:name=%s:rt=%d (table:cnt=%d)\n",blackboxName[blackboxTableCnt],blackboxTableCnt+BLACKBOX_OFFSET,blackboxTableCnt);
     105    Print("define bb:name=%s:rt=%d (table:cnt=%d)\n",blackboxName[where],where+BLACKBOX_OFFSET,where);
    84106#endif
    85   if (bb->blackbox_destroy==NULL) bb->blackbox_destroy=blackbox_default_destroy;
    86   if (bb->blackbox_String==NULL)  bb->blackbox_String=blackbox_default_String;
    87   if (bb->blackbox_Print==NULL)   bb->blackbox_Print=blackbox_default_Print;
    88   if (bb->blackbox_Init==NULL)    bb->blackbox_Init=blackbox_default_Init;
    89   if (bb->blackbox_Copy==NULL)    bb->blackbox_Copy=blackbox_default_Copy;
    90   if (bb->blackbox_Op1==NULL)     bb->blackbox_Op1=blackboxDefaultOp1;
    91   if (bb->blackbox_Op2==NULL)     bb->blackbox_Op2=blackboxDefaultOp2;
    92   if (bb->blackbox_Op3==NULL)     bb->blackbox_Op3=blackbox_default_Op3;
    93   if (bb->blackbox_OpM==NULL)     bb->blackbox_OpM=blackbox_default_OpM;
    94   if (bb->blackbox_Check==NULL)   bb->blackbox_Check=blackbox_default_Check;
    95   blackboxTableCnt++;
    96   return blackboxTableCnt+BLACKBOX_OFFSET-1;
     107    if (bb->blackbox_destroy==NULL) bb->blackbox_destroy=blackbox_default_destroy;
     108    if (bb->blackbox_String==NULL)  bb->blackbox_String=blackbox_default_String;
     109    if (bb->blackbox_Print==NULL)   bb->blackbox_Print=blackbox_default_Print;
     110    if (bb->blackbox_Init==NULL)    bb->blackbox_Init=blackbox_default_Init;
     111    if (bb->blackbox_Copy==NULL)    bb->blackbox_Copy=blackbox_default_Copy;
     112    if (bb->blackbox_Op1==NULL)     bb->blackbox_Op1=blackboxDefaultOp1;
     113    if (bb->blackbox_Op2==NULL)     bb->blackbox_Op2=blackboxDefaultOp2;
     114    if (bb->blackbox_Op3==NULL)     bb->blackbox_Op3=blackbox_default_Op3;
     115    if (bb->blackbox_OpM==NULL)     bb->blackbox_OpM=blackbox_default_OpM;
     116    if (bb->blackbox_Check==NULL)   bb->blackbox_Check=blackbox_default_Check;
     117    return where+BLACKBOX_OFFSET;
     118  }
    97119}
    98120void removeBlackboxStuff(const int rt)
    99121{
     122  omfree(blackboxTable[rt-BLACKBOX_OFFSET]);
     123  omfree(blackboxName[rt-BLACKBOX_OFFSET]);
    100124  blackboxTable[rt-BLACKBOX_OFFSET]=NULL;
    101125  blackboxName[rt-BLACKBOX_OFFSET]=NULL;
Note: See TracChangeset for help on using the changeset viewer.