Changeset 3292 for proto/xmlschema


Ignore:
Timestamp:
Jun 10, 2013, 2:56:13 PM (6 years ago)
Author:
shiyangy
Message:

template modified

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/xmlschema/validation_template_onevec.cpp

    r3229 r3292  
    664664static inline void validate(){
    665665        struct Elem elem;
    666         Validate_Elem_Vec validate_Elem_Vec;
     666        Validation_1 validation_1;
     667        struct Lex lex;
     668        struct Output output;
     669        Classify_bytes classify_bytes;
    667670        cout << "vector size " << gid_vec.size() << endl;
    668671        int lgth = gid_vec.size();
    669672        int remaining = 0;
     673        int current_pos = 0;
    670674        Basis_bits temp_basis_bits;
     675
     676        ForwardScanner<BitBlock, ScanWord> match_scanner;
     677        ReverseScanner<BitBlock, ScanWord> vec_scanner;
     678        ForwardScanner<BitBlock, ScanWord> f_vec_scanner;
     679        int block_base = 0;
    671680        if (lgth != 0){
    672681                int i = 0;
     
    678687                        print_elem_vec(&(gid_vec),lgth);
    679688                        print_basis_bits(temp_basis_bits);
     689                       
     690                        classify_bytes.do_block(temp_basis_bits,lex);
     691                        validation_1.do_block(lex,output);
     692                       
     693                        match_scanner.init(&output.matches);
     694                        vec_scanner.init(&lex.cc1);
     695                        match_scanner.scan_to_next();
     696                        f_vec_scanner.init(&lex.cc1);
     697                        match_scanner.scan_to_next();
     698                        f_vec_scanner.scan_to_next();
     699                        current_pos = f_vec_scanner.get_pos();
     700                        vec_scanner.move_to(match_scanner.get_pos());
     701                        vec_scanner.scan_to_next();
     702//                      cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     703                        if (vec_scanner.get_pos() != current_pos){
     704                                printf("#Mismatch found at pos: %d.\n",current_pos+block_base);
     705                        }
     706//                      out = simd_or(out,lex.cc1);
     707//                      print_register("out",out);
     708                       
     709                        while(!(match_scanner.is_done() || f_vec_scanner.is_done())){
     710                                f_vec_scanner.scan_to_next();
     711                                while(!(match_scanner.is_done())){
     712                                        match_scanner.scan_to_next();
     713                                        if(match_scanner.get_pos()>0){
     714                                                vec_scanner.move_to(match_scanner.get_pos());
     715                                                vec_scanner.scan_to_next();
     716                                        }
     717                                        if (vec_scanner.get_pos() != current_pos){
     718                                                        break;
     719                                        }
     720                                }
     721                                cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     722                                if (f_vec_scanner.get_pos()>0){
     723                                        current_pos = f_vec_scanner.get_pos();
     724                                }
     725                                if (vec_scanner.get_pos() != current_pos){
     726                                        printf("Mismatch found at pos: %d.\n",current_pos+block_base);
     727                                }
     728//                              out = simd_or(out,lex.cc1);
     729//                              cout << "match_scanner_pos = " << match_scanner.get_pos() << endl;
     730//                              cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     731//                              if(match_scanner.get_pos() == vec_scanner.get_pos()){
     732//                                      printf("Match found of element with id of '1'\n");                             
     733//                              }
     734                        }
     735                               
     736                       
    680737//                      (BytePack*)(iter->second)
    681                         validate_Elem_Vec.do_block(elem, temp_basis_bits);
     738//                      validate_Elem_Vec.do_block(elem, temp_basis_bits);
    682739                        cout << i ;
     740                        block_base += BLOCK_SIZE;
    683741                }
    684                 cout << endl;
    685742                if (remaining !=0){
    686743                        BitBlock EOF_mask = bitblock::srl(simd<1>::constant<1>(),convert(BLOCK_SIZE-remaining));
     
    688745                        print_elem_vec(&(gid_vec),lgth);
    689746                        print_basis_bits(temp_basis_bits);
    690                         validate_Elem_Vec.do_final_block(elem, temp_basis_bits, EOF_mask);
     747                       
     748                        classify_bytes.do_block(temp_basis_bits,lex);
     749                        validation_1.do_block(lex,output);
     750                        print_register("output.matches",output.matches);
     751                        print_register("lex.cc1",lex.cc1);
     752                        match_scanner.init(&output.matches);
     753                        vec_scanner.init(&lex.cc1);
     754                        f_vec_scanner.init(&lex.cc1);
     755                        match_scanner.scan_to_next();
     756                        f_vec_scanner.scan_to_next();
     757                        current_pos = f_vec_scanner.get_pos();
     758                        cout << "current_pos = " << current_pos << endl;
     759//                      cout << "match_scanner_pos = " << match_scanner.get_pos()<< endl;
     760//                      cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     761                        vec_scanner.move_to(match_scanner.get_pos());
     762                        vec_scanner.scan_to_next();
     763                        cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     764                        if (vec_scanner.get_pos() != current_pos){
     765                                printf("#Mismatch found at pos: %d.\n",current_pos+block_base);
     766                        }
     767//                      out = simd_or(out,lex.cc1);
     768//                      print_register("out",out);
     769                       
     770                        while(!(match_scanner.is_done() || f_vec_scanner.is_done())){
     771                                f_vec_scanner.scan_to_next();
     772                                while(!(match_scanner.is_done())){
     773                                        match_scanner.scan_to_next();
     774                                        if(match_scanner.get_pos()>0){
     775                                                vec_scanner.move_to(match_scanner.get_pos());
     776                                                vec_scanner.scan_to_next();
     777                                        }
     778                                        if (vec_scanner.get_pos() != current_pos){
     779                                                        break;
     780                                        }
     781                                }
     782                                cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     783                                if (f_vec_scanner.get_pos()>0){
     784                                        current_pos = f_vec_scanner.get_pos();
     785                                }
     786                                if (vec_scanner.get_pos() != current_pos){
     787                                        printf("Mismatch found at pos: %d.\n",current_pos+block_base);
     788                                }
     789//                              out = simd_or(out,lex.cc1);
     790//                              cout << "match_scanner_pos = " << match_scanner.get_pos() << endl;
     791//                              cout << "vec_scanner_pos = " << vec_scanner.get_pos() << endl;
     792//                              if(match_scanner.get_pos() == vec_scanner.get_pos()){
     793//                                      printf("Match found of element with id of '1'\n");                             
     794//                              }
     795                        }
     796//                      validate_Elem_Vec.do_final_block(elem, temp_basis_bits, EOF_mask);
    691797                }
    692798        }
     
    10141120                        src_buffer.reserve(BUFFER_SIZE);
    10151121                #else
    1016                         uint8_t * COPYBACK;
    1017                         uint8_t * src_buffer;
     1122                        char * COPYBACK;
     1123                        char * src_buffer;
    10181124                        ALLOC_STATIC_ALIGNED_BYTE_BUFFER_WITH_COPYBACK(COPYBACK, src_buffer);
    10191125                #endif
Note: See TracChangeset for help on using the changeset viewer.