Merge /Users/vsc/git/yap-6.3

This commit is contained in:
Vítor Santos Costa 2014-03-15 22:29:08 +00:00
commit 242f872b5d
9 changed files with 34 additions and 22 deletions

View File

@ -9201,9 +9201,11 @@ Yap_absmi(int inp)
GONext();
}
}
break;
case (CELL)FunctorLongInt:
PREG = NEXTOP(PREG, xl);
GONext();
break;
default:
PREG = PREG->u.xl.F;
GONext();

View File

@ -233,7 +233,7 @@ PL_EXPORT_DATA(IOSTREAM) S__iob[3]; /* Libs standard streams */
static inline void
S__checkpasteeof(IOSTREAM *s, int c)
{
if ( (c)==-1 && (s)->flags & (SIO_FEOF|SIO_FERR) )
if ( (c)==-1 && ((s)->flags & (SIO_FEOF|SIO_FERR)) )
((s)->flags |= SIO_FEOF2);
}

View File

@ -2008,7 +2008,7 @@ found:
ref = PL_blob_data(sblob, NULL, &type);
if ( type == &stream_blob ) /* got a stream handle */
{ if ( ref->read && ref->write && /* stream pair */
info->flags & SS_NOPAIR )
(info->flags & SS_NOPAIR) )
return PL_error("set_stream", 2, NULL, ERR_PERMISSION,
aname, ATOM_stream_pair, stream);
@ -3421,7 +3421,7 @@ pl_seen(void)
pop_input_context();
if ( s && s->flags & SIO_NOFEOF )
if ( s && (s->flags & SIO_NOFEOF) )
return TRUE;
if ( s )
@ -3523,7 +3523,7 @@ PRED_IMPL("told", 0, told, 0)
popOutputContext();
if ( s && s->flags & SIO_NOFEOF )
if ( s && (s->flags & SIO_NOFEOF) )
return TRUE;
if ( s )
@ -4272,6 +4272,7 @@ PRED_IMPL("stream_property", 2, stream_property,
return FALSE;
}
}
return FALSE;
}

View File

@ -968,7 +968,7 @@ static unsigned char *
backSkipUTF8(unsigned const char *start, unsigned const char *end, int *chr)
{ const unsigned char *s;
for(s=end-1 ; s>start && *s&0x80; s--)
for(s=end-1 ; s>start && ( *s&0x80 ); s--)
;
utf8_get_char((char*)s, chr);

View File

@ -1345,6 +1345,7 @@ ScheckBOM(IOSTREAM *s)
return 0; /* empty stream */
s->bufp--;
}
return 0;
}
@ -2652,6 +2653,7 @@ Sread_file(void *handle, char *buf, size_t size)
return bytes;
}
return -1;
}

View File

