28    tpc_encoder(std::vector<int> row_polys,
 
   29                std::vector<int> col_polys,
 
   36    void generic_work(
const void* inBuffer, 
void* outbuffer) 
override;
 
   37    int get_output_size() 
override;
 
   38    int get_input_size() 
override;
 
   40    std::vector<int> d_rowpolys;
 
   41    std::vector<int> d_colpolys;
 
   51    std::vector<std::vector<int>> rowOutputs;
 
   52    std::vector<std::vector<int>> rowNextStates;
 
   54    std::vector<std::vector<int>> colOutputs;
 
   55    std::vector<std::vector<int>> colNextStates;
 
   57    std::vector<int> rowTail;
 
   58    std::vector<int> colTail;
 
   71    std::vector<unsigned char> inputWithPad;
 
   73    std::vector<std::vector<uint8_t>> rowEncodedBits;
 
   74    std::vector<unsigned char> rowToEncode;
 
   75    size_t numRowsToEncode;
 
   76    std::vector<uint8_t> rowEncoded_block;
 
   78    std::vector<std::vector<uint8_t>> colEncodedBits;
 
   79    std::vector<unsigned char> colToEncode;
 
   81    std::vector<uint8_t> colEncoded_block;
 
   83    void block_conv_encode(std::vector<uint8_t>& output,
 
   84                           std::vector<uint8_t> input,
 
   85                           std::vector<std::vector<int>> transOutputVec,
 
   86                           std::vector<std::vector<int>> transNextStateVec,
 
   87                           std::vector<int> tail,
 
   96                                      std::vector<int> col_poly,
 
  101    double rate()
 override { 
return (1.0 * get_input_size() / get_output_size()); }
 
 
static generic_encoder::sptr make(std::vector< int > row_poly, std::vector< int > col_poly, int krow, int kcol, int bval, int qval)