ruby-fizzbuzz 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +5 -0
- data.tar.gz.sig +0 -0
- data/AUTHORS +1 -1
- data/CHANGELOG.md +175 -0
- data/COPYRIGHT +1 -1
- data/README.md +46 -0
- data/VERSION +1 -1
- data/bin/fizzbuzz +33 -61
- data/ext/fizzbuzz/common.h +39 -29
- data/ext/fizzbuzz/extconf.rb +24 -43
- data/ext/fizzbuzz/fizzbuzz.c +100 -117
- data/ext/fizzbuzz/fizzbuzz.h +60 -118
- data/kwilczynski-public.pem +25 -0
- data/lib/fizzbuzz.rb +106 -40
- data/lib/fizzbuzz/core/array.rb +9 -36
- data/lib/fizzbuzz/core/bignum.rb +9 -38
- data/lib/fizzbuzz/core/integer.rb +9 -38
- data/lib/fizzbuzz/core/range.rb +2 -31
- data/lib/fizzbuzz/version.rb +2 -29
- metadata +51 -24
- metadata.gz.sig +0 -0
- data/CHANGES +0 -84
- data/CHANGES.rdoc +0 -84
- data/README +0 -5
- data/README.rdoc +0 -12
- data/Rakefile +0 -97
- data/TODO +0 -16
- data/benchmark/benchmark_fizzbuzz.rb +0 -107
- data/ruby-fizzbuzz.gemspec +0 -65
- data/test/test_fizzbuzz.rb +0 -639
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fbc46615ef6b3f04b5ee9d784eaaf26db82ea1fc3e2c6d4def2f87c4ff6d9295
|
4
|
+
data.tar.gz: 937d7c799e0cd43ff6bf703014428530f41b108ad56d08b8dcb4cb29d92d736c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c8d66d61187180addad7e50f4f7ef2e99b9e4b8a9ed1644923e15b3fe7613c1c8004c7cbd0c316455cb69388ffe0fea62160dcbfbf96b82c4c37280929fdffe
|
7
|
+
data.tar.gz: fc0e431a4ff78c4dd0454f065025a5fff077bdfc42004ef9e194f2d63f4f1bfb4cc0f000432f9199775ec1cd65fb82d07e728745a3a1484b4d18c574fb0732ab
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
��Mdn�fvNaIhqWv���������&�.���X+"7#;5q%��Lb��WXn�1i��8�~�c���оf���*�D3�9>�D���O�Xl�0��MW��6�:�(��Ck�&4z�k�����@�m�i�@+�\A�M���a���a�ts��/�{��Ќ:,
|
2
|
+
J���������C��P�^cQO�"�zdN_1!Y�g��0A�>i��s�˴��ډ|�ܙ&]w����AD^�0%1
|
3
|
+
������ƭ�y�� ^��O������a=�I6���
|
4
|
+
��u9�֊�@s딞+3����[֭�]�@�
|
5
|
+
�9f�B1�$�<��1�g�����y0���H�LT"h�����p�g_����W���"o3���(.�(�W�
|
data.tar.gz.sig
ADDED
Binary file
|
data/AUTHORS
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Krzysztof
|
1
|
+
Krzysztof Wilczyński <kw@linux.com> (@kwilczynski)
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
6
|
+
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [Unreleased]
|
9
|
+
|
10
|
+
## [0.8.0] - 2020-02-05
|
11
|
+
### Added
|
12
|
+
|
13
|
+
- Added new `step` singleton method to the _FizzBuzz_ class.
|
14
|
+
- Added **Code of Conduct** to the project.
|
15
|
+
- Added new `--line` command line switch to the `fizzbuzz` script, which allows for printing values in a single line.
|
16
|
+
- Added support for the _Integer Unification_ in Ruby version **2.4** onwards.
|
17
|
+
- Added few optimisations e.g., `LIKELY` and `UNLIKELY` macros, and improved the `INTEGER_P` macro.
|
18
|
+
- Added support for installing and building on _Windows_ has been confirmed with an environment set by _Ruby Installer_
|
19
|
+
and _DevKit_ (which is _MinGW_ under the hood).
|
20
|
+
- Added more `CFLAGS` to `extconf.rb` file.
|
21
|
+
- Added definition of `_DEFAULT_SOURCE` since `_BSD_SOURCE` and `_SVID_SOURCE` are deprecated.
|
22
|
+
- Added friendly error message when the `ruby-fizzbuzz` Ruby gem is missing.
|
23
|
+
- Added `.editorconfig` file for Ruby.
|
24
|
+
- Added very basic `.gitattributes` file.
|
25
|
+
- Added `.mailmap` file to be used by Git.
|
26
|
+
- Added NOTICE file to the project.
|
27
|
+
|
28
|
+
### Changed
|
29
|
+
|
30
|
+
- Moved to _Ubuntu Xenial_ on _Travis CI_.
|
31
|
+
- Re-factored _Array_ class integration.
|
32
|
+
- Re-factored custom `typedef` types and some other small changes.
|
33
|
+
- Replaced `File.exists?` with `File.exist?`.
|
34
|
+
- Replaced usage of the `volatile` keyword with the `RB_GC_GUARD` macro.
|
35
|
+
- Moved to using module constants for the _FizzBuzz_ specific strings values e.g., _Fizz_, _Buzz_ and _FizzBuzz_ to
|
36
|
+
improve performance since constants are allocated only once.
|
37
|
+
- Updated public GPG key.
|
38
|
+
- Updated public signing key.
|
39
|
+
- Updated Ruby gem dependencies.
|
40
|
+
- Removed surplus `for`-loop replacing it with a simpler `while`-loop.
|
41
|
+
- Removed surplus license headers from each file.
|
42
|
+
- Removed deprecated `Gem::Specification#has_rdoc=`.
|
43
|
+
- Removed integration with services like _Coveralls_, _Code Climate_ and _Gemnasium_.
|
44
|
+
- Addressed some of the _GCC_ compiler warnings.
|
45
|
+
|
46
|
+
### Fixed
|
47
|
+
|
48
|
+
- Resolved Bundler issues by updating its version prior to installing Ruby gems when on _Travis CI_.
|
49
|
+
- Fixed pattern for test files in `Guardfile`.
|
50
|
+
- Addressed `RuntimeError` caused by modification of a frozen string.
|
51
|
+
|
52
|
+
### Deprecated
|
53
|
+
|
54
|
+
- Retired support and testing with Ruby _1.9.x_, _2.0.x_, _2.1.x_, _2.2.x_ and _2.3.x_ on _Travis CI_.
|
55
|
+
- Retired support and testing for _Rubinius_ on _Travis CI_.
|
56
|
+
- Retried testing with Ruby _head_ on _Travis CI_.
|
57
|
+
|
58
|
+
## [0.7.0] - 2014-12-15
|
59
|
+
### Added
|
60
|
+
|
61
|
+
- Added `to_hash`, `as_json`, `to_json` and `from_json` (_singleton_) to the _FizzBuzz_ class.
|
62
|
+
- Added rudimentary `Vagrantfile` that can be used to build a development environment.
|
63
|
+
- Added the `Guard` Ruby gem for convenience, with an appropriate `Guardfile`.
|
64
|
+
- Added _LLVM_ (`clang`) compiler to build with to _Travis CI_.
|
65
|
+
|
66
|
+
### Changed
|
67
|
+
|
68
|
+
- Re-factored `fizzbuzz` (_singleton_) from the _FizzBuzz_ class to speed it up.
|
69
|
+
- Re-factored tests to utilise modern version of the `test-unit` Ruby gem.
|
70
|
+
- Re-factored and cleaned up small portions of code and documentation.
|
71
|
+
- Updated `Rakefile` to no longer run `test` before `benchmark`.
|
72
|
+
|
73
|
+
### Fixed
|
74
|
+
|
75
|
+
- Correctly return `Enumerator` when integrating with the _Range_ class.
|
76
|
+
- Fixed benchmarks concerning _Array_ and _Range_ integration.
|
77
|
+
- Fixed _Travis CI_ build against _Rubinius_.
|
78
|
+
- Fixed build to make it work with _C++_ compilers.
|
79
|
+
- Fixed version number to comply with [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
80
|
+
|
81
|
+
### Deprecated
|
82
|
+
|
83
|
+
- No longer use of `Enumerable#entries` in the _Array_ integration, achieving
|
84
|
+
better performance.
|
85
|
+
- Retired testing with Ruby _1.9.2_ and _2.1.0_, and added _2.1.5_ on _Travis CI_.
|
86
|
+
- Removed _BitDeli_ badge.
|
87
|
+
|
88
|
+
## [0.6.0] - 2014-02-23
|
89
|
+
### Added
|
90
|
+
|
91
|
+
- Added Ruby _2.1.0_ to _Travis CI_.
|
92
|
+
- Added _BitDeli_ and _Gemnasium_ integration.
|
93
|
+
|
94
|
+
### Changed
|
95
|
+
|
96
|
+
- Updated development dependencies.
|
97
|
+
- Re-factored and cleaned up small portions of code.
|
98
|
+
- Made _Rake_ `test` task to be the default tasks.
|
99
|
+
- Updated the `.gitignore` file to cover _Bundler_, _rbenv_, etc.
|
100
|
+
|
101
|
+
### Fixed
|
102
|
+
|
103
|
+
- Fixed issue reported by _LLVM_ (`clang`).
|
104
|
+
|
105
|
+
## [0.5.0] - 2013-11-26
|
106
|
+
### Added
|
107
|
+
|
108
|
+
- Added integration with Array and Range types.
|
109
|
+
- Added simple benchmark.
|
110
|
+
|
111
|
+
## [0.4.0] - 2013-11-18
|
112
|
+
### Added
|
113
|
+
|
114
|
+
- Added _Coveralls_ and _Code Climate_ integration (and hence improved code test coverage).
|
115
|
+
|
116
|
+
### Changed
|
117
|
+
|
118
|
+
- Improved error handling and made code more resilient to errors.
|
119
|
+
|
120
|
+
### Fixed
|
121
|
+
|
122
|
+
- Fixed formatting and white spaces.
|
123
|
+
|
124
|
+
### Deprecated
|
125
|
+
|
126
|
+
- Retired support for Ruby 1.8.x (no support for _MRI_, _Ruby Enterprise Edition_ and _Rubinius_).
|
127
|
+
|
128
|
+
## [0.3.0] - 2013-08-31
|
129
|
+
### Added
|
130
|
+
|
131
|
+
- Added custom exceptions and improved error handling.
|
132
|
+
- Added more variety of Rubies on which tests are being run with _Travis CI_.
|
133
|
+
- Added project to [RubyGems](http://rubygems.org) so it can be installed with
|
134
|
+
just `gem install ruby-fizzbuzz` command.
|
135
|
+
|
136
|
+
### Changed
|
137
|
+
|
138
|
+
- Renamed project from _fizzbuzz_ to _ruby-fizzbuzz_ to avoid clashes with other
|
139
|
+
Ruby gems hosted on _RubyGems_ web site.
|
140
|
+
- Made `mkmf` in `extconf.rb` more user-friendly (it now reports missing build-time
|
141
|
+
dependencies better).
|
142
|
+
- Split Ruby gem specification (or _gemspec_ if you wish) away from _Rakefile_
|
143
|
+
into its own file (namely `ruby-fizzbuzz.gemspec`).
|
144
|
+
- Improved documentation and removed bunch of small code smells.
|
145
|
+
|
146
|
+
## [0.2.0] - 2012-09-29
|
147
|
+
### Added
|
148
|
+
|
149
|
+
- Added `is_fizz?`, `is_buzz?` and `is_fizzbuzz?` singleton methods to _FizzBuzz_ class.
|
150
|
+
- Added `fizz?`, `buzz?` and `fizzbuzz?` methods to the _Integer_ class via a monkey-patch
|
151
|
+
for convenience. ([#2](https://github.com/kwilczynski/ruby-fizzbuzz/issues/2))
|
152
|
+
|
153
|
+
### Changed
|
154
|
+
|
155
|
+
- Changed behaviour of the `FizzBuzz#[]` singleton method, so it will yield a _FizzBuzz_
|
156
|
+
result for a given arbitrary Integer value. ([#1](https://github.com/kwilczynski/ruby-fizzbuzz/issues/1))
|
157
|
+
- Re-factored code to make it cleaner, and added more tests and improved coverage.
|
158
|
+
- Re-factored `FizzBuzz` so it now does not assume that we always want to calculate
|
159
|
+
results from `1` to `n` -- it is now possible to calculate _FizzBuzz_ results for
|
160
|
+
given `n`, `m` values, where `n` denotes start and `m` denotes stop value.
|
161
|
+
|
162
|
+
## [0.1.0] - 2012-09-27
|
163
|
+
### Added
|
164
|
+
|
165
|
+
- First version of FizzBuzz.
|
166
|
+
|
167
|
+
[Unreleased]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.9.0...HEAD
|
168
|
+
[0.8.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.8.0...v0.9.0
|
169
|
+
[0.7.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.7.0...v0.8.0
|
170
|
+
[0.6.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.6.0...v0.7.0
|
171
|
+
[0.5.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.4.0...v0.5.0
|
172
|
+
[0.4.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.3.0...v0.4.0
|
173
|
+
[0.3.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.2.0...v0.3.0
|
174
|
+
[0.2.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/v0.1.0...v0.2.0
|
175
|
+
[0.1.0]: https://github.com/kwilczynski/ruby-fizzbuzz/compare/0a6b1ba...v0.1.0
|
data/COPYRIGHT
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Copyright 2012-
|
1
|
+
Copyright 2012-2020 Krzysztof Wilczyński
|
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Yet another FizzBuzz in Ruby!
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/kwilczynski/ruby-fizzbuzz.svg)](https://travis-ci.org/kwilczynski/ruby-fizzbuzz)
|
4
|
+
[![Documentation Status](https://inch-ci.org/github/kwilczynski/ruby-fizzbuzz.svg)](https://inch-ci.org/github/kwilczynski/ruby-fizzbuzz)
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/ruby-fizzbuzz.svg)](http://badge.fury.io/rb/ruby-fizzbuzz)
|
6
|
+
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
Provides simple and fast solution to a popular [FizzBuzz](https://en.wikipedia.org/wiki/FizzBuzz)
|
11
|
+
problem for Ruby.
|
12
|
+
|
13
|
+
Written in C as an example of using Ruby's C API - with the support for
|
14
|
+
arbitrary large numeric values via the Bignum class, or the Integer class
|
15
|
+
starting from Ruby version 2.4 onwards.
|
16
|
+
|
17
|
+
## Table of Contents
|
18
|
+
|
19
|
+
1. [Contributing](#contributing)
|
20
|
+
2. [Versioning](#versioning)
|
21
|
+
3. [Author](#author)
|
22
|
+
4. [Copyright](#copyright)
|
23
|
+
5. [License](#license)
|
24
|
+
|
25
|
+
## Contributing
|
26
|
+
|
27
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for best practices and instructions on
|
28
|
+
setting up your development environment.
|
29
|
+
|
30
|
+
## Versioning
|
31
|
+
|
32
|
+
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
33
|
+
For the versions available, see the tags on this repository.
|
34
|
+
|
35
|
+
## Author
|
36
|
+
|
37
|
+
Krzysztof Wilczyński (<kw@linux.com>)
|
38
|
+
|
39
|
+
## Copyright
|
40
|
+
|
41
|
+
Copyright 2012-2020 Krzysztof Wilczyński
|
42
|
+
|
43
|
+
## License
|
44
|
+
|
45
|
+
This project is licensed under the terms of the Apache License, Version 2.0 license.
|
46
|
+
To view the full license see the included [LICENSE](LICENSE) file.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.0
|
data/bin/fizzbuzz
CHANGED
@@ -1,106 +1,78 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
# -*- encoding: utf-8 -*-
|
4
|
-
|
5
|
-
# :enddoc:
|
6
|
-
|
7
|
-
#
|
8
|
-
# fizzbuzz
|
9
|
-
#
|
10
|
-
# Copyright 2012-2014 Krzysztof Wilczynski
|
11
|
-
#
|
12
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
13
|
-
# you may not use this file except in compliance with the License.
|
14
|
-
# You may obtain a copy of the License at
|
15
|
-
#
|
16
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
17
|
-
#
|
18
|
-
# Unless required by applicable law or agreed to in writing, software
|
19
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
20
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
21
|
-
# See the License for the specific language governing permissions and
|
22
|
-
# limitations under the License.
|
23
|
-
#
|
24
|
-
|
25
3
|
require 'optparse'
|
26
4
|
|
27
5
|
begin
|
28
6
|
require 'fizzbuzz'
|
29
7
|
rescue LoadError
|
30
|
-
|
31
|
-
|
8
|
+
abort "\n" + (<<-EOS).gsub(/^[ ]+/, '') + "\n"
|
9
|
+
You appear to be missing the ruby-fizzbuzz Ruby gem. Try
|
10
|
+
installing this missing dependency before you can run
|
11
|
+
this executable. To install the ruby-fizzbuzz Ruby gem,
|
12
|
+
try the following:
|
13
|
+
|
14
|
+
gem install ruby-fizzbuzz
|
15
|
+
EOS
|
32
16
|
end
|
33
17
|
|
34
|
-
script_name = File.basename($
|
18
|
+
script_name = File.basename($PROGRAM_NAME)
|
35
19
|
|
36
20
|
start = 1
|
37
21
|
stop = 100
|
38
22
|
|
23
|
+
line = false
|
39
24
|
reverse = false
|
40
25
|
|
41
|
-
|
42
|
-
option.banner = <<-EOS
|
26
|
+
OptionParser.new do |option|
|
27
|
+
option.banner = (<<-EOS).gsub(/^[ ]{,4}/, '')
|
28
|
+
Yet another FizzBuzz in Ruby.
|
43
29
|
|
44
|
-
|
30
|
+
Usage:
|
45
31
|
|
46
|
-
|
47
|
-
|
48
|
-
#{option.summary_indent}#{script_name} [--start <NUMBER>] [--stop <NUMBER>] [--reverse]
|
49
|
-
#{option.summary_indent}#{script_name} [--version] [--help]
|
32
|
+
#{option.summary_indent}#{script_name} [--start <NUMBER>] [--stop <NUMBER>] [--reverse]
|
33
|
+
#{option.summary_indent}#{script_name} [--version] [--help]
|
50
34
|
EOS
|
51
35
|
|
52
36
|
option.separator "\nOptions:\n\n"
|
53
37
|
|
54
|
-
option.on('--start <NUMBER>',
|
55
|
-
"Specify the start value (default: #{start})."
|
56
|
-
) do | value|
|
38
|
+
option.on('--start <NUMBER>', "Specify the start value (default: #{start}).") do |value|
|
57
39
|
start = value.to_i if value
|
58
40
|
end
|
59
41
|
|
60
|
-
option.on('--stop <NUMBER>',
|
61
|
-
"Specify the stop value (default: #{stop})."
|
62
|
-
) do |value|
|
42
|
+
option.on('--stop <NUMBER>', "Specify the stop value (default: #{stop}).") do |value|
|
63
43
|
stop = value.to_i if value
|
64
44
|
end
|
65
45
|
|
66
|
-
option.on('--
|
67
|
-
|
68
|
-
|
46
|
+
option.on('--line', 'Print results in a single line.') do
|
47
|
+
line = true
|
48
|
+
end
|
49
|
+
|
50
|
+
option.on('--reverse', 'Print results in a reverse order.') do
|
69
51
|
reverse = true
|
70
52
|
end
|
71
53
|
|
72
|
-
option.on('-v', '--version',
|
73
|
-
'Show version number.'
|
74
|
-
) do
|
54
|
+
option.on('-v', '--version', 'Show version number.') do
|
75
55
|
puts FizzBuzz::VERSION
|
76
56
|
exit
|
77
57
|
end
|
78
58
|
|
79
|
-
option.on('-h', '--help',
|
80
|
-
'Display this help message.'
|
81
|
-
) do
|
59
|
+
option.on('-h', '--help', 'Display this help message.') do
|
82
60
|
puts option.help
|
83
61
|
exit
|
84
62
|
end
|
85
63
|
|
86
|
-
option.separator <<-EOS
|
64
|
+
option.separator "\n" + (<<-EOS).gsub(/^[ ]{,4}/, '')
|
65
|
+
Note:
|
87
66
|
|
88
|
-
|
89
|
-
|
90
|
-
By default, the results from #{start} to #{stop} will be shown in a descending order.
|
67
|
+
By default, the results from #{start} to #{stop} will be shown in a descending order.
|
91
68
|
EOS
|
92
|
-
|
93
|
-
option.separator "\n"
|
94
|
-
end
|
95
|
-
|
96
|
-
parser.parse!
|
69
|
+
end.parse!
|
97
70
|
|
98
71
|
begin
|
99
|
-
FizzBuzz.fizzbuzz(start, stop, reverse)
|
72
|
+
FizzBuzz.fizzbuzz(start, stop, reverse) do |i|
|
73
|
+
print format('%s%s', i, line ? ' ' : "\n")
|
74
|
+
end
|
100
75
|
rescue => e
|
101
|
-
puts "An error occurred: #{e
|
76
|
+
puts "An error occurred: #{e}"
|
102
77
|
exit 1
|
103
78
|
end
|
104
|
-
|
105
|
-
# vim: set ts=2 sw=2 sts=2 et :
|
106
|
-
# encoding: utf-8
|
data/ext/fizzbuzz/common.h
CHANGED
@@ -1,26 +1,18 @@
|
|
1
|
-
/* :enddoc: */
|
2
|
-
|
3
|
-
/*
|
4
|
-
* common.h
|
5
|
-
*
|
6
|
-
* Copyright 2012-2014 Krzysztof Wilczynski
|
7
|
-
*
|
8
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
-
* you may not use this file except in compliance with the License.
|
10
|
-
* You may obtain a copy of the License at
|
11
|
-
*
|
12
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
13
|
-
*
|
14
|
-
* Unless required by applicable law or agreed to in writing, software
|
15
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
-
* See the License for the specific language governing permissions and
|
18
|
-
* limitations under the License.
|
19
|
-
*/
|
20
|
-
|
21
1
|
#if !defined(_COMMON_H)
|
22
2
|
#define _COMMON_H 1
|
23
3
|
|
4
|
+
#if !defined(_GNU_SOURCE)
|
5
|
+
# define _GNU_SOURCE 1
|
6
|
+
#endif
|
7
|
+
|
8
|
+
#if !defined(_BSD_SOURCE)
|
9
|
+
# define _BSD_SOURCE 1
|
10
|
+
#endif
|
11
|
+
|
12
|
+
#if !defined(_DEFAULT_SOURCE)
|
13
|
+
# define _DEFAULT_SOURCE 1
|
14
|
+
#endif
|
15
|
+
|
24
16
|
#if defined(__cplusplus)
|
25
17
|
extern "C" {
|
26
18
|
#endif
|
@@ -29,19 +21,39 @@ extern "C" {
|
|
29
21
|
#include <assert.h>
|
30
22
|
#include <ruby.h>
|
31
23
|
|
32
|
-
#if !
|
33
|
-
|
24
|
+
#if !defined(ANYARGS)
|
25
|
+
# if defined(__cplusplus)
|
26
|
+
# define ANYARGS ...
|
27
|
+
# else
|
28
|
+
# define ANYARGS
|
29
|
+
# endif
|
34
30
|
#endif
|
35
31
|
|
36
|
-
#if !
|
37
|
-
|
32
|
+
#if !defined(RB_UNUSED_VAR)
|
33
|
+
# if defined(__GNUC__)
|
34
|
+
# define RB_UNUSED_VAR(x) (x) __attribute__ ((unused))
|
35
|
+
# else
|
36
|
+
# define RB_UNUSED_VAR(x) (x)
|
37
|
+
# endif
|
38
38
|
#endif
|
39
39
|
|
40
|
-
#if defined(
|
41
|
-
#
|
40
|
+
#if !(defined(RB_LIKELY) || defined(RB_UNLIKELY))
|
41
|
+
# if defined(__GNUC__) && __GNUC__ >= 3
|
42
|
+
# define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
|
43
|
+
# define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
|
44
|
+
# else
|
45
|
+
# define RB_LIKELY(x) (x)
|
46
|
+
# define RB_UNLIKELY(x) (x)
|
47
|
+
# endif
|
42
48
|
#endif
|
43
49
|
|
44
|
-
#
|
50
|
+
#if !defined(RUBY_METHOD_FUNC)
|
51
|
+
# define RUBY_METHOD_FUNC(f) ((VALUE (*)(ANYARGS))(f))
|
52
|
+
#endif
|
53
|
+
|
54
|
+
#if defined(RUBY_INTEGER_UNIFICATION) || RUBY_API_VERSION_CODE >= 20400
|
55
|
+
# define HAVE_INTEGER_UNIFICATION 1
|
56
|
+
#endif
|
45
57
|
|
46
58
|
#if !defined(CSTR2RVAL)
|
47
59
|
# define CSTR2RVAL(x) ((x) == NULL ? Qnil : rb_str_new2(x))
|
@@ -68,5 +80,3 @@ typedef unsigned char uint8_t;
|
|
68
80
|
#endif
|
69
81
|
|
70
82
|
#endif /* _COMMON_H */
|
71
|
-
|
72
|
-
/* vim: set ts=8 sw=4 sts=2 et : */
|