mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
4ff3f20540
According to MSVC manual (*1), cl.exe can skip including a header file when that: - contains #pragma once, or - starts with #ifndef, or - starts with #if ! defined. GCC has a similar trick (*2), but it acts more stricter (e. g. there must be _no tokens_ outside of #ifndef...#endif). Sun C lacked #pragma once for a looong time. Oracle Developer Studio 12.5 finally implemented it, but we cannot assume such recent version. This changeset modifies header files so that each of them include strictly one #ifndef...#endif. I believe this is the most portable way to trigger compiler optimizations. [Bug #16770] *1: https://docs.microsoft.com/en-us/cpp/preprocessor/once *2: https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html
33 lines
1.1 KiB
C
33 lines
1.1 KiB
C
#ifndef RUBY_DEBUG_H
|
|
#define RUBY_DEBUG_H
|
|
/**********************************************************************
|
|
|
|
vm_debug.h - YARV Debug function interface
|
|
|
|
$Author$
|
|
created at: 04/08/25 02:33:49 JST
|
|
|
|
Copyright (C) 2004-2007 Koichi Sasada
|
|
|
|
**********************************************************************/
|
|
|
|
#include "ruby/ruby.h"
|
|
#include "node.h"
|
|
|
|
RUBY_SYMBOL_EXPORT_BEGIN
|
|
|
|
#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
|
|
#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
|
|
#define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
|
|
#define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
|
|
|
|
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
|
|
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
|
|
NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
|
|
int ruby_debug_print_indent(int level, int debug_level, int indent_level);
|
|
void ruby_debug_gc_check_func(void);
|
|
void ruby_set_debug_option(const char *str);
|
|
|
|
RUBY_SYMBOL_EXPORT_END
|
|
|
|
#endif /* RUBY_DEBUG_H */
|