当前位置: 首页>>代码示例>>C++>>正文


C++ RB_REMOVE函数代码示例

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


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

示例1: mib_fetch_route

int
mib_fetch_route(void)
{
	u_char *rtab, *next;
	size_t len;
	struct sroute *r, *r1;
	struct rt_msghdr *rtm;
	struct sockaddr *addrs[RTAX_MAX];

	if (route_tick != 0 && route_tick + ROUTE_UPDATE_INTERVAL > this_tick)
		return (0);

	/*
	 * Remove all routes
	 */
	r = RB_MIN(sroutes, &sroutes);
	while (r != NULL) {
		r1 = RB_NEXT(sroutes, &sroutes, r);
		RB_REMOVE(sroutes, &sroutes, r);
		free(r);
		r = r1;
	}
	route_total = 0;

	if ((rtab = mib_fetch_rtab(AF_INET, NET_RT_DUMP, 0, &len)) == NULL)
		return (-1);

	next = rtab;
	for (next = rtab; next < rtab + len; next += rtm->rtm_msglen) {
		rtm = (struct rt_msghdr *)(void *)next;
		if (rtm->rtm_type != RTM_GET ||
		    !(rtm->rtm_flags & RTF_UP))
			continue;
		mib_extract_addrs(rtm->rtm_addrs, (u_char *)(rtm + 1), addrs);


		mib_sroute_process(rtm, addrs[RTAX_GATEWAY], addrs[RTAX_DST],
		    addrs[RTAX_NETMASK]);
	}

#if 0
	u_int n = 0;
	r = RB_MIN(sroutes, &sroutes);
	while (r != NULL) {
		printf("%u: ", n++);
		sroute_print(r);
		printf("\n");
		r = RB_NEXT(sroutes, &sroutes, r);
	}
#endif
	free(rtab);
	route_tick = get_ticks();

	return (0);
}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:55,代码来源:mibII_route.c

示例2: environ_free

