コード例 #1
0
ファイル: ArrayFold.hc.c プロジェクト: TU-Berlin/opal
extern OBJ _AArrayFold_Sb(OBJ f,OBJ a) /* \ */ {
    NAT i = 1,l = leng_array(a); OBJ r;
    if (l == 0){
	HLT("\\'ArrayFold: array is empty");
    }
    if (l > 1) { copy_closure(f,l-2); } else { free_closure(f,1); }
    if (excl_array(a,1)){
	r = data_array(a)[0]; 
        while (i < l){
            OBJ t = data_array(a)[i];
            r = EVAL2(f,t,r);
            i++;
        }
        dispose_array_flat(a);
    } else {
	r = data_array(a)[0]; copy_some(r,1);
        while (i < l){
            OBJ t = data_array(a)[i]; copy_some(t,1);
            r = EVAL2(f,t,r);
            i++;
        }
        decr_array(a,1);
    }
    return r;
}
コード例 #2
0
ファイル: JavaVM.hc.c プロジェクト: TU-Berlin/opal
extern OBJ _javabind_fromObjectArray(int dim, jclass clazz,
				    OBJ (*conv)(jobject),
				    jarray jarr){
 OBJ arr;
 if (jarr != NULL){
   jsize leng,i; 
   leng = (*javabind_env)->GetArrayLength(javabind_env, jarr);
   arr = alloc_array(leng);
   for (i = 0; i < leng; i++){
       jobject jo = 
	   (*javabind_env)->GetObjectArrayElement(javabind_env,
						 jarr,
						 i);
       javabind_catch_abort();
       if (dim > 1){
         data_array(arr)[i] = 
	   _javabind_fromObjectArray(dim-1,
	 			     clazz,
				     conv, jo);
       } else {
         data_array(arr)[i] = (*conv)(jo);
       }
   }
   (*javabind_env)->DeleteLocalRef(javabind_env, jarr);
   return arr;
 } else {
   arr = alloc_array(0);
   set_sflag(arr, null_sflag);
   return arr;
 }
} 
コード例 #3
0
ファイル: ArrayFold.hc.c プロジェクト: TU-Berlin/opal
extern OBJ _AArrayFold_Ss(OBJ f,OBJ a) /* / */ {
    NAT i = leng_array(a); OBJ r;
    if (i == 0){
	HLT("/'ArrayFold: array is empty");
    }
    if (i > 1) { copy_closure(f,i-2); } else { free_closure(f,1); }
    if (excl_array(a,1)){
	--i; r = data_array(a)[i];
        while (i > 0){
            OBJ t;
            i--;
            t = data_array(a)[i];
            r = EVAL2(f,t,r);
        }
        dispose_array_flat(a);
    } else {
	--i; r = data_array(a)[i]; copy_some(r,1);
        while (i > 0){
            OBJ t;
            i--;
            t = data_array(a)[i]; copy_some(t,1);
            r = EVAL2(f,t,r);
        }
        decr_array(a,1);
    }
    return r;
}
コード例 #4
0
ファイル: JavaVM.hc.c プロジェクト: TU-Berlin/opal
extern jobject _javabind_asObjectArray(int dim, jclass clazz, 
				      jobject (*asJava)(OBJ),
				      OBJ arr){

  jsize leng,i, excl; jarray jarr; 
  excl = excl_array(arr, 1); 
  leng = leng_array(arr);
  jarr = (*javabind_env)->NewObjectArray(javabind_env, leng,
					 array_type(dim-1, clazz),
					 NULL);
  javabind_catch_abort();
  if (dim > 1){
    for (i = 0; i < leng; i++){
      OBJ subArr = data_array(arr)[i];
      jobject jo;
      if (!excl) copy_array(subArr, 1);
      jo = _javabind_asObjectArray(dim-1, clazz, asJava, subArr);
      (*javabind_env)->SetObjectArrayElement(javabind_env, jarr, i, jo);
      javabind_catch_abort();
      (*javabind_env)->DeleteLocalRef(javabind_env, jo);
    }
  } else {
    /* passing asJava alone doesnt works anymore since 1.1b (the free method
       is required as well). Yet, the only unregular treatment of free
       currently is for _javabind_asObject; so a quick hack
       checking for the function address helps out. */
    if (asJava == _javabind_asObject){
      for (i = 0; i < leng; i++){
	OBJ elem = data_array(arr)[i];
	(*javabind_env)->SetObjectArrayElement(javabind_env, jarr, i,
					       get_jobject(elem));
	javabind_catch_abort();
	if (excl){
	  if (excl_jobject(elem, 1)){
	    _javabind_dispose(elem);
	  } else {
	    decr_jobject(elem, 1);
	  }
	}
      }
    } else {
      for (i = 0; i < leng; i++){
	OBJ elem = data_array(arr)[i];
	jobject jo;
	if (!excl) copy_some(elem, 1);
	jo = (*asJava)(elem);
	(*javabind_env)->SetObjectArrayElement(javabind_env, jarr, i, jo);
	javabind_catch_abort();
	(*javabind_env)->DeleteLocalRef(javabind_env, jo);
      }
    }
  }
  if (excl){
    dispose_array_flat(arr);
  } else {
    decr_array(arr,1);
  }
  return jarr;
}       
コード例 #5
0
ファイル: UserAndGroup.hc.c プロジェクト: TU-Berlin/opal
extern OBJ _AUserAndGroup_Ahc_Agetgroups(OBJ x1) /* hc_getgroups */
{OBJ r;
 int gasize;
  free_some(x1,1);
  gasize=getgroups(0,NULL);
  if(gasize<0){
    return_unix_failure(errno);
  }
  if(gasize==0){
    r=alloc_array(0);
  }
  else{
   gid_t *gidarray;
   int i;
    gidarray=(gid_t*)malloc_aux(sizeof(gid_t)*gasize);
    if(getgroups(gasize,gidarray)!=gasize){
      return_unix_failure(errno);
    }
    r=alloc_array(gasize);
    for(i=0;i<gasize;i++){
      make_groupid(gidarray[i],data_array(r)[i]);
    }
    free_aux(gidarray);
  }
 return_okay(r);
}
コード例 #6
0
ファイル: vil_gmm.cpp プロジェクト: iefiac/vxl_util
bool VilGMM::train(const vcl_vector<vnl_vector<double> > & data)
{
    vpdfl_gaussian_builder g_builder;
    vpdfl_mixture_builder builder;
    
    builder.init(g_builder,comp_n_);
    builder.set_weights_fixed(false);    
    
    if (data.size() <= comp_n_ * 20) {
        return false;
    }
    
    if (gmm_) {
        delete gmm_;
        gmm_ = NULL;
    }
    gmm_ = builder.new_model();
    
    mbl_data_array_wrapper<vnl_vector<double> > data_array(data);
    builder.build(*gmm_, data_array);
    if (verbose_) {
        vcl_cout<<"training sample number is "<<data.size()<<vcl_endl;
        vcl_cout<<"Probability distribution function is "<<gmm_<<vcl_endl;
        vcl_cout<<"Mean: "<<gmm_->mean()<<vcl_endl;
        vcl_cout<<"Var:  "<<gmm_->variance()<<vcl_endl;
    }
    return true;
}
コード例 #7
0
ファイル: vil_gmm.cpp プロジェクト: iefiac/vxl_util
bool VilGMM::train(const vil_image_view<vxl_byte> & image, const vil_image_view<vxl_byte> & maskImage, int mask)
{
    assert(image.ni() == maskImage.ni());
    assert(image.nj() == maskImage.nj());
    assert(image.nplanes() == 3);
    
    vpdfl_gaussian_builder g_builder;
    vpdfl_mixture_builder builder;
    
    builder.init(g_builder,comp_n_);
    builder.set_weights_fixed(false);
    
    vcl_vector<vnl_vector<double> > data;
    for (int j = 0; j<image.nj(); j++) {
        for (int i = 0; i<image.ni(); i++) {
            if (maskImage(i, j) == mask) {
                vnl_vector<double> color(3);
                for (int k = 0; k<3; k++) {
                    color[k] = image(i, j, k);
                }
                data.push_back(color);
            }
        }
    }
    
    if (data.size() <= comp_n_ * 20) {
        return false;
    }
    
    if (gmm_) {
        delete gmm_;
        gmm_ = NULL;
    }
    gmm_ = builder.new_model();
    
    mbl_data_array_wrapper<vnl_vector<double> > data_array(data);
    builder.build(*gmm_, data_array);
    if (verbose_) {
        vcl_cout<<"training sample number is "<<data.size()<<vcl_endl;
        vcl_cout<<"Probability distribution function is "<<gmm_<<vcl_endl;
        vcl_cout<<"Mean: "<<gmm_->mean()<<vcl_endl;
        vcl_cout<<"Var:  "<<gmm_->variance()<<vcl_endl;
    }
    return true;
}
コード例 #8
0
ファイル: UserAndGroup.hc.c プロジェクト: TU-Berlin/opal
static OBJ convert_chararray(char **car)
{OBJ r;
 int asz;
  asz=0;
  while(car[asz]!=NULL){
    asz++;
  }
  if(asz==0){
    r=alloc_array(0);
  }
  else{
   int i;
    r=alloc_array(asz);
    for(i=0;i<asz;i++){
      data_array(r)[i]=make_denotation(car[i]);
    }
  }
 return r;}