1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* util.c: parenthesize macro arguments.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2011-01-10 02:24:04 +00:00
parent 1ca8760902
commit ee0f448fea
2 changed files with 39 additions and 35 deletions

View file

@ -1,3 +1,7 @@
Mon Jan 10 11:22:02 2011 Tanaka Akira <akr@fsij.org>
* util.c: parenthesize macro arguments.
Mon Jan 10 07:41:31 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* misc/README: mention rdoc-mode.el and ruby-style.el.

70
util.c
View file

@ -180,7 +180,7 @@ ruby_strtoul(const char *str, char **endptr, int base)
#endif
#ifndef S_ISDIR
# define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#if defined(__CYGWIN32__) || defined(_WIN32)
@ -259,7 +259,7 @@ static int valid_filename(const char *s);
static const char suffix1[] = ".$$$";
static const char suffix2[] = ".~~~";
#define strEQ(s1,s2) (strcmp(s1,s2) == 0)
#define strEQ(s1,s2) (strcmp((s1),(s2)) == 0)
extern const char *ruby_find_basename(const char *, long *, long *);
extern const char *ruby_find_extname(const char *, long *);
@ -373,12 +373,12 @@ valid_filename(const char *s)
#define D ((int*)d)
#define mmprepare(base, size) do {\
if (((VALUE)base & (0x3)) == 0)\
if (size >= 16) mmkind = 1;\
else mmkind = 0;\
else mmkind = -1;\
high = (size & (~0xf));\
low = (size & 0x0c);\
if (((VALUE)(base) & (0x3)) == 0)\
if ((size) >= 16) mmkind = 1;\
else mmkind = 0;\
else mmkind = -1;\
high = ((size) & (~0xf));\
low = ((size) & 0x0c);\
} while (0)\
#define mmarg mmkind, size, high, low
@ -443,11 +443,11 @@ static void mmrot3_(register char *a, register char *b, register char *c, int mm
typedef struct { char *LL, *RR; } stack_node; /* Stack structure for L,l,R,r */
#define PUSH(ll,rr) do { top->LL = (ll); top->RR = (rr); ++top; } while (0) /* Push L,l,R,r */
#define POP(ll,rr) do { --top; ll = top->LL; rr = top->RR; } while (0) /* Pop L,l,R,r */
#define POP(ll,rr) do { --top; (ll) = top->LL; (rr) = top->RR; } while (0) /* Pop L,l,R,r */
#define med3(a,b,c) ((*cmp)(a,b,d)<0 ? \
((*cmp)(b,c,d)<0 ? b : ((*cmp)(a,c,d)<0 ? c : a)) : \
((*cmp)(b,c,d)>0 ? b : ((*cmp)(a,c,d)<0 ? a : c)))
#define med3(a,b,c) ((*cmp)((a),(b),d)<0 ? \
((*cmp)((b),(c),d)<0 ? (b) : ((*cmp)((a),(c),d)<0 ? (c) : (a))) : \
((*cmp)((b),(c),d)>0 ? (b) : ((*cmp)((a),(c),d)<0 ? (a) : (c))))
void
ruby_qsort(void* base, const size_t nel, const size_t size,
@ -839,7 +839,7 @@ ruby_getcwd(void)
#ifdef DEBUG
#include "stdio.h"
#define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);}
#define Bug(x) {fprintf(stderr, "%s\n", (x)); exit(1);}
#endif
#include "stdlib.h"
@ -924,24 +924,24 @@ typedef union { double d; ULong L[2]; } U;
#ifdef YES_ALIAS
typedef double double_u;
# define dval(x) x
# define dval(x) (x)
# ifdef IEEE_LITTLE_ENDIAN
# define word0(x) (((ULong *)&x)[1])
# define word1(x) (((ULong *)&x)[0])
# define word0(x) (((ULong *)&(x))[1])
# define word1(x) (((ULong *)&(x))[0])
# else
# define word0(x) (((ULong *)&x)[0])
# define word1(x) (((ULong *)&x)[1])
# define word0(x) (((ULong *)&(x))[0])
# define word1(x) (((ULong *)&(x))[1])
# endif
#else
typedef U double_u;
# ifdef IEEE_LITTLE_ENDIAN
# define word0(x) (x.L[1])
# define word1(x) (x.L[0])
# define word0(x) ((x).L[1])
# define word1(x) ((x).L[0])
# else
# define word0(x) (x.L[0])
# define word1(x) (x.L[1])
# define word0(x) ((x).L[0])
# define word1(x) ((x).L[1])
# endif
# define dval(x) (x.d)
# define dval(x) ((x).d)
#endif
/* The following definition of Storeinc is appropriate for MIPS processors.
@ -949,11 +949,11 @@ typedef U double_u;
* #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff)
*/
#if defined(IEEE_LITTLE_ENDIAN) + defined(VAX) + defined(__arm__)
#define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \
((unsigned short *)a)[0] = (unsigned short)c, a++)
#define Storeinc(a,b,c) (((unsigned short *)(a))[1] = (unsigned short)(b), \
((unsigned short *)(a))[0] = (unsigned short)(c), (a)++)
#else
#define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b, \
((unsigned short *)a)[1] = (unsigned short)c, a++)
#define Storeinc(a,b,c) (((unsigned short *)(a))[0] = (unsigned short)(b), \
((unsigned short *)(a))[1] = (unsigned short)(c), (a)++)
#endif
/* #define P DBL_MANT_DIG */
@ -1076,12 +1076,12 @@ typedef U double_u;
#endif
#ifdef RND_PRODQUOT
#define rounded_product(a,b) a = rnd_prod(a, b)
#define rounded_quotient(a,b) a = rnd_quot(a, b)
#define rounded_product(a,b) ((a) = rnd_prod((a), (b)))
#define rounded_quotient(a,b) ((a) = rnd_quot((a), (b)))
extern double rnd_prod(double, double), rnd_quot(double, double);
#else
#define rounded_product(a,b) a *= b
#define rounded_quotient(a,b) a /= b
#define rounded_product(a,b) ((a) *= (b))
#define rounded_quotient(a,b) ((a) /= (b))
#endif
#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
@ -1180,8 +1180,8 @@ Bfree(Bigint *v)
}
}
#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign, \
y->wds*sizeof(Long) + 2*sizeof(int))
#define Bcopy(x,y) memcpy((char *)&(x)->sign, (char *)&(y)->sign, \
(y)->wds*sizeof(Long) + 2*sizeof(int))
static Bigint *
multadd(Bigint *b, int m, int a) /* multiply by m and add a */
@ -3159,7 +3159,7 @@ nrv_alloc(const char *s, char **rve, size_t n)
return rv;
}
#define rv_strdup(s, rve) nrv_alloc(s, rve, strlen(s)+1)
#define rv_strdup(s, rve) nrv_alloc((s), (rve), strlen(s)+1)
#ifndef MULTIPLE_THREADS
/* freedtoa(s) must be used to free values s returned by dtoa
@ -3934,7 +3934,7 @@ ruby_each_words(const char *str, void (*func)(const char*, int, void*), void *ar
#define DBL_ADJ (DBL_MAX_EXP - 2)
#define SIGFIGS ((DBL_MANT_DIG + 3) / 4 + 1)
#define dexp_get(u) ((int)(word0(u) >> Exp_shift) & ~Exp_msk1)
#define dexp_set(u,v) (word0(u) = (((int)(word0(u)) & ~Exp_mask) | (v << Exp_shift)))
#define dexp_set(u,v) (word0(u) = (((int)(word0(u)) & ~Exp_mask) | ((v) << Exp_shift)))
#define dmanh_get(u) ((uint32_t)(word0(u) & Frac_mask))
#define dmanl_get(u) ((uint32_t)word1(u))