/* Free an environment. */
void
environ_free(struct environ *env)
{
	struct environ_entry	*envent, *envent1;

	RB_FOREACH_SAFE(envent, environ, env, envent1) {
		RB_REMOVE(environ, env, envent);
		free(envent->name);
		free(envent->value);
		free(envent);
	}
开发者ID:alexdavid,项目名称:tmux,代码行数:12,代码来源:environ.c

示例3: lang_code_free

static void lang_code_free( lang_code_lookup_t *l )
{
  lang_code_lookup_element_t *element;
  if (l == NULL)
    return;
  while ((element = RB_FIRST(l)) != NULL) {
    RB_REMOVE(l, element, link);
    free(element);
  }
  free(l);
}
开发者ID:Leyorus,项目名称:tvheadend,代码行数:11,代码来源:lang_codes.c

示例4: vm_map_store_entry_unlink_rb

void	vm_map_store_entry_unlink_rb( struct vm_map_header *mapHdr, vm_map_entry_t entry)
{
	struct rb_head *rbh = &(mapHdr->rb_head_store);
	struct vm_map_store *rb_entry;
	struct vm_map_store *store = &(entry->store);
	
	rb_entry = RB_FIND( rb_head, rbh, store);	
	if(rb_entry == NULL)
		panic("NO ENTRY TO DELETE");
	RB_REMOVE( rb_head, rbh, store );
}
开发者ID:CptFrazz,项目名称:xnu,代码行数:11,代码来源:vm_map_store_rb.c

示例5: ct_rb_unwind

void
ct_rb_unwind(struct ct_match_tree *head)
{
	struct ct_match_node	*n;

	while ((n = RB_ROOT(head)) != NULL) {
		RB_REMOVE(ct_match_tree, head, n);
		e_free(&n->cmn_string);
		e_free(&n);
	}
}
开发者ID:finid,项目名称:cyphertite,代码行数:11,代码来源:ct_match.c

示例6: job_tree_free

/* Destroy a job tree. */
void
job_tree_free(struct jobs *jobs)
{
	struct job	*job;

	while (!RB_EMPTY(jobs)) {
		job = RB_ROOT(jobs);
		RB_REMOVE(jobs, jobs, job);
		job_free(job);
	}
}
开发者ID:ThomasAdam,项目名称:tmux-ARCHIVED,代码行数:12,代码来源:job.c

示例7: lang_str_destroy

/* Destroy (free memory) */
void lang_str_destroy ( lang_str_t *ls )
{ 
  lang_str_ele_t *e;
  if (ls == NULL)
    return;
  while ((e = RB_FIRST(ls))) {
    if (e->str)  free(e->str);
    RB_REMOVE(ls, e, link);
    free(e);
  }
  free(ls);
}
开发者ID:1stsetup,项目名称:tvheadend,代码行数:13,代码来源:lang_str.c

示例8: idnode_done

void
idnode_done(void)
{
  idclass_link_t *il;

  pthread_cond_signal(&idnode_cond);
  pthread_join(idnode_tid, NULL);
  pthread_mutex_lock(&idnode_mutex);
  htsmsg_destroy(idnode_queue);
  idnode_queue = NULL;
  pthread_mutex_unlock(&idnode_mutex);  
  while ((il = RB_FIRST(&idclasses)) != NULL) {
    RB_REMOVE(&idclasses, il, link);
    free(il);
  }
  while ((il = RB_FIRST(&idrootclasses)) != NULL) {
    RB_REMOVE(&idrootclasses, il, link);
    free(il);
  }
  SKEL_FREE(idclasses_skel);
}
开发者ID:Jalle19,项目名称:tvheadend,代码行数:21,代码来源:idnode.c

示例9: environ_unset

/* Unset an environment variable. */
void
environ_unset(struct environ *env, const char *name)
{
	struct environ_entry	*envent;

	if ((envent = environ_find(env, name)) == NULL)
		return;
	RB_REMOVE(environ, env, envent);
	free(envent->name);
	free(envent->value);
	free(envent);
}
开发者ID:Darkoe,项目名称:tmux,代码行数:13,代码来源:environ.c

示例10: environ_free

/* Free an environment. */
void
environ_free(struct environ *env)
{
	struct environ_entry	*envent;

	while (!RB_EMPTY(env)) {
		envent = RB_ROOT(env);
		RB_REMOVE(environ, env, envent);
		free(envent->name);
		free(envent->value);
		free(envent);
	}
}
开发者ID:Darkoe,项目名称:tmux,代码行数:14,代码来源:environ.c

示例11: RB_FIND

void *tato_tree_int_remove(TatoTreeInt *thiss, unsigned int key) {
	TatoTreeIntNode node_scanned;
	node_scanned.key = key;

	TatoTreeIntNode *node = RB_FIND(TatoTreeInt_, thiss, &node_scanned);
	if (!node)
		return NULL;

	RB_REMOVE(TatoTreeInt_, thiss, node);
	void *result = node->value;
	free(node);
	return result;
}
开发者ID:Akirato,项目名称:tatodb,代码行数:13,代码来源:tree_int.c

示例12: mpls_tree_remove

mpls_return_enum mpls_tree_remove(mpls_tree_handle tree, uint32_t key, int length, void **info)
{
	struct mpls_tree_node *node;

	node = mpls_tree_find(tree, key, length);
	if(!node)
		return MPLS_FAILURE;
	*info = node->info;
	RB_REMOVE(mpls_tree, tree, node);
	mpls_free(node);
	
	return MPLS_SUCCESS;
}
开发者ID:antonrogov,项目名称:freebsd-ldpd,代码行数:13,代码来源:mpls_tree_impl.c

示例13: intlconv_done

void
intlconv_done( void )
{
  intlconv_cache_t *ic;

  pthread_mutex_lock(&intlconv_lock);
  intlconv_last_ic = NULL;
  while ((ic = RB_FIRST(&intlconv_all)) != NULL) {
    iconv_close(ic->ic_handle);
    free(ic->ic_charset_id);
    RB_REMOVE(&intlconv_all, ic, ic_link);
    free(ic);
  }
  intlconv_last_src_ic = NULL;
  while ((ic = RB_FIRST(&intlconv_src_all)) != NULL) {
    iconv_close(ic->ic_handle);
    free(ic->ic_charset_id);
    RB_REMOVE(&intlconv_src_all, ic, ic_link);
    free(ic);
  }
  pthread_mutex_unlock(&intlconv_lock);
}
开发者ID:InuSasha,项目名称:tvheadend,代码行数:22,代码来源:intlconv.c

示例14: unloadtags

/*
 * Free tags tree.
 */
void
unloadtags(void)
{
	struct ctag *var, *nxt;
	
	for (var = RB_MIN(tagtree, &tags); var != NULL; var = nxt) {
		nxt = RB_NEXT(tagtree, &tags, var);
		RB_REMOVE(tagtree, &tags, var);
		/* line parsed with fparseln needs to be freed */
		free(var->tag);
		free(var);
	}
}
开发者ID:hackalog,项目名称:mg,代码行数:16,代码来源:tags.c

示例15: msdosfs_fileno_free

/* Free 32-bit file number generation structures. */
void
msdosfs_fileno_free(struct mount *mp)
{
	struct msdosfsmount *pmp = VFSTOMSDOSFS(mp);
	struct msdosfs_fileno *mf, *next;

	for (mf = RB_MIN(msdosfs_filenotree, &pmp->pm_filenos); mf != NULL;
	    mf = next) {
		next = RB_NEXT(msdosfs_filenotree, &pmp->pm_filenos, mf);
		RB_REMOVE(msdosfs_filenotree, &pmp->pm_filenos, mf);
		free(mf, M_MSDOSFSFILENO);
	}
}
开发者ID:2asoft,项目名称:freebsd,代码行数:14,代码来源:msdosfs_fileno.c


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