source: proto/SymbolTable/parser_common_functions.h @ 4183

Last change on this file since 4183 was 1721, checked in by vla24, 8 years ago

SymbolTable?: completed dictionary implementation and refactored templates

File size: 2.6 KB
Line 
1#ifndef PARSER_GLOBAL_FUNCTIONS_H
2#define PARSER_GLOBAL_FUNCTIONS_H
3#include "../common_definitions.h"
4
5#ifdef USE_LS_SYMBOL_TABLE
6#include <ls_symbol_table.h>
7#endif
8
9#ifdef USE_XMLWF
10ErrorTracker error_tracker;
11#endif
12
13BitBlock EOF_mask = simd<1>::constant<1>();
14LineColTracker tracker;
15
16@global
17
18static inline void s2p_do_block(BytePack U8[], Basis_bits & basis_bits);
19static inline void s2p_do_final_block(BytePack U8[], Basis_bits & basis_bits, BitBlock EOF_mask);
20static inline void validate_block(BitBlockForwardIterator & start, int block_base, int is_valid(int));
21static inline void validate_block(BitBlockForwardIterator & start, int block_base, int is_valid(int,int));
22
23/* s2p Definitions */
24static inline void s2p_do_block(BytePack U8[], Basis_bits & basis_bits) {
25  s2p(U8[0], U8[1], U8[2], U8[3], U8[4], U8[5], U8[6], U8[7],
26        basis_bits.bit_0, basis_bits.bit_1, basis_bits.bit_2, basis_bits.bit_3, basis_bits.bit_4, basis_bits.bit_5, basis_bits.bit_6, basis_bits.bit_7);
27}
28
29static inline void s2p_do_final_block(BytePack U8[], Basis_bits & basis_bits, BitBlock EOF_mask) {
30  s2p_do_block(U8, basis_bits);
31  basis_bits.bit_0 = simd_and(basis_bits.bit_0, EOF_mask);
32  basis_bits.bit_1 = simd_and(basis_bits.bit_1, EOF_mask);
33  basis_bits.bit_2 = simd_and(basis_bits.bit_2, EOF_mask);
34  basis_bits.bit_3 = simd_and(basis_bits.bit_3, EOF_mask);
35  basis_bits.bit_4 = simd_and(basis_bits.bit_4, EOF_mask);
36  basis_bits.bit_5 = simd_and(basis_bits.bit_5, EOF_mask);
37  basis_bits.bit_6 = simd_and(basis_bits.bit_6, EOF_mask);
38  basis_bits.bit_7 = simd_and(basis_bits.bit_7, EOF_mask);
39}
40
41static inline void validate_block(BitBlockForwardIterator & start, int block_base, int is_valid(int)) {
42
43        BitBlockForwardIterator end;
44        int pos, block_pos;
45
46        while(start != end) {
47
48                block_pos = block_base + *start;
49                int rv = is_valid(block_pos);
50
51                if (rv) {
52                        int error_line, error_column;
53                        tracker.get_Line_and_Column(block_pos, error_line, error_column);
54                        ReportError(XMLTestSuiteError::get_msg(rv), error_line, error_column);
55                        exit(-1);
56                }
57                start++;
58        }
59}
60
61static inline void validate_block(BitBlockForwardIterator & start, int block_base, int buffer_base, int is_valid(int,int)) {
62
63        BitBlockForwardIterator end;
64        int pos, block_pos, file_pos;
65
66        while(start != end) {
67
68                block_pos = block_base + *start;
69                file_pos = block_pos+buffer_base;
70
71
72                int rv = is_valid(block_pos, file_pos);
73
74                if (rv) {
75                        int error_line, error_column;
76                        tracker.get_Line_and_Column(block_pos, error_line, error_column);
77                        ReportError(XMLTestSuiteError::get_msg(rv), error_line, error_column);
78                        exit(-1);
79                }
80                start++;
81        }
82}
83#endif // PARSER_GLOBAL_FUNCTIONS_H
Note: See TracBrowser for help on using the repository browser.