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 screen shots 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__}