null+****@clear*****
null+****@clear*****
2012年 3月 27日 (火) 11:40:19 JST
Susumu Yata 2012-03-27 11:40:19 +0900 (Tue, 27 Mar 2012) New Revision: 13dfeac1e9d19d12a578b1a38d91e16cd4a2c897 Log: Fix poorly formatted macros. Modified files: lib/groonga_in.h Modified: lib/groonga_in.h (+75 -78) =================================================================== --- lib/groonga_in.h 2012-03-27 10:20:30 +0900 (d7a2a29) +++ lib/groonga_in.h 2012-03-27 11:40:19 +0900 (c70cb09) @@ -174,6 +174,7 @@ typedef SOCKET grn_sock; #include <sys/timeb.h> #include <errno.h> #endif + #else /* WIN32 */ #define GROONGA_API @@ -253,21 +254,22 @@ typedef int grn_sock; #ifdef HAVE_PTHREAD_H #include <pthread.h> typedef pthread_t grn_thread; -#define THREAD_CREATE(thread,func,arg) (pthread_create(&(thread), NULL, (func), (arg))) +#define THREAD_CREATE(thread,func,arg) \ + (pthread_create(&(thread), NULL, (func), (arg))) #define THREAD_JOIN(thread) (pthread_join(thread, NULL)) typedef pthread_mutex_t grn_mutex; -#define MUTEX_INIT(m) pthread_mutex_init(&m, NULL) -#define MUTEX_LOCK(m) pthread_mutex_lock(&m) +#define MUTEX_INIT(m) pthread_mutex_init(&m, NULL) +#define MUTEX_LOCK(m) pthread_mutex_lock(&m) #define MUTEX_UNLOCK(m) pthread_mutex_unlock(&m) #define MUTEX_FIN(m) typedef pthread_mutex_t grn_critical_section; -#define CRITICAL_SECTION_INIT(cs) pthread_mutex_init(&(cs), NULL) +#define CRITICAL_SECTION_INIT(cs) pthread_mutex_init(&(cs), NULL) #define CRITICAL_SECTION_ENTER(cs) pthread_mutex_lock(&(cs)) #define CRITICAL_SECTION_LEAVE(cs) pthread_mutex_unlock(&(cs)) #define CRITICAL_SECTION_FIN(cs) typedef pthread_cond_t grn_cond; -#define COND_INIT(c) pthread_cond_init(&c, NULL) +#define COND_INIT(c) pthread_cond_init(&c, NULL) #define COND_SIGNAL(c) pthread_cond_signal(&c) #define COND_WAIT(c,m) pthread_cond_wait(&c, &m) @@ -279,24 +281,24 @@ typedef pthread_key_t grn_thread_key; #if USE_UYIELD extern int grn_uyield_count; - #define GRN_TEST_YIELD() \ - do {\ - if (((++grn_uyield_count) & (0x20 - 1)) == 0) {\ - sched_yield();\ - if(grn_uyield_count > 0x1000) {\ - grn_uyield_count = (uint32_t)time(NULL) % 0x1000;\ - }\ + #define GRN_TEST_YIELD() do {\ + if (((++grn_uyield_count) & (0x20 - 1)) == 0) {\ + sched_yield();\ + if(grn_uyield_count > 0x1000) {\ + grn_uyield_count = (uint32_t)time(NULL) % 0x1000;\ }\ - } while (0) + }\ + } while (0) + #undef assert - #define assert(assert_expr) \ - do {\ - if (!(assert_expr)){\ - fprintf(stderr, "assertion failed: %s\n", #assert_expr);\ - abort();\ - }\ - GRN_TEST_YIELD();\ - } while (0) + #define assert(assert_expr) do {\ + if (!(assert_expr)){\ + fprintf(stderr, "assertion failed: %s\n", #assert_expr);\ + abort();\ + }\ + GRN_TEST_YIELD();\ + } while (0) + #define if(if_cond) \ if ((((++grn_uyield_count) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (if_cond)) #define while(while_cond) \ @@ -306,9 +308,7 @@ typedef pthread_key_t grn_thread_key; #define sched_yield() usleep(1000 * 20) #endif #else /* USE_UYIELD */ - #define GRN_TEST_YIELD() \ - do { \ - } while (0) + #define GRN_TEST_YIELD() do {} while (0) #endif /* USE_UYIELD */ #else /* HAVE_PTHREAD_H */ @@ -322,18 +322,20 @@ typedef int grn_thread_key; #ifdef WIN32 typedef uintptr_t grn_thread; -#define THREAD_CREATE(thread,func,arg) (((thread)=_beginthreadex(NULL, 0, (func), (arg), 0, NULL)) == NULL) -#define THREAD_JOIN(thread) (WaitForSingleObject((thread), INFINITE) == WAIT_FAILED) +#define THREAD_CREATE(thread,func,arg) \ + (((thread)=_beginthreadex(NULL, 0, (func), (arg), 0, NULL)) == NULL) +#define THREAD_JOIN(thread) \ + (WaitForSingleObject((thread), INFINITE) == WAIT_FAILED) typedef HANDLE grn_mutex; -#define MUTEX_INIT(m) ((m) = CreateMutex(0, FALSE, NULL)) -#define MUTEX_LOCK(m) WaitForSingleObject((m), INFINITE) +#define MUTEX_INIT(m) ((m) = CreateMutex(0, FALSE, NULL)) +#define MUTEX_LOCK(m) WaitForSingleObject((m), INFINITE) #define MUTEX_UNLOCK(m) ReleaseMutex(m) -#define MUTEX_FIN(m) CloseHandle(m) +#define MUTEX_FIN(m) CloseHandle(m) typedef CRITICAL_SECTION grn_critical_section; -#define CRITICAL_SECTION_INIT(cs) InitializeCriticalSection(&(cs)) +#define CRITICAL_SECTION_INIT(cs) InitializeCriticalSection(&(cs)) #define CRITICAL_SECTION_ENTER(cs) EnterCriticalSection(&(cs)) #define CRITICAL_SECTION_LEAVE(cs) LeaveCriticalSection(&(cs)) -#define CRITICAL_SECTION_FIN(cs) DeleteCriticalSection(&(cs)) +#define CRITICAL_SECTION_FIN(cs) DeleteCriticalSection(&(cs)) typedef struct { @@ -343,13 +345,13 @@ typedef struct HANDLE waiters_done_; } grn_cond; -#define COND_INIT(c) { \ +#define COND_INIT(c) do { \ (c).waiters_count_ = 0; \ (c).sema_ = CreateSemaphore(NULL, 0, 0x7fffffff, NULL); \ MUTEX_INIT((c).waiters_count_lock_); \ -} +} while (0) -#define COND_SIGNAL(c) { \ +#define COND_SIGNAL(c) do { \ MUTEX_LOCK((c).waiters_count_lock_); \ { \ int have_waiters = (c).waiters_count_ > 0; \ @@ -358,8 +360,9 @@ typedef struct ReleaseSemaphore((c).sema_, 1, 0); \ } \ } \ -} -#define COND_WAIT(c,m) { \ +} while (0) + +#define COND_WAIT(c,m) do { \ MUTEX_LOCK((c).waiters_count_lock_); \ (c).waiters_count_++; \ MUTEX_UNLOCK((c).waiters_count_lock_); \ @@ -368,21 +371,23 @@ typedef struct (c).waiters_count_--; \ MUTEX_UNLOCK((c).waiters_count_lock_); \ WaitForSingleObject((m), INFINITE); \ -} +} while (0) #else /* WIN32 */ /* todo */ typedef int grn_cond; -#define COND_INIT(c) ((c) = 0) +#define COND_INIT(c) ((c) = 0) #define COND_SIGNAL(c) -#define COND_WAIT(c,m) do { MUTEX_UNLOCK(m); usleep(1000); MUTEX_LOCK(m); } while (0) +#define COND_WAIT(c,m) do { \ + MUTEX_UNLOCK(m); \ + usleep(1000); \ + MUTEX_LOCK(m); \ +} while (0) /* todo : must be enhanced! */ #endif /* WIN32 */ -#define GRN_TEST_YIELD() \ - do { \ - } while (0) +#define GRN_TEST_YIELD() do {} while (0) #endif /* HAVE_PTHREAD_H */ @@ -405,29 +410,29 @@ typedef int grn_cond; __asm__ __volatile__ ("\tmovl %1,%%eax\n\tbsr %%eax,%0\n\tcmovz %%eax,%0\n" : "=r"(r) : "r"(v) : "%eax") # elif (defined(__PPC__) || defined(__ppc__)) /* ATOMIC ADD */ # define GRN_ATOMIC_ADD_EX(p,i,r) \ - __asm__ __volatile__ ("\n1:\n\tlwarx %0, 0, %1\n\tadd %0, %0, %2\n\tstwcx. %0, 0, %1\n\tbne- 1b\n\tsub %0, %0, %2" : "=&r" (r) : "r" (p), "r" (i) : "cc", "memory"); + __asm__ __volatile__ ("\n1:\n\tlwarx %0, 0, %1\n\tadd %0, %0, %2\n\tstwcx. %0, 0, %1\n\tbne- 1b\n\tsub %0, %0, %2" : "=&r" (r) : "r" (p), "r" (i) : "cc", "memory") /* todo */ -# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) +# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) # define GRN_BIT_SCAN_REV0(v,r) GRN_BIT_SCAN_REV(v,r) # elif (defined(__sun) && defined(__SVR4)) /* ATOMIC ADD */ # include <atomic.h> # define GRN_ATOMIC_ADD_EX(p,i,r) \ - r = atomic_add_32_nv(p, i) - i + (r = atomic_add_32_nv(p, i) - i) /* todo */ -# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) +# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) # define GRN_BIT_SCAN_REV0(v,r) GRN_BIT_SCAN_REV(v,r) # else /* ATOMIC ADD */ /* todo */ -# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) +# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) # define GRN_BIT_SCAN_REV0(v,r) GRN_BIT_SCAN_REV(v,r) # endif /* ATOMIC ADD */ # ifdef __i386__ /* ATOMIC 64BIT SET */ # define GRN_SET_64BIT(p,v) \ - __asm__ __volatile__ ("\txchgl %%esi, %%ebx\n1:\n\tmovl (%0), %%eax\n\tmovl 4(%0), %%edx\n\tlock; cmpxchg8b (%0)\n\tjnz 1b\n\txchgl %%ebx, %%esi" : : "D"(p), "S"(*(((uint32_t *)&(v))+0)), "c"(*(((uint32_t *)&(v))+1)) : "ax", "dx", "memory"); + __asm__ __volatile__ ("\txchgl %%esi, %%ebx\n1:\n\tmovl (%0), %%eax\n\tmovl 4(%0), %%edx\n\tlock; cmpxchg8b (%0)\n\tjnz 1b\n\txchgl %%ebx, %%esi" : : "D"(p), "S"(*(((uint32_t *)&(v))+0)), "c"(*(((uint32_t *)&(v))+1)) : "ax", "dx", "memory") # elif defined(__x86_64__) /* ATOMIC 64BIT SET */ # define GRN_SET_64BIT(p,v) \ - *(p) = (v); + (*(p) = (v)) # elif (defined(__sun) && defined(__SVR4)) /* ATOMIC 64BIT SET */ /* todo */ # define GRN_SET_64BIT(p,v) \ @@ -444,13 +449,12 @@ typedef int grn_cond; #elif (defined(WIN32) || defined (_WIN64)) /* __GNUC__ */ # define GRN_ATOMIC_ADD_EX(p,i,r) \ - (r) = (uint32_t)InterlockedExchangeAdd((int32_t *)(p), (int32_t)(i)); + ((r) = (uint32_t)InterlockedExchangeAdd((int32_t *)(p), (int32_t)(i))) # if defined(_WIN64) /* ATOMIC 64BIT SET */ # define GRN_SET_64BIT(p,v) \ - *(p) = (v); + (*(p) = (v)) # else /* ATOMIC 64BIT SET */ -# define GRN_SET_64BIT(p,v) \ -{\ +# define GRN_SET_64BIT(p,v) do {\ uint32_t v1, v2; \ uint64_t *p2= (p); \ v1 = *(((uint32_t *)&(v))+0);\ @@ -463,12 +467,12 @@ typedef int grn_cond; __asm mov edx, dword ptr [esi + 4] \ __asm lock cmpxchg8b qword ptr [esi] \ __asm jnz _set_loop \ -}\ +} while (0) /* TODO: use _InterlockedCompareExchange64 or inline asm */ # endif /* ATOMIC 64BIT SET */ /* todo */ -# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) +# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) # define GRN_BIT_SCAN_REV0(v,r) GRN_BIT_SCAN_REV(v,r) # define GRN_MKOSTEMP(template,flags,mode) \ @@ -480,16 +484,16 @@ typedef int grn_cond; # define __FUNCTION__ "" # include <atomic.h> # define GRN_ATOMIC_ADD_EX(p,i,r) \ - r = atomic_add_32_nv(p, i) - i + (r = atomic_add_32_nv(p, i) - i) /* todo */ -# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) +# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) # define GRN_BIT_SCAN_REV0(v,r) GRN_BIT_SCAN_REV(v,r) /* todo */ # define GRN_SET_64BIT(p,v) \ (void)atomic_swap_64(p, v) # endif /* ATOMIC ADD */ /* todo */ -# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) +# define GRN_BIT_SCAN_REV(v,r) for (r = 31; r && !((1 << r) & v); r--) # define GRN_BIT_SCAN_REV0(v,r) GRN_BIT_SCAN_REV(v,r) # define GRN_MKOSTEMP(template,flags,mode) \ @@ -518,42 +522,37 @@ grn_str_greater(const uint8_t *ap, uint32_t as, const uint8_t *bp, uint32_t bs) #endif /* __GNUC__ */ #ifdef WORDS_BIGENDIAN -#define grn_hton(buf,key,size) \ -{\ +#define grn_hton(buf,key,size) do {\ uint32_t size_ = (uint32_t)size;\ uint8_t *buf_ = (uint8_t *)buf;\ uint8_t *key_ = (uint8_t *)key;\ while (size_--) { *buf_++ = *key_++; }\ -} -#define grn_ntohi(buf,key,size) \ -{\ +} while (0) +#define grn_ntohi(buf,key,size) do {\ uint32_t size_ = (uint32_t)size;\ uint8_t *buf_ = (uint8_t *)buf;\ uint8_t *key_ = (uint8_t *)key;\ if (size_) { *buf_++ = 0x80 ^ *key_++; size_--; }\ while (size_) { *buf_++ = *key_++; size_--; }\ -} +} while (0) #else /* WORDS_BIGENDIAN */ -#define grn_hton(buf,key,size) \ -{\ +#define grn_hton(buf,key,size) do {\ uint32_t size_ = (uint32_t)size;\ uint8_t *buf_ = (uint8_t *)buf;\ uint8_t *key_ = (uint8_t *)key + size;\ while (size_--) { *buf_++ = *(--key_); }\ -} -#define grn_ntohi(buf,key,size) \ -{\ +} while (0) +#define grn_ntohi(buf,key,size) do {\ uint32_t size_ = (uint32_t)size;\ uint8_t *buf_ = (uint8_t *)buf;\ uint8_t *key_ = (uint8_t *)key + size;\ while (size_ > 1) { *buf_++ = *(--key_); size_--; }\ if (size_) { *buf_ = 0x80 ^ *(--key_); } \ -} +} while (0) #endif /* WORDS_BIGENDIAN */ #define grn_ntoh(buf,key,size) grn_hton(buf,key,size) -#define grn_gton(keybuf,key,size)\ -{\ +#define grn_gton(keybuf,key,size) do {\ uint8_t *keybuf_ = keybuf;\ const void *key_ = key;\ int la = ((grn_geo_point *)key_)->latitude;\ @@ -567,10 +566,9 @@ grn_str_greater(const uint8_t *ap, uint32_t as, const uint8_t *bp, uint32_t bs) (((la >> i) & 2) << 2) + (((lo >> i) & 2) << 1) +\ (((la >> i) & 1) << 1) + (((lo >> i) & 1) << 0));\ }\ -} +} while (0) -#define grn_ntog(keybuf,key,size)\ -{\ +#define grn_ntog(keybuf,key,size) do {\ uint8_t *keybuf_ = keybuf;\ uint8_t *key_ = key;\ uint32_t size_ = size;\ @@ -587,7 +585,7 @@ grn_str_greater(const uint8_t *ap, uint32_t as, const uint8_t *bp, uint32_t bs) }\ ((grn_geo_point *)keybuf_)->latitude = la;\ ((grn_geo_point *)keybuf_)->longitude = lo;\ -} +} while (0) #ifdef USE_FUTEX #include <linux/futex.h> @@ -610,8 +608,7 @@ grn_str_greater(const uint8_t *ap, uint32_t as, const uint8_t *bp, uint32_t bs) }\ } while(0) -#define GRN_FUTEX_WAKE(p) \ - syscall(SYS_futex, p, FUTEX_WAKE, 1) +#define GRN_FUTEX_WAKE(p) syscall(SYS_futex, p, FUTEX_WAKE, 1) #else /* USE_FUTEX */ #define GRN_FUTEX_WAIT(p) usleep(1000) #define GRN_FUTEX_WAKE(p)