malloc 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/COPYING CHANGED
@@ -1,5 +1,5 @@
1
1
  This is the license for the computer vision library Hornetseye.
2
- Copyright (C) 2006, 2007, 2008, 2009 Jan Wedekind, Sheffield, United Kingdom.
2
+ Copyright (C) 2006 - 2010 Jan Wedekind, Sheffield, United Kingdom.
3
3
 
4
4
 
5
5
  GNU GENERAL PUBLIC LICENSE
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'rake/packagetask'
6
6
  require 'rbconfig'
7
7
 
8
8
  PKG_NAME = 'malloc'
9
- PKG_VERSION = '1.0.0'
9
+ PKG_VERSION = '1.1.1'
10
10
  CXX = ENV[ 'CXX' ] || 'g++'
11
11
  STRIP = ENV[ 'STRIP' ] || 'strip'
12
12
  RB_FILES = FileList[ 'lib/**/*.rb' ]
@@ -54,8 +54,8 @@ desc 'Install Ruby extension'
54
54
  task :install => :all do
55
55
  verbose true do
56
56
  for f in RB_FILES do
57
- FileUtils.mkdir_p "#{$SITELIBDIR}/#{File.dirname( f[ 4 .. -1 ] )}"
58
- FileUtils.cp_r f, "#{$SITELIBDIR}/#{f[ 4 .. -1 ]}"
57
+ FileUtils.mkdir_p "#{$SITELIBDIR}/#{File.dirname f.gsub( /^lib\//, '' )}"
58
+ FileUtils.cp_r f, "#{$SITELIBDIR}/#{f.gsub( /^lib\//, '' )}"
59
59
  end
60
60
  FileUtils.mkdir_p $SITEARCHDIR
61
61
  FileUtils.cp SO_FILE, "#{$SITEARCHDIR}/#{File.basename SO_FILE}"
@@ -66,7 +66,7 @@ desc 'Uninstall Ruby extension'
66
66
  task :uninstall do
67
67
  verbose true do
68
68
  for f in RB_FILES do
69
- FileUtils.rm_f "#{$SITELIBDIR}/#{f[ 4 .. -1 ]}"
69
+ FileUtils.rm_f "#{$SITELIBDIR}/#{f.gsub /^lib\//, ''}"
70
70
  end
71
71
  FileUtils.rm_f "#{$SITEARCHDIR}/#{File.basename SO_FILE}"
72
72
  end
@@ -112,6 +112,7 @@ begin
112
112
  s.has_rdoc = 'yard'
113
113
  s.extra_rdoc_files = []
114
114
  s.rdoc_options = %w{--no-private}
115
+ s.add_development_dependency %q{rake}
115
116
  end
116
117
  GEM_SOURCE = "#{PKG_NAME}-#{PKG_VERSION}.gem"
117
118
  $BINSPEC = Gem::Specification.new do |s|
@@ -128,7 +129,6 @@ begin
128
129
  s.test_files = TC_FILES
129
130
  s.require_paths = [ 'lib', 'ext' ]
130
131
  s.rubyforge_project = %q{hornetseye}
131
- s.add_development_dependency %q{rake}
132
132
  s.has_rdoc = 'yard'
133
133
  s.extra_rdoc_files = []
134
134
  s.rdoc_options = %w{--no-private}
@@ -137,15 +137,17 @@ begin
137
137
  desc "Build the gem file #{GEM_SOURCE}"
138
138
  task :gem => [ "pkg/#{GEM_SOURCE}" ]
139
139
  file "pkg/#{GEM_SOURCE}" => [ 'pkg' ] + $SPEC.files do
140
- Gem::Builder.new( $SPEC ).build
141
- verbose true do
142
- FileUtils.mv GEM_SOURCE, "pkg/#{GEM_SOURCE}"
140
+ when_writing 'Creating GEM' do
141
+ Gem::Builder.new( $SPEC ).build
142
+ verbose true do
143
+ FileUtils.mv GEM_SOURCE, "pkg/#{GEM_SOURCE}"
144
+ end
143
145
  end
144
146
  end
145
147
  desc "Build the gem file #{GEM_BINARY}"
