00001
00014 #ifndef _ARGLST_H
00015 #define _ARGLST_H
00016
00017 #include <cstdarg>
00018
00019 namespace xchen
00020 {
00025 #define get_reverse_ints_va(int_args, argc) \
00026 { \
00027 (int_args)[(argc)-1] = arg1; \
00028 if((argc) > 1) \
00029 { \
00030 va_list ap; va_start(ap, arg1); \
00031 for(int i=1; i<(argc); i++) \
00032 (int_args)[(argc)-1-i]= va_arg(ap, int); \
00033 va_end(ap); \
00034 } \
00035 }
00036
00041 #define get_reverse_doubles_va(double_args, argc) \
00042 { \
00043 (double_args)[(argc)-1] = arg1; \
00044 if((argc) > 1) \
00045 { \
00046 va_list ap; va_start(ap, arg1); \
00047 for(double i=1; i<(argc); i++) \
00048 (double_args)[(argc)-1-i]= va_arg(ap, double); \
00049 va_end(ap); \
00050 } \
00051 }
00052
00053
00058 #define get_ints_va(int_args, argc) \
00059 { \
00060 (int_args)[0] = arg1; \
00061 if((argc) > 1) \
00062 { \
00063 va_list ap; va_start(ap, arg1); \
00064 for(int i=1; i<(argc); i++) \
00065 (int_args)[i]= va_arg(ap, int); \
00066 va_end(ap); \
00067 } \
00068 }
00069
00070
00071
00076 #define get_doubles_va(double_args, argc) \
00077 { \
00078 (double_args)[0] = arg1; \
00079 if((argc) > 1) \
00080 { \
00081 va_list ap; va_start(ap, arg1); \
00082 for(double i=1; i<(argc); i++) \
00083 (double_args)[i]= va_arg(ap, double); \
00084 va_end(ap); \
00085 } \
00086 }
00087
00088
00089
00090 }
00091
00092
00093
00094 #endif