Q: What are the custom macros to better analyze C/C++ source code?
A: The following custom macros are examples for some C/C++ code bases. You may need
to copy and paste them to the config windows for custom macros of a file category,
an active file, or a C/C++ project item. Please visit http://www.integrech.cn for
a tutorial and examples if you are unfamiliar with Celerity.

/* FreeBSD */
#define EFIAPI
#define __packed
#define PACKED
#define __unused
#define __attribute__(...)

#define MPI_POINTER *

#define CHN_FOREACH(...) for (__VA_ARGS__)
#define CHN_FOREACH_SAFE(...) for (__VA_ARGS__)
#define CPUSET_FOREACH(...) for (__VA_ARGS__)
#define FOREACH_ERR(...) for (__VA_ARGS__)
#define FOREACH_PRISON_CHILD(...) for (__VA_ARGS__)
#define FOREACH_PROC_IN_SYSTEM(...) for (__VA_ARGS__)
#define FOREACH_THREAD_IN_PROC(...) for (__VA_ARGS__)
#define G_RAID3_FOREACH_BIO(...) for (__VA_ARGS__)
#define G_RAID3_FOREACH_SAFE_BIO(...) for (__VA_ARGS__)
#define GJQ_FOREACH(...) for (__VA_ARGS__)
#define LIST_FOREACH(...) for (__VA_ARGS__)
#define LIST_FOREACH_SAFE(...) for (__VA_ARGS__)
#define MNT_VNODE_FOREACH(...) for (__VA_ARGS__)
#define MPT_PERS_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define MPT_PERS_FOREACH(...) for (__VA_ARGS__)
#define MSGQ_FOREACH(...) for (__VA_ARGS__)
#define OS_SET_FOREACH(...) for (__VA_ARGS__)
#define RAID_VOL_FOREACH(...) for (__VA_ARGS__)
#define RB_FOREACH(...) for (__VA_ARGS__)
#define RB_FOREACH_FROM(...) for (__VA_ARGS__)
#define RB_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define RB_FOREACH_REVERSE_FROM(...) for (__VA_ARGS__)
#define RB_FOREACH_REVERSE_SAFE(...) for (__VA_ARGS__)
#define RB_FOREACH_SAFE(...) for (__VA_ARGS__)
#define SET_FOREACH(...) for (__VA_ARGS__)
#define SIMPLEQ_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH_PREVPTR(...) for (__VA_ARGS__)
#define SLIST_FOREACH_SAFE(...) for (__VA_ARGS__)
#define SMBCO_FOREACH(...) for (__VA_ARGS__)
#define SPLAY_FOREACH(...) for (__VA_ARGS__)
#define STAILQ_FOREACH(...) for (__VA_ARGS__)
#define STAILQ_FOREACH_SAFE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE_SAFE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_SAFE(...) for (__VA_ARGS__)
#define VNET_FOREACH(...) for (__VA_ARGS__)

#define FOR_EACH_ARRAY_ON_ALL_VBUS(...) for (__VA_ARGS__)
#define FOR_EACH_CHANNEL_ON_VBUS(...) for (__VA_ARGS__)
#define FOR_EACH_DEV_ON_ALL_VBUS(...) for (__VA_ARGS__)
#define FOR_EACH_DEV_ON_VBUS(...) for (__VA_ARGS__)
#define for_each_port(...) for (__VA_ARGS__)
#define FOR_EACH_QUEUED_ELEMENT(...) for (__VA_ARGS__)
#define FOR_EACH_VBUS(...) for (__VA_ARGS__)
#define ldm_for_each_vbus(...) for (__VA_ARGS__)
#define list_for_each(...) for (__VA_ARGS__)
#define list_for_each_prev(...) for (__VA_ARGS__)
#define list_for_each_safe(...) for (__VA_ARGS__)
#define xge_list_for_each(...) for (__VA_ARGS__)
#define xge_list_for_each_safe(...) for (__VA_ARGS__)

#define DB_COMMAND(cmd_name, func_name) static void func_name(db_expr_t addr, boolean_t have_addr, db_expr_t count, char *modif)
#define DB_SHOW_COMMAND(cmd_name, func_name) static void func_name(db_expr_t addr, boolean_t have_addr, db_expr_t count, char *modif)
#define DB_SHOW_ALL_COMMAND(cmd_name, func_name) static void func_name(db_expr_t addr, boolean_t have_addr, db_expr_t count, char *modif)

