• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ pd_findbyclass函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中pd_findbyclass函数的典型用法代码示例。如果您正苦于以下问题:C++ pd_findbyclass函数的具体用法?C++ pd_findbyclass怎么用?C++ pd_findbyclass使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了pd_findbyclass函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: bin_ambi_reduced_decode_fft2_check_HRTF_arrays

static void bin_ambi_reduced_decode_fft2_check_HRTF_arrays(t_bin_ambi_reduced_decode_fft2 *x, t_floatarg findex)
{
  int xindex=(int)findex - 1;
  t_garray *a;
  int npoints;
  int fftsize = x->x_fftsize;
  iemarray_t *vec_hrtf_re, *vec_hrtf_im;
  t_symbol *hrtf_re, *hrtf_im;
  
  if(xindex < 0)
    xindex = 0;
  if(xindex >= x->x_n_ambi)
    xindex = x->x_n_ambi - 1;
  
  hrtf_re = x->x_s_hrtf_re[xindex];
  hrtf_im = x->x_s_hrtf_im[xindex];
  
  if (!(a = (t_garray *)pd_findbyclass(hrtf_re, garray_class)))
    error("%s: no such array", hrtf_re->s_name);
  else if (!iemarray_getarray(a, &npoints, &vec_hrtf_re))
    error("%s: bad template for bin_ambi_reduced_decode_fft2", hrtf_re->s_name);
  else if (npoints < fftsize)
    error("%s: bad array-size: %d", hrtf_re->s_name, npoints);
  else if (!(a = (t_garray *)pd_findbyclass(hrtf_im, garray_class)))
    error("%s: no such array", hrtf_im->s_name);
  else if (!iemarray_getarray(a, &npoints, &vec_hrtf_im))
    error("%s: bad template for bin_ambi_reduced_decode_fft2", hrtf_im->s_name);
  else if (npoints < fftsize)
    error("%s: bad array-size: %d", hrtf_im->s_name, npoints);
  else
  {
    x->x_beg_hrtf_re[xindex] = vec_hrtf_re;
    x->x_beg_hrtf_im[xindex] = vec_hrtf_im;
  }
}
开发者ID:Angeldude,项目名称:pd,代码行数:35,代码来源:bin_ambi_reduced_decode_fft2.c


示例2: update_graphs

///////////////
// update graphs
//
///////////////
void pix_histo :: update_graphs(void)
{
  t_garray *a;

  switch (m_mode) {
  /* coverity[unterminated_case] */
  case 4:
    if ((a = (t_garray *)pd_findbyclass(name_A, garray_class))) {
      garray_redraw(a);
    }
  /* coverity[unterminated_case] */
  case 3:
    if ((a = (t_garray *)pd_findbyclass(name_G, garray_class))) {
      garray_redraw(a);
    }
    if ((a = (t_garray *)pd_findbyclass(name_B, garray_class))) {
      garray_redraw(a);
    }
  case 1:
    if ((a = (t_garray *)pd_findbyclass(name_R, garray_class))) {
      garray_redraw(a);
    }
  default:
    break;
  }
}
开发者ID:megrimm,项目名称:Gem,代码行数:30,代码来源:pix_histo.cpp


示例3: ritmo1_bang