146
148
  task :gem_binary => [ "pkg/#{GEM_BINARY}" ]
147
149
  file "pkg/#{GEM_BINARY}" => [ 'pkg' ] + $BINSPEC.files do
148
- when_writing 'Creating GEM' do
150
+ when_writing 'Creating binary GEM' do
149
151
  Gem::Builder.new( $BINSPEC ).build
150
152
  verbose true do
151
153
  FileUtils.mv GEM_BINARY, "pkg/#{GEM_BINARY}"
@@ -160,8 +162,7 @@ rule '.o' => '.cc' do |t|
160
162
  sh "#{CXX} #{$CXXFLAGS} -c -o #{t.name} #{t.source}"
161
163
  end
162
164
 
163
- file 'ext/error.o' => [ 'ext/error.cc', 'ext/error.hh' ]
164
165
  file 'ext/malloc.o' => [ 'ext/malloc.cc', 'ext/malloc.hh', 'ext/error.hh' ]
165
166
 
166
167
  CLEAN.include 'ext/*.o'
167
- CLOBBER.include SO_FILE, 'doc'
168
+ CLOBBER.include SO_FILE, 'doc', '.yardoc'
data/ext/error.hh CHANGED
@@ -35,11 +35,10 @@ public:
35
35
  virtual const char* what(void) const throw() {
36
36
  temp = m_message.str();
37
37
  return temp.c_str();
38
- return NULL;
39
38
  }
40
39
  protected:
41
40
  std::ostringstream m_message;
42
- static std::string temp;
41
+ mutable std::string temp;
43
42
  };
44
43
 
45
44
  #define ERRORMACRO( condition, class, params, message ) \
data/ext/malloc.cc CHANGED
@@ -53,7 +53,7 @@ VALUE Malloc::mallocNew( VALUE rbClass, VALUE rbSize )
53
53
  << " bytes of memory" );
54
54
  retVal = Data_Wrap_Struct( rbClass, 0, xfree, (void *)self );
55
55
  } catch( std::exception &e ) {
56
- rb_raise( rb_eRuntimeError, e.what() );
56
+ rb_raise( rb_eRuntimeError, "%s", e.what() );
57
57
  };
58
58
  return retVal;
59
59
  }
@@ -68,7 +68,7 @@ VALUE Malloc::mallocPlus( VALUE rbSelf, VALUE rbOffset )
68
68
  << offset << ')' );
69
69
  retVal = Data_Wrap_Struct( cRubyClass, 0, 0, (void *)( self + offset ) );
70
70
  } catch( std::exception &e ) {
71
- rb_raise( rb_eRuntimeError, e.what() );
71
+ rb_raise( rb_eRuntimeError, "%s", e.what() );
72
72
  };
73
73
  return retVal;
74
74
  }
data/lib/malloc_ext.rb CHANGED
@@ -1,3 +1,19 @@
1
+ # malloc - Raw memory allocation for Ruby
2
+ # Copyright (C) 2010 Jan Wedekind
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
1
17
  # String#bytesize is defined if it does not exist already
2
18
  class String
3
19
 
@@ -29,13 +45,15 @@ module Hornetseye
29
45
  # Allocate the specified number of bytes of raw memory.
30
46
  #
31
47
  # @example Allocate raw memory
32
- # require 'malloc'
33
- # include Hornetseye
34
- # m = Malloc.new 32
35
- # # Malloc(32)
48
+ # require 'malloc'
49
+ # include Hornetseye
50
+ # m = Malloc.new 32
51
+ # # Malloc(32)
36
52
  #
37
53
  # @param [Integer] size Number of bytes to allocate.
38
54
  # @return [Malloc] A new Malloc object.
55
+ #
56
+ # @see Malloc
39
57
  def new( size )
40
58
  retval = orig_new size
41
59
  retval.instance_eval { @size = size }
@@ -49,13 +67,13 @@ module Hornetseye
49
67
  # Number of bytes allocated
50
68
  #
51
69
  # @example Querying size of allocated memory
