Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

AltDeMuxPatternMaster.cxx

Go to the documentation of this file.
00001 using namespace std;
00002 
00003 #include "AltDeMuxPatternMaster.h"
00004 #include <iostream>
00005 
00006 AltDeMuxPatternMaster::AltDeMuxPatternMaster()
00007 {
00008 
00009   AltDeMuxPattern* pPattern;
00010 
00011   // pattern11
00012   pPattern = new AltDeMuxPattern(11);
00013   pattern11.push_back(pPattern);
00014 
00015   // pattern22
00016   
00017   pPattern = new AltDeMuxPattern(11,22);
00018   pattern22.push_back(pPattern);
00019   pPattern = new AltDeMuxPattern(12,21);
00020   pattern22.push_back(pPattern);
00021 
00022 
00023   // pattern23
00024   
00025   pPattern = new AltDeMuxPattern(11,22);
00026   pattern23.push_back(pPattern);
00027   pPattern = new AltDeMuxPattern(12,21);
00028   pattern23.push_back(pPattern);
00029   pPattern = new AltDeMuxPattern(11,23);
00030   pattern23.push_back(pPattern);
00031   pPattern = new AltDeMuxPattern(13,21);
00032   pattern23.push_back(pPattern);
00033   pPattern = new AltDeMuxPattern(12,23);
00034   pattern23.push_back(pPattern);
00035   pPattern = new AltDeMuxPattern(13,22);
00036   pattern23.push_back(pPattern);
00037 
00038 
00039   // pattern32
00040   
00041   pPattern = new AltDeMuxPattern(11,22);
00042   pattern32.push_back(pPattern);
00043   pPattern = new AltDeMuxPattern(12,21);
00044   pattern32.push_back(pPattern);
00045   pPattern = new AltDeMuxPattern(11,32);
00046   pattern32.push_back(pPattern);
00047   pPattern = new AltDeMuxPattern(12,31);
00048   pattern32.push_back(pPattern);
00049   pPattern = new AltDeMuxPattern(21,32);
00050   pattern32.push_back(pPattern);
00051   pPattern = new AltDeMuxPattern(22,31);
00052   pattern32.push_back(pPattern);
00053 
00054   // pattern33
00055   
00056   pPattern = new AltDeMuxPattern(11,22,33);
00057   pattern33.push_back(pPattern);
00058   pPattern = new AltDeMuxPattern(11,23,32);
00059   pattern33.push_back(pPattern);
00060   pPattern = new AltDeMuxPattern(12,21,33);
00061   pattern33.push_back(pPattern);
00062   pPattern = new AltDeMuxPattern(12,23,31);
00063   pattern33.push_back(pPattern);
00064   pPattern = new AltDeMuxPattern(13,21,32);
00065   pattern33.push_back(pPattern);
00066   pPattern = new AltDeMuxPattern(13,22,31);
00067   pattern33.push_back(pPattern);
00068 
00069   // pattern34
00070 
00071   for(int i1=1 ;i1 <=4; i1++){
00072     for(int i2=1 ;i2 <=4; i2++){
00073       if(i2!=i1){
00074         for(int i3=1 ;i3 <=4; i3++){
00075           if((i3!=i1)&&(i3!=i2)){
00076             pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3);
00077             pattern34.push_back(pPattern);
00078           }
00079         }
00080       }
00081     }
00082   }
00083 
00084   // pattern35
00085   for(int i1=1 ;i1 <=5; i1++){
00086     for(int i2=1 ;i2 <=5; i2++){
00087       if(i2!=i1){
00088         for(int i3=1 ;i3 <=5; i3++){
00089           if((i3!=i1)&&(i3!=i2)){
00090             pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3);
00091             pattern35.push_back(pPattern);
00092           }
00093         }
00094       }
00095     }
00096   }
00097 
00098   // pattern43
00099   for(int i1=1 ;i1 <=3; i1++){
00100     for(int i2=1 ;i2 <=3; i2++){
00101       if(i2!=i1){
00102         for(int i3=1 ;i3 <=3; i3++){
00103           if((i3!=i1)&&(i3!=i2)){
00104             pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3);
00105             pattern43.push_back(pPattern);
00106             pPattern = new AltDeMuxPattern(10+i1,20+i2,40+i3);
00107             pattern43.push_back(pPattern);
00108             pPattern = new AltDeMuxPattern(10+i1,30+i2,40+i3);
00109             pattern43.push_back(pPattern);
00110             pPattern = new AltDeMuxPattern(20+i1,30+i2,40+i3);
00111             pattern43.push_back(pPattern);
00112           }
00113         }
00114       }
00115     }
00116   }
00117 
00118   // pattern44
00119   for(int i1=1 ;i1 <=4; i1++){
00120     for(int i2=1 ;i2 <=4; i2++){
00121       if(i2!=i1){
00122         for(int i3=1 ;i3 <=4; i3++){
00123           if((i3!=i1)&&(i3!=i2)){
00124             for(int i4=1 ;i4 <=4; i4++){
00125               if((i4!=i1)&&(i4!=i2)&&(i4!=i3)){
00126                 pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3,40+i4);
00127                 pattern44.push_back(pPattern);
00128               }
00129             }
00130           }
00131         }
00132       }
00133     }
00134   }
00135 
00136 
00137   // pattern45
00138 
00139   for(int i1=1 ;i1 <=5; i1++){
00140     for(int i2=1 ;i2 <=5; i2++){
00141       if(i2!=i1){
00142         for(int i3=1 ;i3 <=5; i3++){
00143           if((i3!=i1)&&(i3!=i2)){
00144             for(int i4=1 ;i4 <=5; i4++){
00145               if((i4!=i1)&&(i4!=i2)&&(i4!=i3)){
00146                 pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3,40+i4);
00147                 pattern45.push_back(pPattern);
00148               }
00149             }
00150           }
00151         }
00152       }
00153     }
00154   }
00155 
00156   // pattern53
00157   for(int i1=1 ;i1 <=3; i1++){
00158     for(int i2=1 ;i2 <=3; i2++){
00159       if(i2!=i1){
00160         for(int i3=1 ;i3 <=3; i3++){
00161           if((i3!=i1)&&(i3!=i2)){
00162             pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3);
00163             pattern53.push_back(pPattern);
00164             pPattern = new AltDeMuxPattern(10+i1,20+i2,40+i3);
00165             pattern53.push_back(pPattern);
00166             pPattern = new AltDeMuxPattern(10+i1,20+i2,50+i3);
00167             pattern53.push_back(pPattern);
00168             pPattern = new AltDeMuxPattern(10+i1,30+i2,40+i3);
00169             pattern53.push_back(pPattern);
00170             pPattern = new AltDeMuxPattern(10+i1,30+i2,50+i3);
00171             pattern53.push_back(pPattern);
00172             pPattern = new AltDeMuxPattern(10+i1,40+i2,50+i3);
00173             pattern53.push_back(pPattern);
00174             pPattern = new AltDeMuxPattern(20+i1,30+i2,40+i3);
00175             pattern53.push_back(pPattern);
00176             pPattern = new AltDeMuxPattern(20+i1,30+i2,50+i3);
00177             pattern53.push_back(pPattern);
00178             pPattern = new AltDeMuxPattern(20+i1,40+i2,50+i3);
00179             pattern53.push_back(pPattern);
00180             pPattern = new AltDeMuxPattern(30+i1,40+i2,50+i3);
00181             pattern53.push_back(pPattern);
00182           }
00183         }
00184       }
00185     }
00186   }
00187 
00188 
00189   // pattern54
00190   for(int i1=1 ;i1 <=4; i1++){
00191     for(int i2=1 ;i2 <=4; i2++){
00192       if(i2!=i1){
00193         for(int i3=1 ;i3 <=4; i3++){
00194           if((i3!=i1)&&(i3!=i2)){
00195             for(int i4=1 ;i4 <=4; i4++){
00196               if((i4!=i1)&&(i4!=i2)&&(i4!=i3)){
00197                 pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3,40+i4);
00198                 pattern54.push_back(pPattern);
00199                 pPattern = new AltDeMuxPattern(10+i1,20+i2,30+i3,50+i4);
00200                 pattern54.push_back(pPattern);
00201                 pPattern = new AltDeMuxPattern(10+i1,20+i2,40+i3,50+i4);
00202                 pattern54.push_back(pPattern);
00203                 pPattern = new AltDeMuxPattern(10+i1,30+i2,30+i3,40+i4);
00204                 pattern54.push_back(pPattern);
00205                 pPattern = new AltDeMuxPattern(10+i1,30+i2,30+i3,50+i4);
00206                 pattern54.push_back(pPattern);
00207                 pPattern = new AltDeMuxPattern(10+i1,30+i2,40+i3,50+i4);
00208                 pattern54.push_back(pPattern);
00209                 pPattern = new AltDeMuxPattern(20+i1,30+i2,30+i3,40+i4);
00210                 pattern54.push_back(pPattern);
00211                 pPattern = new AltDeMuxPattern(20+i1,30+i2,30+i3,50+i4);
00212                 pattern54.push_back(pPattern);
00213                 pPattern = new AltDeMuxPattern(20+i1,30+i2,40+i3,50+i4);
00214                 pattern54.push_back(pPattern);
00215               }
00216             }
00217           }
00218         }
00219       }
00220     }
00221   }
00222 
00223 
00224   // pattern55
00225   for(int i1=1 ;i1 <=5; i1++){
00226     for(int i2=1 ;i2 <=5; i2++){
00227       if(i2!=i1){
00228         for(int i3=1 ;i3 <=5; i3++){
00229           if( (i3!=i1)&& (i3!=i2) ){
00230             for(int i4=1 ;i4 <=5; i4++){
00231               if((i4!=i1)&&(i4!=i2)&&(i4!=i3)){
00232                 for(int i5=1 ;i5 <=5; i5++){
00233                   if((i5!=i1)&&(i5!=i2)&&(i5!=i3)&&(i5!=i4)){
00234                     pPattern=new AltDeMuxPattern(10+i1,20+i2,30+i3,40+i4,50+i5);
00235                     pattern55.push_back(pPattern);
00236                   }
00237                 }
00238               }
00239             }
00240           }
00241         }
00242       }
00243     }
00244   }
00245 
00246   
00247 }
00248 
00249 
00250 bool AltDeMuxPatternMaster::SelectPattern(int ne, int nw) 
00251 {
00252   
00253   int selector;
00254 
00255   if(ne<1 || ne > 6)return false;
00256   if(nw<1 || nw > 6)return false;
00257   if( (ne!=nw) && (ne==1 || nw==1) )return false; 
00258 
00259   selector =  10*ne+nw;
00260 
00261   switch(selector){
00262   case 11:
00263     pCurrentSet = &pattern11;
00264     break;
00265   case 22:
00266     pCurrentSet = &pattern22;
00267     break;
00268   case 23:
00269     pCurrentSet = &pattern23;
00270     break;
00271   case 32:
00272     pCurrentSet = &pattern32;
00273     break;
00274   case 33:
00275     pCurrentSet = &pattern33;
00276     break;
00277   case 34:
00278     pCurrentSet = &pattern34;
00279     break;
00280   case 35:
00281     pCurrentSet = &pattern35;
00282     break;
00283   case 43:
00284     pCurrentSet = &pattern43;
00285     break;
00286   case 44:
00287     pCurrentSet = &pattern44;
00288     break;
00289   case 45:
00290     pCurrentSet = &pattern45;
00291     break;
00292   case 53:
00293     pCurrentSet = &pattern53;
00294     break;
00295   case 54:
00296     pCurrentSet = &pattern54;
00297     break;
00298   case 55:
00299     pCurrentSet = &pattern55;
00300     break;
00301   default:
00302     return false;
00303     break;
00304   }
00305 
00306   icursor = -1;
00307   imax    = (*pCurrentSet).size() - 1;
00308 
00309   return true;
00310 }
00311 
00312 AltDeMuxPattern* AltDeMuxPatternMaster::Next(){
00313 
00314   icursor++;
00315   if(icursor>imax)return NULL;
00316   return (*pCurrentSet)[icursor]; 
00317 
00318 } 
00319 
00320 AltDeMuxPattern::AltDeMuxPattern(int i1)
00321 {
00322 
00323   PatternPair p;
00324   int ie1 = i1/10;
00325   int iw1 = i1-ie1*10;
00326 
00327   isize = 1;
00328 
00329   p.eEntry = ie1;
00330   p.wEntry = iw1;
00331 
00332   pattern.push_back(p);
00333 
00334   return;
00335 
00336 }
00337 
00338 
00339 AltDeMuxPattern::AltDeMuxPattern(int i1, int i2)
00340 {
00341   PatternPair p1,p2;
00342 
00343   isize = 2;
00344 
00345   int ie1 = i1/10;
00346   int iw1 = i1-ie1*10;
00347   int ie2 = i2/10;
00348   int iw2 = i2-ie2*10;
00349 
00350   p1.eEntry = ie1;
00351   p1.wEntry = iw1;
00352   p2.eEntry = ie2;
00353   p2.wEntry = iw2;
00354   pattern.push_back(p1);
00355   pattern.push_back(p2);
00356 
00357   return;
00358 
00359 }
00360 
00361 
00362 AltDeMuxPattern::AltDeMuxPattern(int i1, int i2, int i3)
00363 {
00364 
00365   PatternPair p1,p2,p3;
00366 
00367   isize = 3;
00368 
00369   int ie1 = i1/10;
00370   int iw1 = i1-ie1*10;
00371   int ie2 = i2/10;
00372   int iw2 = i2-ie2*10;
00373   int ie3 = i3/10;
00374   int iw3 = i3-ie3*10;
00375 
00376   p1.eEntry = ie1;
00377   p1.wEntry = iw1;
00378   p2.eEntry = ie2;
00379   p2.wEntry = iw2;
00380   p3.eEntry = ie3;
00381   p3.wEntry = iw3;
00382   pattern.push_back(p1);
00383   pattern.push_back(p2);
00384   pattern.push_back(p3);
00385 
00386   return;
00387 
00388 }
00389 
00390 
00391 AltDeMuxPattern::AltDeMuxPattern(int i1, int i2, int i3, int i4)
00392 {
00393 
00394   PatternPair p1,p2,p3,p4;
00395 
00396   isize = 4;
00397 
00398   int ie1 = i1/10;
00399   int iw1 = i1-ie1*10;
00400   int ie2 = i2/10;
00401   int iw2 = i2-ie2*10;
00402   int ie3 = i3/10;
00403   int iw3 = i3-ie3*10;
00404   int ie4 = i4/10;
00405   int iw4 = i4-ie4*10;
00406 
00407 
00408   p1.eEntry = ie1;
00409   p1.wEntry = iw1;
00410   p2.eEntry = ie2;
00411   p2.wEntry = iw2;
00412   p3.eEntry = ie3;
00413   p3.wEntry = iw3;
00414   p4.eEntry = ie4;
00415   p4.wEntry = iw4;
00416   pattern.push_back(p1);
00417   pattern.push_back(p2);
00418   pattern.push_back(p3);
00419   pattern.push_back(p4);
00420 
00421   return;
00422 
00423 }
00424 
00425 
00426 AltDeMuxPattern::AltDeMuxPattern(int i1, int i2, int i3, int i4, int i5)
00427 {
00428 
00429   PatternPair p1,p2,p3,p4,p5;
00430 
00431   isize = 5;
00432 
00433   int ie1 = i1/10;
00434   int iw1 = i1-ie1*10;
00435   int ie2 = i2/10;
00436   int iw2 = i2-ie2*10;
00437   int ie3 = i3/10;
00438   int iw3 = i3-ie3*10;
00439   int ie4 = i4/10;
00440   int iw4 = i4-ie4*10;
00441   int ie5 = i5/10;
00442   int iw5 = i5-ie5*10;
00443 
00444   p1.eEntry = ie1;
00445   p1.wEntry = iw1;
00446   p2.eEntry = ie2;
00447   p2.wEntry = iw2;
00448   p3.eEntry = ie3;
00449   p3.wEntry = iw3;
00450   p4.eEntry = ie4;
00451   p4.wEntry = iw4;
00452   p5.eEntry = ie5;
00453   p5.wEntry = iw5;
00454   pattern.push_back(p1);
00455   pattern.push_back(p2);
00456   pattern.push_back(p3);
00457   pattern.push_back(p4);
00458   pattern.push_back(p5);
00459 
00460   return;
00461 
00462 }
00463 
00464 
00465 PatternPair AltDeMuxPattern::GetI(int i)
00466 {
00467   return pattern[i];
00468 }

Generated on Mon Feb 15 11:06:21 2010 for loon by  doxygen 1.3.9.1