#define DEF_IE_PRINT(Coding, IE) void uni_ie_print_##Coding##_##IE(struct uni_ie_##IE *ie, struct unicx *cx)
#define DEF_IE_CHECK(Coding, IE) int uni_ie_check_##Coding##_##IE(struct uni_ie_##IE *ie, struct unicx *cx)
#define DEF_IE_ENCODE(Coding, IE) int uni_ie_encode_##Coding##_##IE(struct uni_msg *msg, struct uni_ie_##IE *ie, struct unicx *cx)
#define DEF_IE_DECODE(Coding, IE) int uni_ie_decode_##Coding##_##IE(struct uni_ie_##IE *ie, struct uni_msg *msg, u_int ielen, struct unicx *cx)

/* Linux */
#define __read_mostly
#define __init
#define __exit
#define __initdata
#define __initconst
#define __refdata
#define __net_initdata
#define __devinitconst
#define __devinitdata
#define __acquires(...)
#define __releases(...)
#define __attribute__(...)
#define __attribute_const__
#define ____cacheline_aligned
#define ____cacheline_aligned_in_smp
#define ____cacheline_internodealigned_in_smp

#define __initfunc(A) A

#define LIST_FOREACH(...) for (__VA_ARGS__)
#define list_for_each(...) for (__VA_ARGS__)
#define list_for_each_prev(...) for (__VA_ARGS__)
#define list_for_each_safe(...) for (__VA_ARGS__)
#define list_for_each_prev_safe(...) for (__VA_ARGS__)
#define list_for_each_entry(...) for (__VA_ARGS__)
#define list_for_each_entry_reverse(...) for (__VA_ARGS__)
#define list_for_each_entry_continue(...) for (__VA_ARGS__)
#define list_for_each_entry_continue_reverse(...) for (__VA_ARGS__)
#define list_for_each_entry_from(...) for (__VA_ARGS__)
#define list_for_each_entry_safe(...) for (__VA_ARGS__)
#define list_for_each_entry_safe_continue(...) for (__VA_ARGS__)
#define list_for_each_entry_safe_from(...) for (__VA_ARGS__)
#define list_for_each_entry_safe_reverse(...) for (__VA_ARGS__)
#define list_for_each_entry_rcu(...) for (__VA_ARGS__)
#define list_for_each_continue_rcu(...) for (__VA_ARGS__)
#define hlist_for_each(...) for (__VA_ARGS__)
#define hlist_for_each_safe(...) for (__VA_ARGS__)
#define hlist_for_each_entry(...) for (__VA_ARGS__)
#define hlist_for_each_entry_continue(...) for (__VA_ARGS__)
#define hlist_for_each_entry_from(...) for (__VA_ARGS__)
#define hlist_for_each_entry_safe(...) for (__VA_ARGS__)
#define hlist_for_each_entry_rcu(...) for (__VA_ARGS__)

#define SYSCALL_DEFINE0(name) sys_##name(void)
#define SYSCALL_DEFINE1(name,...) sys_##name(__VA_ARGS__)
#define SYSCALL_DEFINE2(name,...) sys_##name(__VA_ARGS__)
#define SYSCALL_DEFINE3(name,...) sys_##name(__VA_ARGS__)
#define SYSCALL_DEFINE4(name,...) sys_##name(__VA_ARGS__)
#define SYSCALL_DEFINE5(name,...) sys_##name(__VA_ARGS__)
#define SYSCALL_DEFINE6(name,...) sys_##name(__VA_ARGS__)

#define DECLARE_WORK(n, f) struct work_struct n = { .func = (f) }
#define DECLARE_DELAYED_WORK(n, f) struct delayed_work n = { .func = (f) }
#define BUS_ATTR(_name, _mode, _show, _store) struct bus_attribute bus_attr_##_name = {_name, _mode, _show, _store}
#define CLASS_ATTR(_name, _mode, _show, _store) struct class_attribute class_attr_##_name = {_name, _mode, _show, _store}
#define DEVICE_ATTR(_name, _mode, _show, _store) struct device_attribute dev_attr_##_name = {_name, _mode, _show, _store}
#define DRIVER_ATTR(_name, _mode, _show, _store) struct driver_attribute driver_attr_##_name = {_name, _mode, _show, _store}

