⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpls_refcnt.h

📁 实现了MPLS中的标签分发协议(LDP 3036 )的基本功能
💻 H
字号:
/* *  Copyright (C) James R. Leu 2002 *  jleu@mindspring.com * *  This software is covered under the LGPL, for more *  info check out http://www.gnu.org/copyleft/lgpl.html */#ifndef _MPLS_REFCNT_H_#define _MPLS_REFCNT_H_#include "mpls_assert.h"#define MPLS_REFCNT_FIELD  uint32_t	_refcnt#define MPLS_REFCNT_VALUE(obj) (obj)?((obj)->_refcnt):(-1)#define MPLS_REFCNT_INIT(obj,count) {		\  (obj)->_refcnt = count;			\}#define MPLS_REFCNT_HOLD(obj) {			\  if((obj) != NULL) {				\    (obj)->_refcnt++;				\  }						\}#define MPLS_REFCNT_RELEASE(obj,dstry) {		\  if((obj) != NULL) {				\    (obj)->_refcnt--;				\    if((obj)->_refcnt <= 0) {			\      dstry(obj);				\      obj = NULL;				\    }						\  }						\}#define MPLS_REFCNT_RELEASE2(global,obj,dstry) { \  if((obj) != NULL) {				\    (obj)->_refcnt--;				\    if((obj)->_refcnt <= 0) {			\      dstry(global,obj);			\      obj = NULL;				\    }						\  }						\}#define MPLS_REFCNT_ASSERT(obj,count) {		\  if((obj) != NULL) {				\    MPLS_ASSERT((obj)->_refcnt == count);	\  }						\}#define MPLS_REFCNT_PTR_TYPE  uint32_t*#define MPLS_REFCNT_PTR(obj) (((obj) != NULL)?(&((obj)->_refcnt)):(NULL))#define MPLS_REFCNT_PTR_HOLD(ptr) {		\  if((ptr) != NULL) {				\    ((*(ptr))++);				\  }						\}#define MPLS_REFCNT_PTR_RELEASE(ptr) {		\  if((ptr) != NULL) {				\    ((*(ptr))--);				\  }						\}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -