version 1.173, 2009/02/15 09:22:07 |
version 1.174, 2009/06/01 07:31:54 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.172 2009/02/15 03:07:41 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.173 2009/02/15 09:22:07 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 46 static int nd_worb_len; |
|
Line 46 static int nd_worb_len; |
|
static int nd_found,nd_create,nd_notfirst; |
static int nd_found,nd_create,nd_notfirst; |
static int nmv_adv; |
static int nmv_adv; |
static int nd_demand; |
static int nd_demand; |
static int nd_module,nd_ispot,nd_mpos; |
static int nd_module,nd_ispot,nd_mpos,nd_pot_nelim; |
static NODE nd_tracelist; |
static NODE nd_tracelist; |
static NODE nd_alltracelist; |
static NODE nd_alltracelist; |
static int nd_gentrace,nd_gensyz,nd_nora; |
static int nd_gentrace,nd_gensyz,nd_nora; |
Line 581 int ndl_module_grlex_compare(UINT *d1,UINT *d2) |
|
Line 581 int ndl_module_grlex_compare(UINT *d1,UINT *d2) |
|
int i,c; |
int i,c; |
|
|
if ( nd_ispot ) { |
if ( nd_ispot ) { |
|
if ( nd_pot_nelim && MPOS(d1)>=nd_pot_nelim+1 && MPOS(d2) >= nd_pot_nelim+1 ) { |
|
if ( TD(d1) > TD(d2) ) return 1; |
|
else if ( TD(d1) < TD(d2) ) return -1; |
|
if ( c = ndl_lex_compare(d1,d2) ) return c; |
|
if ( MPOS(d1) < MPOS(d2) ) return 1; |
|
else if ( MPOS(d1) > MPOS(d2) ) return -1; |
|
return 0; |
|
} |
if ( MPOS(d1) < MPOS(d2) ) return 1; |
if ( MPOS(d1) < MPOS(d2) ) return 1; |
else if ( MPOS(d1) > MPOS(d2) ) return -1; |
else if ( MPOS(d1) > MPOS(d2) ) return -1; |
} |
} |
Line 2796 void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe |
|
Line 2804 void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe |
|
EPOS oepos; |
EPOS oepos; |
int obpe,oadv,ompos; |
int obpe,oadv,ompos; |
|
|
nd_module; |
nd_module = 0; |
if ( !m && Demand ) nd_demand = 1; |
if ( !m && Demand ) nd_demand = 1; |
else nd_demand = 0; |
else nd_demand = 0; |
parse_nd_option(current_option); |
parse_nd_option(current_option); |
Line 4740 void nd_init_ord(struct order_spec *ord) |
|
Line 4748 void nd_init_ord(struct order_spec *ord) |
|
/* module order */ |
/* module order */ |
case 256: |
case 256: |
nd_ispot = ord->ispot; |
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
nd_dcomp = -1; |
nd_dcomp = -1; |
switch ( ord->ord.simple ) { |
switch ( ord->ord.simple ) { |
case 0: |
case 0: |
Line 4760 void nd_init_ord(struct order_spec *ord) |
|
Line 4769 void nd_init_ord(struct order_spec *ord) |
|
break; |
break; |
case 257: |
case 257: |
/* block order */ |
/* block order */ |
|
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
|
nd_dcomp = -1; |
|
nd_isrlex = 0; |
ndl_compare_function = ndl_module_block_compare; |
ndl_compare_function = ndl_module_block_compare; |
break; |
break; |
case 258: |
case 258: |
/* matrix order */ |
/* matrix order */ |
|
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
|
nd_dcomp = -1; |
|
nd_isrlex = 0; |
nd_matrix_len = ord->ord.matrix.row; |
nd_matrix_len = ord->ord.matrix.row; |
nd_matrix = ord->ord.matrix.matrix; |
nd_matrix = ord->ord.matrix.matrix; |
ndl_compare_function = ndl_module_matrix_compare; |
ndl_compare_function = ndl_module_matrix_compare; |
break; |
break; |
case 259: |
case 259: |
/* composite order */ |
/* composite order */ |
|
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
|
nd_dcomp = -1; |
|
nd_isrlex = 0; |
nd_worb_len = ord->ord.composite.length; |
nd_worb_len = ord->ord.composite.length; |
nd_worb = ord->ord.composite.w_or_b; |
nd_worb = ord->ord.composite.w_or_b; |
ndl_compare_function = ndl_module_composite_compare; |
ndl_compare_function = ndl_module_composite_compare; |