/* NetBSD */
#define EFIAPI
#define __packed
#define PACKED
#define UPACKED
#define __unused
#define __attribute__(...)

#define MPI_POINTER *
#define ELFNAME(x) elf32_##x
#define ELFNAME2(x,y) x##_elf32_##y
#define ELFNAMEEND(x) x##_elf32
#define ELFDEFNNAME(x) ELF32_##x

#define __link_set_foreach(...) for (__VA_ARGS__)
#define _GCQ_FOREACH(...) for (__VA_ARGS__)
#define _GCQ_FOREACH_NVAR(...) for (__VA_ARGS__)
#define CIRCLEQ_FOREACH(...) for (__VA_ARGS__)
#define CIRCLEQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define DOMAIN_FOREACH(...) for (__VA_ARGS__)
#define DRMLISTFOREACHSAFE(...) for (__VA_ARGS__)
#define DRMLISTFOREACHSAFEREVERSE(...) for (__VA_ARGS__)
#define FOREACH_AP(...) for (__VA_ARGS__)
#define GCQ_FOREACH(...) for (__VA_ARGS__)
#define GCQ_FOREACH_DEQUEUED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_DEQUEUED_REV(...) for (__VA_ARGS__)
#define GCQ_FOREACH_DEQUEUED_REV_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_DEQUEUED_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_NVAR(...) for (__VA_ARGS__)
#define GCQ_FOREACH_NVAR_REV(...) for (__VA_ARGS__)
#define GCQ_FOREACH_NVAR_REV_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_NVAR_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_REV(...) for (__VA_ARGS__)
#define GCQ_FOREACH_RO(...) for (__VA_ARGS__)
#define GCQ_FOREACH_RO_REV(...) for (__VA_ARGS__)
#define GCQ_FOREACH_RO_REV_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_RO_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_TYPED(...) for (__VA_ARGS__)
#define GCQ_FOREACH_TYPED_REV(...) for (__VA_ARGS__)
#define IFADDR_FOREACH(...) for (__VA_ARGS__)
#define IFNET_FOREACH(...) for (__VA_ARGS__)
#define LIST_FOREACH(...) for (__VA_ARGS__)
#define OS_SET_FOREACH(...) for (__VA_ARGS__)
#define PROCLIST_FOREACH(...) for (__VA_ARGS__)
#define RB_FOREACH(...) for (__VA_ARGS__)
#define RB_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define RB_TREE_FOREACH(...) for (__VA_ARGS__)
#define RB_TREE_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define SIMPLEQ_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH(...) for (__VA_ARGS__)
#define SMBCO_FOREACH(...) for (__VA_ARGS__)
#define SPLAY_FOREACH(...) for (__VA_ARGS__)
#define STAILQ_FOREACH(...) for (__VA_ARGS__)
#define STAILQ_FOREACH_SAFE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE_SAFE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_SAFE(...) for (__VA_ARGS__)
#define for_each_port(...) for (__VA_ARGS__)
#define FOR_EACH_WIDGET(...) for (__VA_ARGS__)
#define list_for_each(...) for (__VA_ARGS__)
#define list_for_each_prev(...) for (__VA_ARGS__)
#define list_for_each_safe(...) for (__VA_ARGS__)
#define FILTER_LOOP_PROLOGUE(...) for (__VA_ARGS__)
#define FILTER_LOOP_EPILOGUE(...)

#define USB_ATTACH(dname) void dname##_attach(device_t parent, device_t self, void *aux)
#define USB_DETACH(dname) int dname##_detach(device_t self, int flags)
#define USB_MATCH(dname) int dname##_match(device_t parent, cfdata_t match, void *aux)

#define FW_ATTACH(dname) void dname##attach(device_t parent, device_t self, void *aux)
#define FW_DETACH(dname) int dname##detach(device_t self, int flags)
#define FW_OPEN(dname) int dname##_open(dev_t _dev, int flags, int fmt,  fw_proc_t td)
#define FW_CLOSE(dname) int dname##_close(dev_t _dev, int flags, int fmt, fw_proc_t td)
#define FW_READ(dname) int dname##_read(dev_t _dev, struct uio *uio, int ioflag)
#define FW_WRITE(dname) int dname##_write(dev_t _dev, struct uio *uio, int ioflag)
#define FW_IOCTL(dname) int dname##_ioctl(dev_t _dev, u_long cmd, void *data, int flag, fw_proc_t td)
#define FW_POLL(dname) int dname##_poll(dev_t _dev, int events, fw_proc_t td)
#define FW_MMAP(dname) paddr_t dname##_mmap(dev_t _dev, off_t offset, int nproto)

