dimProblem read the number of arguments of problem ex: problem a(u,v) or a([u1,u2], [v1,v2])
| 13111 | |
| 13112 | // dimProblem read the number of arguments of problem ex: problem a(u,v) or a([u1,u2], [v1,v2]) |
| 13113 | int dimProblem(const ListOfId &l) |
| 13114 | { |
| 13115 | int dim=0; |
| 13116 | int nb=l.size();//,nbarray=0;//,n=0, |
| 13117 | //const UnId *p1; |
| 13118 | for(int i=0; i<nb; ++i) |
| 13119 | { |
| 13120 | if(l[i].e ==0)// to miss name parameter solver=ddd |
| 13121 | { |
| 13122 | if (l[i].array) |
| 13123 | { |
| 13124 | ListOfId * array=l[i].array; |
| 13125 | for(int j=0; j<array->size(); ++j) |
| 13126 | { |
| 13127 | const UnId & idi( (*array)[j]); |
| 13128 | if (idi.r == 0 && idi.re == 0 && idi.array==0 ) |
| 13129 | { |
| 13130 | C_F0 c=::Find( idi.id); |
| 13131 | if(BCastTo<pfec>(c) ) ffassert(dim==0 || dim==2),dim=2; |
| 13132 | if(BCastTo<pfer>(c) ) ffassert(dim==0 || dim==2),dim=2; |
| 13133 | if(BCastTo<pf3c>(c) ) ffassert(dim==0 || dim==3),dim=3; |
| 13134 | if(BCastTo<pf3r>(c) ) ffassert(dim==0 || dim==3),dim=3; |
| 13135 | if(BCastTo<pfSr>(c) ) ffassert(dim==0 || dim==4),dim=4; |
| 13136 | if(BCastTo<pfSc>(c) ) ffassert(dim==0 || dim==4),dim=4; |
| 13137 | if(BCastTo<pfLr>(c) ) ffassert(dim==0 || dim==5),dim=5; |
| 13138 | if(BCastTo<pfLc>(c) ) ffassert(dim==0 || dim==5),dim=5; |
| 13139 | } |
| 13140 | } |
| 13141 | |
| 13142 | } |
| 13143 | else |
| 13144 | { |
| 13145 | C_F0 c=::Find(l[i].id); |
| 13146 | if(BCastTo<pfec>(c) ) ffassert(dim==0 || dim==2),dim=2; |
| 13147 | if(BCastTo<pfer>(c) ) ffassert(dim==0 || dim==2),dim=2; |
| 13148 | if(BCastTo<pf3c>(c) ) ffassert(dim==0 || dim==3),dim=3; |
| 13149 | if(BCastTo<pf3r>(c) ) ffassert(dim==0 || dim==3),dim=3; |
| 13150 | if(BCastTo<pfSr>(c) ) ffassert(dim==0 || dim==4),dim=4; |
| 13151 | if(BCastTo<pfSc>(c) ) ffassert(dim==0 || dim==4),dim=4; |
| 13152 | if(BCastTo<pfLr>(c) ) ffassert(dim==0 || dim==5),dim=5; |
| 13153 | if(BCastTo<pfLc>(c) ) ffassert(dim==0 || dim==5),dim=5; |
| 13154 | } |
| 13155 | } |
| 13156 | } |
| 13157 | ffassert(dim); |
| 13158 | return dim; |
| 13159 | |
| 13160 | } |
| 13161 | |
| 13162 | AnyType Problem::operator()(Stack stack) const |
| 13163 | { |