示例#1
0
int file_tokenize()
{
    int num_failed = 0;
    corpus::document doc{"../data/sample-document.txt", doc_id{47}};

    num_failed += testing::run_test("file-unigram-word-analyzer", [&]()
    {
        analyzers::ngram_word_analyzer tok{1, make_filter()};
        check_analyzer_expected(tok, doc, 93, 168);
    });

    num_failed += testing::run_test("file-bigram-word-analyzer", [&]()
    {
        analyzers::ngram_word_analyzer tok{2, make_filter()};
        check_analyzer_expected(tok, doc, 140, 167);
    });

    num_failed += testing::run_test("file-trigram-word-analyzer", [&]()
    {
        analyzers::ngram_word_analyzer tok{3, make_filter()};
        check_analyzer_expected(tok, doc, 159, 166);
    });

    return num_failed;
}
示例#2
0
int content_tokenize()
{
    corpus::document doc{"/home/person/filename.txt", doc_id{47}};

    // "one" is a stopword
    std::string content = "one one two two two three four one five";
    doc.content(content);
    int num_failed = 0;

    num_failed += testing::run_test("content-unigram-word-analyzer", [&]()
    {
        analyzers::ngram_word_analyzer tok{1, make_filter()};
        check_analyzer_expected(tok, doc, 6, 8);
    });

    num_failed += testing::run_test("content-bigram-word-analyzer", [&]()
    {
        analyzers::ngram_word_analyzer tok{2, make_filter()};
        check_analyzer_expected(tok, doc, 6, 7);
    });

    num_failed += testing::run_test("content-trigram-word-analyzer", [&]()
    {
        analyzers::ngram_word_analyzer tok{3, make_filter()};
        check_analyzer_expected(tok, doc, 6, 6);
    });

    return num_failed;
}
示例#3
0
static void test_composecolorfilter_limit(skiatest::Reporter* reporter) {
    // Test that CreateComposeFilter() has some finite limit (i.e. that the factory can return null)
    const int way_too_many = 100;
    SkAutoTUnref<SkColorFilter> parent(make_filter());
    for (int i = 2; i < way_too_many; ++i) {
        SkAutoTUnref<SkColorFilter> filter(make_filter());
        parent.reset(SkColorFilter::CreateComposeFilter(parent, filter));
        if (NULL == parent) {
            REPORTER_ASSERT(reporter, i > 2); // we need to have succeeded at least once!
            return;
        }
    }
    REPORTER_ASSERT(reporter, false); // we never saw a NULL :(
}
示例#4
0
static VALUE t_make_filter(VALUE self, VALUE(left), VALUE(center), VALUE(right), VALUE(init_freq), VALUE(delta)) {
  Carr *d = make_filter(NUM2DBL(left), NUM2DBL(center),
                NUM2DBL(right), NUM2DBL(init_freq), NUM2DBL(delta)); 
  if (d) {
    VALUE result = rb_ary_new2(2);
    rb_ary_store(result, 0, INT2FIX(round(d->data[0])));
    int i;
    VALUE filt = rb_ary_new2(d->rows-1);
    for (i=1;i<d->rows;++i) {
      rb_ary_store(filt, i-1, rb_float_new(d->data[i]));
    }
    rb_ary_store(result, 1, filt);
    carr_free(d);
    return result;
  }
  return Qnil;
}
示例#5
0
/*----------------------------------------------------------------------------*/
System Surface::allocate_system()
{
  const int n = 4*w*h;
  const int m = w*h;
  
  const long double w2 = (long double)(w)/2.;
  const long double h2 = (long double)(h)/2.;  
  const long double sqrt_L1 = sqrtl(LAMBDA_1);
  const long double sqrt_1ML1 = sqrtl(1.-LAMBDA_1);
  const long double sqrt_L2 = sqrtl(LAMBDA_2);
    
  // builds B
  long double *b = new long double[n];
  for(int u=0; u<w; u++)
    for(int v=0; v<h; v++)
    {
      int i = u * h + v;
      b[i] = sqrt_L1 * mu(u,v) * depth_map(u,v);
    }
  for(int i=m; i<n; i++)
    b[i] = 0.;
  Zvect *B = new Zvect(n, b);
    
  // builds A
  SparseMat *A = new SparseMat(n,m);
  // part 1
  for(int u=0; u<w; u++)
    for(int v=0; v<h; v++)
    {
      int i = u * h + v;
      A->add_coeff(i, i, sqrt_L1*mu(u,v));
    }

  // part 2
  long double dx_filter[] = {-1./12., 0. , 1./12.,
                             -4./12., 0. , 4./12.,
                             -1./12., 0. , 1./12.};
  for(int u=0; u<w; u++)
    for(int v=0; v<h; v++)
    {
      int j = u * h + v;
      int i = m + j;
      long double x = ((long double)(u)-w2)/fx;
      long double y = ((long double)(v)-h2)/fy;
      const vec& n = caracs(u,v).n;
      long double dx_weight = sqrt_1ML1 * (n[2] - (n[0]*x + n[1]*y));
      A->add_row_coeff(i, make_filter(u,v, dx_filter, dx_weight));
      A->add_coeff(i, j, -sqrt_1ML1 * n[0] / fx);
    }      

  // part 3
  long double dy_filter[] = { 1./12.,  4./12. ,  1./12.,
                                0.,      0. ,     0.,
                             -1./12., -4./12. , -1./12.,};
  for(int u=0; u<w; u++)
    for(int v=0; v<h; v++)
    {
      int j = u * h + v;
      int i = 2*m + j;
      long double x = ((long double)(u)-w2)/fx;
      long double y = ((long double)(v)-h2)/fy;
      const vec& n = caracs(u,v).n;
      long double dy_weight = sqrt_1ML1 * (n[2] - (n[0]*x + n[1]*y));
      A->add_row_coeff(i, make_filter(u,v, dy_filter, dy_weight));
      A->add_coeff(i, j, -sqrt_1ML1 * n[1] / fy);
    }  

  // part 4
  long double laplacian_filter[] = { -1.,  -1. ,  -1.,
                                     -1.,   8. ,  -1.,
                                     -1.,  -1. ,  -1.};
  for(int u=0; u<w; u++)
    for(int v=0; v<h; v++)
    {
      int i = 3*m + u * h + v;
      A->add_row_coeff(i, make_filter(u,v, laplacian_filter, sqrt_L2));
    }          

  return pair<SparseMat*, Zvect*>(A,B);
}
示例#6
0
/* V_STRING -> V_FILTER */
static struct value *xform_excl(struct info *info, struct value *s) {
    assert(s->tag == V_STRING);
    struct value *v = make_value(V_FILTER, ref(info));
    v->filter = make_filter(ref(s->string), 0);
    return v;
}
示例#7
0
文件: search.c 项目: dank101/net-2
dsEnqError srch_start()
{
  struct ds_search_arg search_arg;
  struct ds_search_result result;
  struct DSError          error;
  dsEnqError return_error;
  extern Filter make_filter();
  DN curr_rdn;

  if (*mvalue == '\0') {
    return list_start();
  }

  if (get_default_service (&search_arg.sra_common) != 0) {
    return nothingfound;
  }

  search_arg.sra_common.ca_servicecontrol.svc_options = SVC_OPT_PREFERCHAIN;

  curr_rdn = search_arg.sra_baseobject = (*base_path != 'T'?
					  str2dn (base_path):
					  NULLDN);

  search_arg.sra_eis.eis_allattributes = FALSE;
  search_arg.sra_eis.eis_infotypes = EIS_ATTRIBUTETYPESONLY;
  search_arg.sra_eis.eis_select = 0;
  search_arg.sra_searchaliases = TRUE;

  search_arg.sra_subset = SRA_ONELEVEL;
  while (curr_rdn != NULLDN) {
    if (!strcmp(curr_rdn->dn_rdn->rdn_at->oa_ot.ot_stroid, 
		"2.5.4.10")) {
      search_arg.sra_subset = SRA_WHOLESUBTREE;
      break;
    }
    curr_rdn = curr_rdn->dn_parent;
  }

  if ((search_arg.sra_filter = make_filter(filt_arr[typeindx])) == NULLFILTER)
    return duaerror;

#ifndef NO_STATS
  LLOG (log_stat, LLOG_NOTICE, ("search +%s, extent %d, val %s",
                                base_path,search_arg.sra_subset, mvalue));
#endif

  if(ds_search (&search_arg, &error, &result) != DS_OK) {
    /* deal with error */
    free_seq(dnseq);
    dnseq = NULLDS;
    dn_number = 0;
    log_ds_error(&error);
    ds_error_free(&error);
    switch (error.dse_type) {
    case DSE_LOCALERROR:
      return_error = duaerror;
      break;
    case DSE_REMOTEERROR:
      return_error = localdsaerror;
      break;
    case DSE_ATTRIBUTEERROR:
      return_error = attributerror;
      break;
    case DSE_REFERRAL:
    case DSE_DSAREFERRAL:
      return_error = remotedsaerror;
      break;
    case DSE_SECURITYERROR:
      return_error = security;
      break;
    case DSE_NAMEERROR:
      return_error = namerror;
      break;
    case DSE_SERVICEERROR:
      return_error = serviceerror;
      break;
    default:
      return_error = localdsaerror;
      break;
    }
  } else {
    correlate_search_results (&result);
    dn_number = 0;

    if (result.CSR_entries != NULLENTRYINFO) {
      register EntryInfo *ptr;

      return_error = Okay;
      free_seq(dnseq);
      dnseq = NULLDS;
      dn_number = 0;

      for (ptr = result.CSR_entries;
           ptr != NULLENTRYINFO; 
	   ptr = ptr->ent_next){
        dn_number++;
        dn2buf((caddr_t) ptr->ent_dn, goto_path);
        add_seq(&dnseq, goto_path);
      }

      if (dn_number) dnseq = SortList(dnseq);
    } else if (result.CSR_limitproblem == LSR_NOLIMITPROBLEM) {
      free_seq(dnseq);
      dnseq = NULLDS;
      dn_number = 0;
      return_error = nothingfound;
    }

    if(result.CSR_limitproblem != LSR_NOLIMITPROBLEM) {
      switch (result.CSR_limitproblem) {
      case LSR_TIMELIMITEXCEEDED:
	if (dn_number > 0) return_error = timelimit_w_partial;
	else {
	  free_seq(dnseq);
	  dnseq = NULLDS;
	  return_error = timelimit;
	}
	break;
      case LSR_SIZELIMITEXCEEDED:
	return_error = listsizelimit;
	break;
      case LSR_ADMINSIZEEXCEEDED:
	if (dn_number > 0) return_error = adminlimit_w_partial;
	else {
	  free_seq(dnseq);
	  dnseq = NULLDS;
	  return_error = adminlimit;
	}
	break;
      }
      entryinfo_free(result.CSR_entries, 0);
    }
  }
  entry_number = dn_number;
  filter_free(search_arg.sra_filter);
  dn_free(search_arg.sra_baseobject);
  ds_error_free(&error);
  return return_error;
}
示例#8
0
static array_header *get_sql_filters(pool *p, const char *query_name) {
  register unsigned int i;
  cmdtable *sql_cmdtab = NULL;
  cmd_rec *sql_cmd = NULL;
  modret_t *sql_res = NULL;
  array_header *sql_data = NULL;
  const char **values = NULL;
  array_header *sql_filters = NULL;

  sql_cmdtab = pr_stash_get_symbol2(PR_SYM_HOOK, "sql_lookup", NULL, NULL,
    NULL);
  if (sql_cmdtab == NULL) {
    (void) pr_log_writefile(geoip_logfd, MOD_GEOIP_VERSION,
      "unable to execute SQLNamedQuery '%s': mod_sql not loaded", query_name);
    errno = EPERM;
    return NULL;
  }

  sql_cmd = pr_cmd_alloc(p, 2, "sql_lookup", query_name);

  sql_res = pr_module_call(sql_cmdtab->m, sql_cmdtab->handler, sql_cmd);
  if (sql_res == NULL ||
      MODRET_ISERROR(sql_res)) {
    (void) pr_log_writefile(geoip_logfd, MOD_GEOIP_VERSION,
      "error processing SQLNamedQuery '%s'; check mod_sql logs for details",
      query_name);
    errno = EPERM;
    return NULL;
  }

  sql_data = sql_res->data;
  pr_trace_msg(trace_channel, 9, "SQLNamedQuery '%s' returned item count %d",
    query_name, sql_data->nelts);

  if (sql_data->nelts == 0) {
    (void) pr_log_writefile(geoip_logfd, MOD_GEOIP_VERSION,
      "SQLNamedQuery '%s' returned no values", query_name);
    errno = ENOENT;
    return NULL;
  }

  if (sql_data->nelts % 2 == 1) {
    (void) pr_log_writefile(geoip_logfd, MOD_GEOIP_VERSION,
      "SQLNamedQuery '%s' returned odd number of values (%d), "
      "expected even number", query_name, sql_data->nelts);
    errno = EINVAL;
    return NULL;
  }

  values = sql_data->elts;
  sql_filters = make_array(p, 0, sizeof(struct geoip_filter));

  for (i = 0; i < sql_data->nelts; i += 2) {
    const char *filter_name, *pattern = NULL;
    struct geoip_filter *filter;

    filter_name = values[i];
    pattern = values[i+1];

    filter = make_filter(p, filter_name, pattern);
    if (filter == NULL) {
      pr_trace_msg(trace_channel, 3, "unable to use '%s %s' as filter: %s",
        filter_name, pattern, strerror(errno));
      continue;
    }

    *((struct geoip_filter **) push_array(sql_filters)) = filter;
  }

  return sql_filters;
}