static void ritmo1_bang(t_ritmo1 *x) {

	int i, vecsize;
	t_garray *arysrc;
	t_garray *arydest;
	t_float *vecsrc;
	t_float *vecdest;

	if (!(arysrc = (t_garray *)pd_findbyclass(x->x_arrayname_src, garray_class)))
	{
        pd_error(x, "%s: no such array", x->x_arrayname_src->s_name);
	}
    else if (!garray_getfloatarray(arysrc, &vecsize, &vecsrc))
	{
		pd_error(x, "%s: bad template for tabwrite", x->x_arrayname_src->s_name);
	}
	  else 	if (!(arydest = (t_garray *)pd_findbyclass(x->x_arrayname_dest, garray_class)))
	{
        pd_error(x, "%s: no such array", x->x_arrayname_dest->s_name);
	}
    else if (!garray_getfloatarray(arydest, &vecsize, &vecdest))
	{
		pd_error(x, "%s: bad template for tabwrite", x->x_arrayname_dest->s_name);
	}
	else // I got arrays and data
	{
		// step 1: compute the pattern
		// and write it in vecdest
		for (i=0; i<16; i++)
		{
	//		vecdest[i] = (x->buf1[i] + x->buf2[i] + x->buf3[i] + vecsrc[i])/4;
			vecdest[i] = (x->buf1[i] + vecsrc[i])/2;
		}
		// redraw the arrays
		garray_redraw(arysrc);
		garray_redraw(arydest);

		// step 2: cycle buffers
	//	x->buf3 = x->buf2;
	//	x->buf2 = x->buf1;
	//	x->buf1 = x->buf3;
		// fill the first buffer with src data
		for (i=0; i<16; i++)
		{
			x->buf1[i] = vecsrc[i];
			vecsrc[i]=0;
		}
	}
}
开发者ID:Angeldude,项目名称:pd,代码行数:49,代码来源:ritmo1.c


示例4: sliceplay_set

static void sliceplay_set(t_sliceplay *x)
{
	t_garray *array;
	int arraysize, logloopsize;
	
	if(!(array = (t_garray *)pd_findbyclass(x->arrayname, garray_class)))
	{
		if (x->arrayname->s_name) pd_error(x, "sliceplay~: %s: no such array", 
            x->arrayname->s_name);
		x->arraypointer = 0;
	}
	
	else if (!garray_getfloatwords(array, &arraysize, &x->arraypointer))
	{
		pd_error(x, "%s: bad template for sliceplay~", x->arrayname->s_name);
		x->arraypointer = 0;
	}
	
	else
	{
		logloopsize = ilog2(arraysize-3);	// arraysize must be at least loopsize + 1 sample
		x->loopsize = 1<<logloopsize;		// loopsize is rounded to a power of two
		x->loopmask = x->loopsize - 1;		// bitwise-and mask for loopsize
		garray_usedindsp(array);
	}
}
开发者ID:baordog,项目名称:memorycorruption,代码行数:26,代码来源:sliceplay~.c


示例5: clear

int clear(t_trento *x)
{
  t_garray *a;
  t_symbol *b_name;
  t_word *b_samples;
  int b_frames;
  x->b_valid = 0;
  b_name = x->b_name;
  int i;

  if (!(a = (t_garray *)pd_findbyclass(b_name,garray_class))) {
    if (b_name->s_name)
      pd_error(x,"trento: %s: no such array",b_name->s_name);
    return x->b_valid;
  }

  if (!garray_getfloatwords(a, &b_frames, &b_samples)) {
    pd_error(x, "trento: bad array for %s", b_name->s_name);
    return x->b_valid;
  }
  else {
    for (i=0;i<b_frames;i++)
      b_samples[i].w_float = 0.f;
    x->b_valid = 1;
  }
  return x->b_valid;
}
开发者ID:amurtet,项目名称:pd-dis,代码行数:27,代码来源:trento.c


示例6: init

int init(t_trento *x)
{
  t_garray *a;
  t_symbol *b_name;
  t_word *b_samples;
  int b_frames;
  x->b_valid = 0;
  b_name = x->b_name;
  x->loadcomplete = 1;
  x->graincomplete = 1;
  x->sr = sys_getsr();
  if(x->sr <= 0)
    x->sr = 44100;
  int i;
  x->seed = time(NULL);
  srand(x->seed);

  if (!(a = (t_garray *)pd_findbyclass(b_name,garray_class))) {
    if (b_name->s_name)
      pd_error(x,"trento: %s: no such array",b_name->s_name);
    return x->b_valid;
  }

  if (!garray_getfloatwords(a, &b_frames, &b_samples)) {
    pd_error(x, "trento: bad array for %s", b_name->s_name);
    return x->b_valid;
  }
  else {
    for (i=0;i<b_frames;i++)
      b_samples[i].w_float = 0.f;
    x->b_valid = 1;
  }
  return x->b_valid;
}
开发者ID:amurtet,项目名称:pd-dis,代码行数:34,代码来源:trento.c