52
- # require 'malloc'
53
- # include Hornetseye
54
- # m = Malloc.new 32
55
- # m.size
56
- # # 32
57
- # ( m + 8 ).size
58
- # # 24
70
+ # require 'malloc'
71
+ # include Hornetseye
72
+ # m = Malloc.new 32
73
+ # m.size
74
+ # # 32
75
+ # ( m + 8 ).size
76
+ # # 24
59
77
  #
60
78
  # @return [Integer] Size of allocated memory.
61
79
  attr_reader :size
@@ -63,9 +81,9 @@ module Hornetseye
63
81
  # Display information about this object
64
82
  #
65
83
  # @example Displaying information about a Malloc object
66
- # require 'malloc'
67
- # Hornetseye::Malloc.new( 8 ).inspect
68
- # "Malloc(8)"
84
+ # require 'malloc'
85
+ # Hornetseye::Malloc.new( 8 ).inspect
86
+ # "Malloc(8)"
69
87
  #
70
88
  # @return [String] A string with information about this object.
71
89
  def inspect
@@ -75,12 +93,12 @@ module Hornetseye
75
93
  # Read data from memory
76
94
  #
77
95
  # @example Convert data of Malloc object to string
78
- # require 'malloc'
79
- # include Hornetseye
80
- # m = Malloc.new 5
81
- # m.write 'abcde'
82
- # m.to_s
83
- # "abcde"
96
+ # require 'malloc'
97
+ # include Hornetseye
98
+ # m = Malloc.new 5
99
+ # m.write 'abcde'
100
+ # m.to_s
101
+ # "abcde"
84
102
  #
85
103
  # @return [String] A string containing the data.
86
104
  #
@@ -92,15 +110,15 @@ module Hornetseye
92
110
  # Operator for doing pointer arithmetic
93
111
  #
94
112
  # @example Pointer arithmetic
95
- # require 'malloc'
96
- # include Hornetseye
97
- # m = Malloc.new 4
98
- # # Malloc(4)
99
- # m.write 'abcd'
100
- # n = m + 2
101
- # # Malloc(2)
102
- # n.read 2
103
- # # "cd"
113
+ # require 'malloc'
114
+ # include Hornetseye
115
+ # m = Malloc.new 4
116
+ # # Malloc(4)
117
+ # m.write 'abcd'
118
+ # n = m + 2
119
+ # # Malloc(2)
120
+ # n.read 2
121
+ # # "cd"
104
122
  #
105
123
  # @param [Integer] offset Non-negative offset for pointer.
106
124
  # @return [Malloc] A new Malloc object.
@@ -119,13 +137,13 @@ module Hornetseye
119
137
  # Read data from memory
120
138
  #
121
139
  # @example Reading and writing data
122
- # require 'malloc'
123
- # include Hornetseye
124
- # m = Malloc.new 4
125
- # # Malloc(4)
126
- # m.write 'abcd'
127
- # m.read 2
128
- # # "ab"
140
+ # require 'malloc'
141
+ # include Hornetseye
142
+ # m = Malloc.new 4
143
+ # # Malloc(4)
144
+ # m.write 'abcd'
145
+ # m.read 2
146
+ # # "ab"
129
147
  #
130
148
  # @param [Integer] length Number of bytes to read.
131
149
  # @return [String] A string containing the data.
@@ -143,13 +161,13 @@ module Hornetseye
143
161
  # Write data to memory
144
162
  #
145
163
  # @example Reading and writing data
146
- # require 'malloc'
147
- # include Hornetseye
148
- # m = Malloc.new 4
149
- # # Malloc(4)
150
- # m.write 'abcd'
151
- # m.read 2
152
- # # "ab"
164
+ # require 'malloc'
165
+ # include Hornetseye
166
+ # m = Malloc.new 4
167
+ # # Malloc(4)
168
+ # m.write 'abcd'
169
+ # m.read 2
170
+ # # "ab"
153
171
  #
154
172
  # @param [String] string A string with the data.
155
173
  # @return [String] Returns the parameter +string+.
@@ -167,4 +185,22 @@ module Hornetseye
167
185
 
168
186
  end
169
187
 