#define DEFINE_FILTER(name) stream_filter_t *name(struct audio_softc *sc, const audio_params_t *from, const audio_params_t *to){name##_fetch_to} static int name##_fetch_to(stream_fetcher_t *self, audio_stream_t *dst, int max_used)
#define SYSCTL_SETUP(name, desc) static void name(struct sysctllog **clog)
#define RF_CREATE_DAG_FUNC_DECL(_name_) void _name_(RF_Raid_t *raidPtr, RF_AccessStripeMap_t *asmap, RF_DagHeader_t *dag_h, void *bp, RF_RaidAccessFlags_t flags, RF_AllocListElem_t *allocList)

#define CFATTACH_DECL2(name,...) struct cfattach name##_ca = {__VA_ARGS__}
#define CFATTACH_DECL(name,...) struct cfattach name##_ca = {__VA_ARGS__}
#define CFATTACH_DECL2_NEW(name,...) struct cfattach name##_ca = {__VA_ARGS__}
#define CFATTACH_DECL_NEW(name,...) struct cfattach name##_ca = {__VA_ARGS__}

/* OpenBSD */
#define __packed
#define __attribute__(...)

#define CIRCLEQ_FOREACH(...) for (__VA_ARGS__)
#define CIRCLEQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define CPU_INFO_FOREACH(...) for (__VA_ARGS__)
#define LIST_FOREACH(...) for (__VA_ARGS__)
#define NNPQUEUE_FOREACH(...) for (__VA_ARGS__)
#define RB_FOREACH(...) for (__VA_ARGS__)
#define RB_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define SIMPLEQ_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH_PREVPTR(...) for (__VA_ARGS__)
#define SPLAY_FOREACH(...) for (__VA_ARGS__)
#define TAILQ_FOREACH(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define FOR_EACH_WIDGET(...) for (__VA_ARGS__)

/* OpenSolaris */
#define __attribute__(...)
#define MPI2_POINTER *
#define __P(x) x

#define CIRCLEQ_FOREACH(...) for (__VA_ARGS__)
#define CIRCLEQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define LIST_FOREACH(...) for (__VA_ARGS__)
#define LIST_FOREACH_SAFE(...) for (__VA_ARGS__)
#define SIMPLEQ_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH(...) for (__VA_ARGS__)
#define SLIST_FOREACH_PREVPTR(...) for (__VA_ARGS__)
#define SLIST_FOREACH_SAFE(...) for (__VA_ARGS__)
#define STAILQ_FOREACH(...) for (__VA_ARGS__)
#define STAILQ_FOREACH_SAFE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_REVERSE_SAFE(...) for (__VA_ARGS__)
#define TAILQ_FOREACH_SAFE(...) for (__VA_ARGS__)

#define for_each_port(...) for (__VA_ARGS__)
#define genlist_for_each(...) for (__VA_ARGS__)
#define idr_list_for_each(...) for (__VA_ARGS__)
#define list_for_each(...) for (__VA_ARGS__)
#define list_for_each_entry_safe(...) for (__VA_ARGS__)
#define list_for_each_safe(...) for (__VA_ARGS__)
#define list_head_for_each_safe(...) for (__VA_ARGS__)
#define mlist_for_each(...) for (__VA_ARGS__)
#define mlist_for_each_safe(...) for (__VA_ARGS__)
#define RDSV3_FOR_EACH_LIST_NODE(...) for (__VA_ARGS__)
#define RDSV3_FOR_EACH_LIST_NODE_SAFE(...) for (__VA_ARGS__)
#define xge_list_for_each(...) for (__VA_ARGS__)
#define xge_list_for_each_safe(...) for (__VA_ARGS__)

#define DDI_DEFINE_STREAM_OPS(name,...) struct dev_ops name = {__VA_ARGS__}