示例7: attach_array

int attach_array(t_trento *x)
{
  t_garray *a;
  t_symbol *b_name;
  t_word *b_samples;
  int b_frames;
  x->b_valid = 0;
  b_name = x->b_name;

  if (!(a = (t_garray *)pd_findbyclass(b_name,garray_class))) {
    if (b_name->s_name)
      pd_error(x,"trento: %s: no such array",b_name->s_name);
    return x->b_valid;
  }

  if (!garray_getfloatwords(a, &b_frames, &b_samples)) {
    pd_error(x, "trento: bad array for %s", b_name->s_name);
    return x->b_valid;
  }
  else {
    x->b_valid = 1;
    x->b_frames = b_frames;
    x->b_samples = b_samples;
    x->buffy = a;
  }
  return x->b_valid;
}
开发者ID:amurtet,项目名称:pd-dis,代码行数:27,代码来源:trento.c


示例8: tabread4_float

static void tabread4_float(t_tabread4 *x, t_float f)
{
    t_garray *a;
    int npoints;
    t_word *vec;

    if (!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
        pd_error(x, "%s: no such array", x->x_arrayname->s_name);
    else if (!garray_getfloatwords(a, &npoints, &vec))
        pd_error(x, "%s: bad template for tabread4", x->x_arrayname->s_name);
    else if (npoints < 4)
        outlet_float(x->x_obj.ob_outlet, 0);
    else if (f <= 1)
        outlet_float(x->x_obj.ob_outlet, vec[1].w_float);
    else if (f >= npoints - 2)
        outlet_float(x->x_obj.ob_outlet, vec[npoints - 2].w_float);
    else
    {
        int n = f;
        float a, b, c, d, cminusb, frac;
        t_word *wp;
        if (n >= npoints - 2)
            n = npoints - 3;
        wp = vec + n;
        frac = f - n;
        a = wp[-1].w_float;
        b = wp[0].w_float;
        c = wp[1].w_float;
        d = wp[2].w_float;
        cminusb = c-b;
        outlet_float(x->x_obj.ob_outlet, b + frac * (
            cminusb - 0.1666667f * (1.-frac) * (
                (d - a - 3.0f * cminusb) * frac + (d + 2.0f*a - 3.0f*b))));
    }
}
开发者ID:davidjonas,项目名称:mediawerf_game,代码行数:35,代码来源:d_array.c


示例9: while

static t_int *tabsend_perform(t_int *w)
{
    t_tabsend *x = (t_tabsend *)(w[1]);
    t_sample *in = (t_sample *)(w[2]);
    int n = w[3];
    t_word *dest = x->x_vec;
    int i = x->x_graphcount;
    if (!x->x_vec) goto bad;
    if (n > x->x_npoints)
        n = x->x_npoints;
    while (n--)
    {   
        t_sample f = *in++;
        if (PD_BIGORSMALL(f))
            f = 0;
         (dest++)->w_float = f;
    }
    if (!i--)
    {
        t_garray *a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class);
        if (!a)
            bug("tabsend_dsp");
        else garray_redraw(a);
        i = x->x_graphperiod;
    }
    x->x_graphcount = i;
bad:
    return (w+4);
}
开发者ID:davidjonas,项目名称:mediawerf_game,代码行数:29,代码来源:d_array.c


示例10: tabosc4_tilde_set