188
+ # Shortcut for instantiating Malloc object
189
+ #
190
+ # @example Create malloc object
191
+ # require 'malloc'
192
+ # include Hornetseye
193
+ # m = Malloc 4
194
+ # # Malloc(4)
195
+ #
196
+ # @param [Integer] size Number of bytes to allocate.
197
+ # @return [Malloc] A new Malloc object.
198
+ #
199
+ # @see Malloc.new
200
+ def Malloc( size )
201
+ Malloc.new size
202
+ end
203
+
204
+ module_function :Malloc
205
+
170
206
  end
data/test/tc_malloc.rb CHANGED
@@ -1,3 +1,19 @@
1
+ # malloc - Raw memory allocation for Ruby
2
+ # Copyright (C) 2010 Jan Wedekind
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
1
17
  require 'test/unit'
2
18
  Kernel::require 'malloc'
3
19
 
@@ -5,6 +21,7 @@ class TC_Malloc < Test::Unit::TestCase
5
21
 
6
22
  def test_new
7
23
  assert_nothing_raised { Hornetseye::Malloc.new 32 }
24
+ assert_nothing_raised { Hornetseye::Malloc 32 }
8
25
  assert_raise( ArgumentError ) { Hornetseye::Malloc.new }
9
26
  end
10
27
 
data/test/ts_malloc.rb CHANGED
@@ -1,3 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
+ # malloc - Raw memory allocation for Ruby
3
+ # Copyright (C) 2010 Jan Wedekind
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
2
18
  require 'tc_malloc'
3
19
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: malloc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 1
8
+ - 1
9
+ version: 1.1.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Jan Wedekind
@@ -9,10 +14,22 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-03-02 00:00:00 +00:00
17
+ date: 2010-09-25 00:00:00 +01:00
13
18
  default_executable:
14
- dependencies: []
15
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rake
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
16
33
  description: This Ruby extension defines the class Hornetseye::Malloc. Hornetseye::Malloc#new allows you to allocate memory, using Hornetseye::Malloc#+ one can do pointer manipulation, and Hornetseye::Malloc#read and Hornetseye::Malloc#write provide reading Ruby strings from memory and writing Ruby strings to memory.
17
34
  email: jan@wedesoft.de
18
35
  executables: []
@@ -27,11 +44,10 @@ files:
27
44
  - COPYING
28
45
  - .document
29
46
  - lib/malloc_ext.rb
30
- - ext/error.cc
31
47
  - ext/malloc.cc
32
48
  - ext/init.cc
33
- - ext/error.hh
34
49
  - ext/malloc.hh
50
+ - ext/error.hh
35
51
  - test/ts_malloc.rb
36
52
  - test/tc_malloc.rb
37
53
  has_rdoc: yard
@@ -45,21 +61,25 @@ require_paths:
45
61
  - lib
46
62
  - ext
47
63
  required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
48
65
  requirements:
49
66
  - - ">="
50
67
  - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
51
70
  version: "0"
52
- version:
53
71
  required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
54
73
  requirements:
55
74
  - - ">="
56
75
  - !ruby/object:Gem::Version
76
+ segments:
77
+ - 0
57
78
  version: "0"
58
- version:
59
79
  requirements: []
60
80
 
61
81
  rubyforge_project: hornetseye
62
- rubygems_version: 1.3.5
82
+ rubygems_version: 1.3.7
63
83
  signing_key:
64
84
  specification_version: 3
65
85
  summary: Object for raw memory allocation and pointer operations
data/ext/error.cc DELETED
@@ -1,20 +0,0 @@
1
- /* HornetsEye - Computer Vision with Ruby
2
- Copyright (C) 2006, 2007, 2008, 2009 Jan Wedekind
3
-
4
- This program is free software: you can redistribute it and/or modify
5
- it under the terms of the GNU General Public License as published by
6
- the Free Software Foundation, either version 3 of the License, or
7
- (at your option) any later version.
8
-
9
- This program is distributed in the hope that it will be useful,
10
- but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- GNU General Public License for more details.
13
-
14
- You should have received a copy of the GNU General Public License
15
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
16
- #include "error.hh"
17
-
18
- using namespace std;
19
-
20
- string Error::temp;