 
                          return 0;
                      });
-
-        for (auto &code: m_codes) {
-            std::cout << code->rule << std::endl;
-        }
 
         int num_codes = m_codes.size();
 

gpu_match(char **codes, int num_codes, int urllen, int scheme_len,
          char *query, char *query_lower)
{
    //int idx = threadIdx.x * gridDim.x + blockIdx.x;
    int idx = blockIdx.x * blockDim.x + threadIdx.x;

    while (idx < num_codes) {

    head.num_inst++;

    if (head.num_inst > 0) {
        char *code = new char[sizeof(head) + sizeof(inst[0]) * head.num_inst];
        memcpy(code, &head, sizeof(head));
        memcpy(code + sizeof(head), inst, sizeof(inst[0]) * head.num_inst);