static void tabosc4_tilde_set(t_tabosc4_tilde *x, t_symbol *s)
{
    t_garray *a;
    int npoints, pointsinarray;

    x->x_arrayname = s;
    if (!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
    {
        if (*s->s_name)
            pd_error(x, "tabosc4~: %s: no such array", x->x_arrayname->s_name);
        x->x_vec = 0;
    }
    else if (!garray_getfloatwords(a, &pointsinarray, &x->x_vec))
    {
        pd_error(x, "%s: bad template for tabosc4~", x->x_arrayname->s_name);
        x->x_vec = 0;
    }
    else if ((npoints = pointsinarray - 3) != (1 << ilog2(pointsinarray - 3)))
    {
        pd_error(x, "%s: number of points (%d) not a power of 2 plus three",
            x->x_arrayname->s_name, pointsinarray);
        x->x_vec = 0;
        garray_usedindsp(a);
    }
    else
    {
        x->x_fnpoints = npoints;
        x->x_finvnpoints = 1./npoints;
        garray_usedindsp(a);
    }
}
开发者ID:davidjonas,项目名称:mediawerf_game,代码行数:31,代码来源:d_array.c


示例11: tabwrite_tilde_redraw

static void tabwrite_tilde_redraw(t_tabwrite_tilde *x)
{
    t_garray *a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class);
    if (!a)
        bug("tabwrite_tilde_redraw");
    else garray_redraw(a);
}
开发者ID:davidjonas,项目名称:mediawerf_game,代码行数:7,代码来源:d_array.c


示例12: tab_cross_corr_tick

static void tab_cross_corr_tick(t_tab_cross_corr *x)
{
  x->x_counter++;
  if(x->x_counter < x->x_n)
  {
    iemarray_t *vec_src1, *vec_src2, *vec_dst;
    t_float sum;
    int j, m;
    
    vec_src1 = x->x_beg_mem_src1 + x->x_counter;
    vec_src2 = x->x_beg_mem_src2;
    vec_dst = x->x_beg_mem_dst + x->x_counter;
    m = x->x_size_src2;
    sum = 0.0f;
    for(j=0; j<m; j++)
    {
      sum += iemarray_getfloat(vec_src1, j)*iemarray_getfloat(vec_src2, j);
    }
    iemarray_setfloat(vec_dst, 0, sum*x->x_factor);
    clock_delay(x->x_clock, x->x_delay);
  }
  else
  {
    t_garray *a;
    
    clock_unset(x->x_clock);
    outlet_bang(x->x_obj.ob_outlet);
    a = (t_garray *)pd_findbyclass(x->x_sym_dst, garray_class);
    garray_redraw(a);
  }
}
开发者ID:Angeldude,项目名称:pd,代码行数:31,代码来源:tab_cross_corr.c


示例13: patchvalue_classnew

static t_patchboard *patchboard_find(t_symbol *category)
{
    if (!patchboard_class)
	patchboard_class =
	    patchvalue_classnew(gensym("_patchboard"), sizeof(t_patchboard));
    return ((t_patchboard *)pd_findbyclass(category, patchboard_class));
}
开发者ID:Git689,项目名称:libpd-cyclone-ios,代码行数:7,代码来源:patchvalue.c


示例14: FIR_tilde_set

void FIR_tilde_set(t_FIR_tilde *x, t_symbol *table_name, t_floatarg forder)
{
  t_garray *ga;
  int table_size;
  int order = (int)forder;
  
  x->x_table_name = table_name;
  if(!(ga = (t_garray *)pd_findbyclass(x->x_table_name, garray_class)))
  {
    if(*table_name->s_name)
      error("FIR~: %s: no such table~", x->x_table_name->s_name);
    x->x_coef_beg = 0;
  }
  else if(!garray_getfloatarray(ga, &table_size, &x->x_coef_beg))
  {
    error("%s: bad template for FIR~", x->x_table_name->s_name);
    x->x_coef_beg = 0;
  }
  else if(table_size < order)
  {
    error("FIR~: tablesize %d < order %d !!!!", table_size, order);
    x->x_coef_beg = 0;
  }
  else
    garray_usedindsp(ga);
  x->x_rw_index = 0;
  if(order > x->x_fir_order)/* resize */
    x->x_history_beg =  (t_float *)resizebytes(x->x_history_beg, 2*x->x_fir_order*sizeof(t_float), 2*order*sizeof(float));
  x->x_fir_order = order;
}
开发者ID:IcaroL2ORK,项目名称:pd,代码行数:30,代码来源:FIR~.c