@ -1201,7 +1201,7 @@ char* getFileName(const char *function) {
DdNode* LineParser(DdManager *manager, namedvars varmap, DdNode **inter, int maxinter, char *function, int iline) {
int istart, iend, ilength, i, symbol, ivar, inegvar, inegoper, iconst;
long startAt, endAt;
double secs;
//double secs;
DdNode *bdd;//, *temp;
char *term, curoper;
bdd = HIGH(manager);
@ -1269,7 +1269,7 @@ DdNode* LineParser(DdManager *manager, namedvars varmap, DdNode **inter, int max
} else {
switch(curoper) {
case '+':
if (inegvar ^ inegoper) ; else {
if (!(inegvar ^ inegoper)) {
bdd = HIGH(manager);
Cudd_Ref(bdd);
}
@ -1281,12 +1281,12 @@ DdNode* LineParser(DdManager *manager, namedvars varmap, DdNode **inter, int max
}
break;
case '#':
if (inegvar ^ inegoper) ; else bdd = NOT(bdd);
if (!(inegvar ^ inegoper)) bdd = NOT(bdd);
break;
}
}
endAt = clock();
secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
//secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
if (_debug) fprintf(stderr, "term: %s of line: %i took: %ld\n", term, iline, endAt - startAt);
//if ((endAt - startAt) > 10000000) Cudd_AutodynDisable(manager);
if (bdd == NULL) {
@ -1318,7 +1318,7 @@ DdNode* LineParser(DdManager *manager, namedvars varmap, DdNode **inter, int max
if (inegvar) bdd = BDD_Operator(manager, NOT(inter[ivar]), bdd, curoper, inegoper);
else bdd = BDD_Operator(manager, inter[ivar], bdd, curoper, inegoper);
endAt = clock();
secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
//secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
if (_debug) fprintf(stderr, "term: %s of line: %i took: %ld\n", term, iline, endAt - startAt);
//if ((endAt - startAt) > 10000000) Cudd_AutodynDisable(manager);
if (bdd == NULL) {
@ -1513,7 +1513,7 @@ DdNode* OnlineGenerateBDD(DdManager *manager, namedvars *varmap) {
DdNode* OnlineLineParser(DdManager *manager, namedvars *varmap, DdNode **inter, int maxinter, char *function, int iline) {
int istart, iend, ilength, i, symbol, ivar, inegvar, inegoper, iconst;
long startAt, endAt;
double secs;
//double secs;
DdNode *bdd;
char *term, curoper;
bdd = HIGH(manager);
@ -1581,7 +1581,7 @@ DdNode* OnlineLineParser(DdManager *manager, namedvars *varmap, DdNode **inter,
} else {
switch(curoper) {
case '+':
if (inegvar ^ inegoper) ; else {
if (!(inegvar ^ inegoper)) {
bdd = HIGH(manager);
Cudd_Ref(bdd);
}
@ -1593,12 +1593,12 @@ DdNode* OnlineLineParser(DdManager *manager, namedvars *varmap, DdNode **inter,
}
break;
case '#':
if (inegvar ^ inegoper) ; else bdd = NOT(bdd);
if (!(inegvar ^ inegoper)) bdd = NOT(bdd);
break;
}
}
endAt = clock();
secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
//secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
if (_debug) fprintf(stderr, "term: %s of line: %i took: %ld\n", term, iline, endAt - startAt);
//if ((endAt - startAt) > 10000000) Cudd_AutodynDisable(manager);
if (bdd == NULL) {
@ -1630,7 +1630,7 @@ DdNode* OnlineLineParser(DdManager *manager, namedvars *varmap, DdNode **inter,
if (inegvar) bdd = BDD_Operator(manager, NOT(inter[ivar]), bdd, curoper, inegoper);
else bdd = BDD_Operator(manager, inter[ivar], bdd, curoper, inegoper);
endAt = clock();
secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
//secs = ((double) (endAt - startAt)) / ((double) CLOCKS_PER_SEC);
if (_debug) fprintf(stderr, "term: %s of line: %i took: %ld\n", term, iline, endAt - startAt);
//if ((endAt - startAt) > 10000000) Cudd_AutodynDisable(manager);
if (bdd == NULL) {

View File

@ -761,7 +761,7 @@ double CalcExpectedCounts(extmanager * MyManager, DdNode *Current, char *query_i
// fprintf(stderr,"%%calcing down\n");
if (calcdown_needed != 0) {
double retd=CalcExpectedCountsDown(MyManager,Current, query_id);
// double retd=CalcExpectedCountsDown(MyManager,Current, query_id);
}
/* if(1 != retd){ */
/* fprintf(stderr,"down %e != up %e/%e\n",ret,retd,ret); */
@ -807,7 +807,7 @@ double CalcExpectedCounts(extmanager * MyManager, DdNode *Current, char *query_i
#define LOG_EXPECTED 0
static
void PrintNodeQueue(Queue q , extmanager MyManager){
QueueIterator qiter = QueueIteratorNew(q, 1);
@ -824,6 +824,8 @@ void PrintNodeQueue(Queue q , extmanager MyManager){
/** also nesting in CalcExpected seems to not work (must be here nested only valid within function frame)*/
/* will be changed at later stage */
static extmanager * ineedtostorethatsomehow;
static
int comparator(void *av, void *bv){
int ret = 0;
DdNode* a = (DdNode*)av;
@ -852,7 +854,11 @@ int comparator(void *av, void *bv){
return ret;
}
static void
skip_nodes_cnt(extmanager * MyManager, double (*counts)[] , int skipcnt, DdNode* l,double dprob, char *query_id);
/** output information for skipped nodes **/
static void
skip_nodes(extmanager * MyManager, double (*counts)[] , DdNode* node, DdNode* l,double dprob, char *query_id){
int skipcnt;
skipcnt = Cudd_ReadPerm(MyManager->manager,GetIndex(node))+1;
@ -866,9 +872,10 @@ skip_nodes(extmanager * MyManager, double (*counts)[] , DdNode* node, DdNode* l,
Cudd_IsConstant(l)
);
}
return skip_nodes_cnt( MyManager, counts, skipcnt, l, dprob, query_id);
skip_nodes_cnt( MyManager, counts, skipcnt, l, dprob, query_id);
}
static void
skip_nodes_cnt(extmanager * MyManager, double (*counts)[] , int skipcnt, DdNode* l,double dprob, char *query_id){
if(LOG_EXPECTED) fprintf(stderr,"====================\n");
double p;
@ -954,7 +961,7 @@ double CalcExpectedCountsDown(extmanager * MyManager, DdNode *Current, char *que
if(LOG_EXPECTED){PrintNodeQueue(q,*MyManager);}
node=QueueGet(q);
curnode = GetNodeVarNameDisp(MyManager->manager, MyManager->varmap, node);
int level = Cudd_ReadPerm(MyManager->manager,GetIndex(node));
// int level = Cudd_ReadPerm(MyManager->manager,GetIndex(node));
if(!Cudd_IsConstant(node)){
tvalue = MyManager->varmap.dvalue[GetIndex(node) - MyManager->varmap.varstart];
ivalue = MyManager->varmap.ivalue[GetIndex(node) - MyManager->varmap.varstart];

@ -1 +1 @@
Subproject commit 77759f84962a5f77a970d0cdcc9647fdc8e7bbfb
Subproject commit e4ecf86fb3422538b107a35372e1888e75ae1f8b

@ -1 +1 @@
Subproject commit 6c1496cf14e6c842a705fda7d397f354efaa0915
Subproject commit 10fd754c6561313835d4e1ff557d654b3225365e