示例15: bark_print

static void bark_print(t_bark *x)
{
	t_garray *a;

	if(!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
        pd_error(x, "%s: no such array", x->x_arrayname->s_name);
    else if(!garray_getfloatwords(a, &x->x_array_points, &x->x_vec))
    	pd_error(x, "%s: bad template for bark", x->x_arrayname->s_name);
	else
		post("total frames: %i", (int)floor((x->x_array_points - x->window)/x->hop));

	post("window size: %i", (int)x->window);
	post("hop: %i", x->hop);
	post("Bark spacing: %0.2f", x->barkSpacing);
	post("no. of filters: %i", x->numFilters);
	post("bin range: %i through %i (inclusive)", x->loBin, x->hiBin);
	post("low thresh: %0.2f, high thresh: %0.2f", x->loThresh, x->hiThresh);
	post("minvel: %f", x->minvel);
	post("mask periods: %i, mask decay: %0.2f", x->maskPeriods, x->maskDecay);
	post("debounce time: %0.2f", x->debounceTime);
	post("normalization: %i", x->normalize);
	post("filter averaging: %i", x->filterAvg);
	post("power spectrum: %i", x->powerSpectrum);
	post("loudness weights: %i", x->useWeights);
	post("spew mode: %i", x->spew);
	post("debug mode: %i", x->debug);
}
开发者ID:avilleret,项目名称:timbreID,代码行数:27,代码来源:bark.c


示例16: render

/////////////////////////////////////////////////////////
// put the current image into the buffer,
// and reset the position
// (so we don't do a put in the next cycle)
/////////////////////////////////////////////////////////
void pix_buffer_write :: render(GemState*state)
{
  if (m_frame<0) {
    return;
  }
  if(!state) {
    return;
  }
  pixBlock*img=NULL;
  state->get(GemState::_PIX, img);
  if (state && img && &img->image) {
    if (img->newimage || m_frame!=m_lastframe) {
      if(m_bindname==NULL || m_bindname->s_name==NULL) {
        error("cowardly refusing to write to no pix_buffer");
        m_frame=-1;
        return;
      }
      Obj_header*ohead=(Obj_header*)pd_findbyclass(m_bindname, pix_buffer_class);
      if(ohead==NULL) {
        error("couldn't find pix_buffer '%s'", m_bindname->s_name);
        m_frame=-1;
        return;
      }
      pix_buffer *buffer=(pix_buffer *)(ohead)->data;
      if (buffer) {
        buffer->putMess(&img->image,m_lastframe=m_frame);
        m_frame=-1;
      }
    }
  }
}
开发者ID:megrimm,项目名称:Gem,代码行数:36,代码来源:pix_buffer_write.cpp


示例17: pd_error

/* on failure *bufsize is not modified */
t_word *cybuf_get(t_cybuf *c, t_symbol * name, int *bufsize, int indsp, int complain){
//in dsp = used in dsp, 
  
    if (name && name != &s_){
	t_garray *ap = (t_garray *)pd_findbyclass(name, garray_class);
	if (ap){
	    int bufsz;
	    t_word *vec;
	    if (garray_getfloatwords(ap, &bufsz, &vec)){
   	        //c->c_len = garray_npoints(ap);
		if (indsp) garray_usedindsp(ap);
		if (bufsize) *bufsize = bufsz;
		return (vec);
	    }
	     else pd_error(c->c_owner,  /* always complain */
			"bad template of array '%s'", name->s_name);
        }
	else{
            if(complain){
	        pd_error(c->c_owner, "no such array '%s'", name->s_name);
            };
	};
    }
    return (0);
}
开发者ID:porres,项目名称:pd-cyclone,代码行数:26,代码来源:cybuf.c


示例18: carray_buffer_set

t_pd_err carray_buffer_set(t_carray *x, t_eattr *attr, long argc, t_atom* argv)
{
    int i;
    x->f_array = NULL;
    if(argc && argv && atom_gettype(argv) == A_SYM)
    {
        x->f_name = atom_getsym(argv);
        if(!(x->f_array  = (t_garray *)pd_findbyclass(x->f_name, garray_class)))
        {
            x->f_array = NULL;
            x->f_name = gensym("(null)");
            x->f_buffer_size = 0;
            x->f_buffer = NULL;
        }
        else if(!garray_getfloatarray(x->f_array, &x->f_buffer_size, &x->f_buffer))
        {
            x->f_array = NULL;
            x->f_name = gensym("(null)");
            x->f_buffer_size = 0;
            x->f_buffer = NULL;
        }
        else
        {
            for(i = 0; i < x->f_buffer_size; i++)
                post("%f", x->f_buffer[i]);
            ebox_invalidate_layer((t_ebox*)x, gensym("buffer_layer"));
            ebox_redraw((t_ebox*)x);
        }
    }

    return 0;
}
开发者ID:rvega,项目名称:CicmWrapper,代码行数:32,代码来源:c.array.cpp


示例19: specCentroid_bang

// analyze the whole damn array
static void specCentroid_bang(t_specCentroid *x)
{
	int window, startSamp, lengthSamp;
	t_garray *a;

	if(!(a = (t_garray *)pd_findbyclass(x->x_arrayname, garray_class)))
        pd_error(x, "%s: no such array", x->x_arrayname->s_name);
    else if(!garray_getfloatwords(a, &x->x_arrayPoints, &x->x_vec))
    	pd_error(x, "%s: bad template for specCentroid", x->x_arrayname->s_name);
	else
	{

	startSamp = 0;
	lengthSamp = x->x_arrayPoints;

	if(lengthSamp > x->powersOfTwo[x->powTwoArrSize-1])
	{
		post("WARNING: specCentroid: window truncated because requested size is larger than the current max_window setting. Use the max_window method to allow larger windows. Sizes of more than 131072 may produce unreliable results.");
		lengthSamp = x->powersOfTwo[x->powTwoArrSize-1];
		window = lengthSamp;
	}

	specCentroid_analyze(x, startSamp, lengthSamp);

	}
}
开发者ID:avilleret,项目名称:timbreID,代码行数:27,代码来源:specCentroid.c


示例20: bin_ambi_reduced_decode_fft2_calc_pinv

static void bin_ambi_reduced_decode_fft2_calc_pinv(t_bin_ambi_reduced_decode_fft2 *x)
{
  t_garray *a;
  int npoints;
  iemarray_t *fadevec;
  int i, n;
  double *dv3=x->x_prod3;
  double *dv2=x->x_prod2;
  
  if(x->x_beg_fade_out_hrir == 0)
  {
    if (!(a = (t_garray *)pd_findbyclass(x->x_s_fade_out_hrir, garray_class)))
      error("%s: no such array", x->x_s_fade_out_hrir->s_name);
    else if (!iemarray_getarray(a, &npoints, &fadevec))
      error("%s: bad template for bin_ambi_reduced_decode_fft2", x->x_s_fade_out_hrir->s_name);
    else if (npoints < x->x_fftsize)
      error("%s: bad array-size: %d", x->x_s_fade_out_hrir->s_name, npoints);
    else
      x->x_beg_fade_out_hrir = fadevec;
  }
  
  bin_ambi_reduced_decode_fft2_transp_back(x);
  bin_ambi_reduced_decode_fft2_mul1(x);
  bin_ambi_reduced_decode_fft2_inverse(x);
  bin_ambi_reduced_decode_fft2_mul2(x);
  
  n = x->x_n_real_ls * x->x_n_ambi;
  for(i=0; i<n; i++)
    *dv3++ = *dv2++;
}
开发者ID:Angeldude,项目名称:pd,代码行数:30,代码来源:bin_ambi_reduced_decode_fft2.c



注:本文中的pd_findbyclass函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ pd_free函数代码示例发布时间:2022-05-30
下一篇:
C++ pd_error函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap