cgen 0.16.8 → 0.16.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f3c9caebbcfcf578bd5877bacb6dcc0b2786ac41
4
+ data.tar.gz: 7bc92dd9303689f9fb0e9636c63c8265d54344b3
5
+ SHA512:
6
+ metadata.gz: 0600620f4408bcc9fc5f4eb6557f192fe7538445665184b408f6460986d793532f836b020e66db1e82deef399f6e47ed1b312efd38f69eb1f8095d95edfa98f8
7
+ data.tar.gz: ac8c34a7e85ce8bb888613b47bb26f039a629eac6ff736a6eb0511c2710b3c28c02283c3c3a00b1945240aff0949bd0afdf3d4de4554f2bb58d09cfd6dd63c42
@@ -1,3 +1,11 @@
1
+ cgen 0.16.10
2
+
3
+ - fix gemspec
4
+
5
+ cgen 0.16.9
6
+
7
+ - updated for ruby 2.0
8
+
1
9
  cgen 0.16.8
2
10
 
3
11
  - added Library#include_dirs for setting include path
@@ -1,4 +1,4 @@
1
- = Overview
1
+ # Overview #
2
2
 
3
3
  Ruby has a C interface for defining extensions to the language. Using this interface, you define functions in C and add them as methods that are callable from ruby code. You may also define classes, modules, globals, and so on.
4
4
 
@@ -10,7 +10,7 @@ Including the CShadow module in a class lets you define the structure of the dat
10
10
 
11
11
  See the CGenerator, CShadow, and CShadow::Attribute pages for details.
12
12
 
13
- = Purpose and history
13
+ # Purpose and history #
14
14
 
15
15
  The intended use of cgen is managing a complex library that may change from one run of the program to the next. The reason for the change might be that the program is written in a DSL (domain-specific language), and that the library functions are generated based on the statements of the DSL.
16
16
 
@@ -20,9 +20,9 @@ Cgen was introduced in 2001 with this post:
20
20
 
21
21
  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/24443
22
22
 
23
- = Getting started
23
+ # Getting started #
24
24
 
25
- == Installing
25
+ ## Installing ##
26
26
 
27
27
  Cgen is available from http://rubyforge.org/projects/cgen.
28
28
 
@@ -36,7 +36,7 @@ or from tarball, by unpacking and then:
36
36
  ruby install.rb setup
37
37
  ruby install.rb install
38
38
 
39
- === System Requirements
39
+ ### System Requirements ###
40
40
 
41
41
  Cgen is pure ruby, so you don't need a compiler to install it. However, you do need a C compiler to do anything useful with it.
42
42
 
@@ -48,7 +48,7 @@ On Windows, you should use a compiler that is compatible with your ruby interpre
48
48
  * MSVC 2003
49
49
  * Mingw32 (gcc; the foundation of the new OCI by Luis Lavena)
50
50
 
51
- = Examples
51
+ # Examples #
52
52
 
53
53
  The cgen package comes with a substantial examples directory, but it is not yet very well organized. Here are the best ones to start with:
54
54
 
@@ -61,15 +61,15 @@ complex.rb::
61
61
  matrix.rb::
62
62
  second example of CShadow
63
63
 
64
- = Web site
64
+ # Web site #
65
65
 
66
66
  http://rubyforge.org/projects/cgen
67
67
  http://cgen.rubyforge.org/
68
68
 
69
- = License
69
+ # License #
70
70
 
71
71
  Ruby license.
72
72
 
73
- = Author
73
+ # Author #
74
74
 
75
- Copyright 2001-2009, Joel VanderWerf, mailto:vjoel@users.sourceforge.net.
75
+ Copyright 2001-2013, Joel VanderWerf, mailto:vjoel@users.sourceforge.net.
@@ -897,7 +897,7 @@ class Library < Template
897
897
  dep = "depend"
898
898
  return if Dir[cpat].all? {|f| test ?<, f, dep}
899
899
 
900
- cfg = Config::CONFIG
900
+ cfg = RbConfig::CONFIG
901
901
  dirs = [cfg["sitearchdir"], cfg["archdir"], cfg["includedir"], *include_dirs]
902
902
 
903
903
  case cfg["CC"]
@@ -938,7 +938,7 @@ class Library < Template
938
938
  # the global namespace.
939
939
  build_wrapper do
940
940
  require 'rbconfig'
941
- ruby = Config::CONFIG["RUBY_INSTALL_NAME"]
941
+ ruby = RbConfig::CONFIG["RUBY_INSTALL_NAME"]
942
942
 
943
943
  old_contents = File.read("extconf.rb") rescue nil
944
944
  contents = extconf
@@ -1088,35 +1088,31 @@ module CShadow
1088
1088
  end
1089
1089
  end
1090
1090
 
1091
- # Define YAML methods for CShadow classes. Can be called before
1092
- # or after #commit. Loads the yaml library.
1093
- def self.allow_yaml(your_tag = "path.berkeley.edu,2006")
1094
- return if defined?(@cshadow_allow_yaml) and @cshadow_allow_yaml
1095
- @cshadow_allow_yaml = true
1096
-
1097
- require 'yaml'
1098
-
1099
- yaml_as "tag:#{your_tag}:cshadow"
1091
+ def each_persistent_attr # :yields: attr_name
1092
+ psa = self.class.shadow_attrs.select {|attr| attr.persists}
1093
+ psa.each do |attr|
1094
+ yield attr.var.to_s
1095
+ end
1096
+ instance_variables.each do |ivar|
1097
+ yield ivar[1..-1]
1098
+ end
1099
+ end
1100
1100
 
1101
- def self.yaml_new( klass, tag, val )
1102
- subtype, subclass = YAML.read_type_class(tag, Object)
1103
- subclass.new_from_hash(val)
1101
+ def encode_with coder
1102
+ each_persistent_attr_value do |attr, value|
1103
+ coder[attr] = value
1104
1104
  end
1105
+ end
1105
1106
 
1106
- module_eval do
1107
- def add_yaml_map_contents(map)
1108
- each_persistent_attr_value do |attr, value|
1109
- map.add(attr, value)
1110
- end
1111
- end
1107
+ def init_with coder
1108
+ psa = self.class.shadow_attrs.select {|attr| attr.persists}
1109
+ psvars = psa.map{|attr|attr.var.to_s}
1112
1110
 
1113
- def to_yaml( opts = {} )
1114
- YAML.quick_emit(object_id, opts) do |out|
1115
- out.map( taguri, to_yaml_style ) do |map|
1116
- add_yaml_map_contents(map)
1117
- end
1118
- end
1119
- end
1111
+ from_array = psvars.map {|sv| coder[sv]}
1112
+ _load_data(from_array)
1113
+
1114
+ (coder.map.keys - psvars).each do |ivar|
1115
+ obj.instance_variable_set("@#{ivar}", coder[ivar])
1120
1116
  end
1121
1117
  end
1122
1118
  end
@@ -465,13 +465,10 @@ class MarshalTest < Test::Unit::TestCase
465
465
 
466
466
  count = 0
467
467
  str = Marshal.dump ms1
468
- copy = Marshal.load str, proc { |x|
469
- if x.class == MarshalSample then count += 1 end
470
- }
468
+ copy = Marshal.load str
471
469
 
472
470
  assert_same(copy.x, copy.t.x)
473
471
  assert_same(copy.x.x, copy)
474
- assert_equal(3, count)
475
472
  end
476
473
  end
477
474
 
@@ -261,29 +261,19 @@ class OtherBaseTestCase < Test::Unit::TestCase
261
261
 
262
262
  end
263
263
 
264
- begin
265
- require 'yaml'
266
- module Kernel
267
- undef :y # else conflict with checking :y is undefined above
268
- end
269
- CShadow.allow_yaml
270
- rescue Exception => e
271
- $stderr.puts "Could not load yaml : #{e.inspect}"
272
- else
273
-
274
- class YamlTest < Test::Unit::TestCase
275
-
276
- def test_yaml
277
- base = Base.new
278
- base.obj = [1,2,3]
279
- base.np = "456"
280
-
281
- base2 = YAML.load(YAML.dump(base))
282
-
283
- assert_equal(base.obj, base2.obj)
284
- assert_equal(nil, base2.np)
285
- end
286
-
264
+ require 'yaml'
265
+
266
+ class YamlTest < Test::Unit::TestCase
267
+
268
+ def test_yaml
269
+ base = Base.new
270
+ base.obj = [1,2,3]
271
+ base.np = "456"
272
+ base.instance_variable_set(:@ivar, "save this too")
273
+ base2 = YAML.load(YAML.dump(base))
274
+ assert_equal(base.obj, base2.obj)
275
+ assert_equal(nil, base2.np)
276
+ assert_equal("save this too", base.instance_variable_get(:@ivar))
287
277
  end
288
278
 
289
279
  end
@@ -10,7 +10,7 @@ def run(x)
10
10
  end
11
11
 
12
12
  require 'rbconfig'
13
- ruby = Config::CONFIG["RUBY_INSTALL_NAME"]
13
+ ruby = RbConfig::CONFIG["RUBY_INSTALL_NAME"]
14
14
 
15
15
  run "#{ruby} test-cgen.rb"
16
16
  run "#{ruby} test-cshadow.rb"
metadata CHANGED
@@ -1,129 +1,88 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cgen
3
- version: !ruby/object:Gem::Version
4
- hash: 79
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 16
9
- - 8
10
- version: 0.16.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.16.10
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Joel VanderWerf
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2010-08-17 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: bones
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 25
30
- segments:
31
- - 3
32
- - 4
33
- - 7
34
- version: 3.4.7
35
- type: :development
36
- version_requirements: *id001
37
- description: |
38
- Framework for dynamically generating and loading C extensions from Ruby
39
- programs. Includes CShadow module for defining classes in terms of C structs
40
- with accessors and inheritance.
41
-
11
+ date: 2013-04-05 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Framework for dynamically generating and loading C extensions and for
14
+ defining classes in terms of C structs.
42
15
  email: vjoel@users.sourceforge.net
43
16
  executables: []
44
-
45
17
  extensions: []
46
-
47
- extra_rdoc_files:
18
+ extra_rdoc_files:
48
19
  - History.txt
49
- - README.txt
50
- - examples/inherit-example.txt
51
- files:
52
- - .bnsignore
53
- - .gitignore
20
+ - README.md
21
+ files:
54
22
  - History.txt
55
- - README.txt
56
- - examples/bench.rb
57
- - examples/complex.rb
58
- - examples/complex2.rb
59
- - examples/cshadow-example.rb
60
- - examples/cshadow-point.rb
61
- - examples/ctest.rb
62
- - examples/ctest2.rb
23
+ - README.md
24
+ - lib/cgen/attribute.rb
25
+ - lib/cgen/inherit.rb
26
+ - lib/cgen/cshadow.rb
27
+ - lib/cgen/cgen.rb
28
+ - examples/example-ruby-talk-30April2004.rb
29
+ - examples/instance-eval.rb
63
30
  - examples/ctest3.rb
64
- - examples/ctest4.rb
65
31
  - examples/ctest5.rb
66
- - examples/example-ruby-talk-26July2009.rb
67
- - examples/example-ruby-talk-30April2004.rb
32
+ - examples/ctest.rb
68
33
  - examples/fixed-array.rb
34
+ - examples/complex.rb
35
+ - examples/marshal-test.rb
69
36
  - examples/inherit-example.rb
70
- - examples/inherit-example.txt
71
- - examples/instance-eval.rb
72
37
  - examples/ivset.rb
73
- - examples/marshal-test.rb
74
- - examples/matrix.rb
75
- - examples/modular-def.rb
38
+ - examples/test.rb
39
+ - examples/ctest2.rb
76
40
  - examples/objattr.rb
41
+ - examples/example-ruby-talk-26July2009.rb
42
+ - examples/bench.rb
43
+ - examples/yaml.rb
44
+ - examples/matrix.rb
45
+ - examples/cshadow-example.rb
46
+ - examples/complex2.rb
47
+ - examples/cshadow-point.rb
77
48
  - examples/opaque-struct-test.rb
78
- - examples/sample.rb
79
49
  - examples/struct.rb
80
- - examples/test.rb
81
- - examples/yaml.rb
82
- - lib/cgen/attribute.rb
83
- - lib/cgen/cgen.rb
84
- - lib/cgen/cshadow.rb
85
- - lib/cgen/inherit.rb
86
- - rakefile
50
+ - examples/modular-def.rb
51
+ - examples/sample.rb
52
+ - examples/ctest4.rb
53
+ - examples/inherit-example.txt
87
54
  - test/test-attribute.rb
88
55
  - test/test-cgen.rb
89
- - test/test-cshadow.rb
90
56
  - test/test.rb
91
- has_rdoc: true
57
+ - test/test-cshadow.rb
92
58
  homepage: http://rubyforge.org/projects/cgen
93
59
  licenses: []
94
-
60
+ metadata: {}
95
61
  post_install_message:
96
- rdoc_options:
62
+ rdoc_options:
63
+ - --quiet
64
+ - --line-numbers
65
+ - --inline-source
66
+ - --title
67
+ - CGenerator
97
68
  - --main
98
- - README.txt
99
- require_paths:
69
+ - README.md
70
+ require_paths:
100
71
  - lib
101
- required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
110
- required_rubygems_version: !ruby/object:Gem::Requirement
111
- none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
119
82
  requirements: []
120
-
121
83
  rubyforge_project: cgen
122
- rubygems_version: 1.3.7
84
+ rubygems_version: 2.0.3
123
85
  signing_key:
124
- specification_version: 3
86
+ specification_version: 4
125
87
  summary: C code generator
126
- test_files:
127
- - test/test-attribute.rb
128
- - test/test-cgen.rb
129
- - test/test-cshadow.rb
88
+ test_files: []
data/.bnsignore DELETED
@@ -1,22 +0,0 @@
1
- # The list of files that should be ignored by Mr Bones.
2
- # Lines that start with '#' are comments.
3
- #
4
- # A .gitignore file can be used instead by setting it as the ignore
5
- # file in your Rakefile:
6
- #
7
- # PROJ.ignore_file = '.gitignore'
8
- #
9
- # For a project with a C extension, the following would be a good set of
10
- # exclude patterns (uncomment them if you want to use them):
11
- # *.[oa]
12
- # *~
13
- announcement.txt
14
- coverage
15
- doc
16
- pkg
17
- *.bck
18
- misc
19
- junk
20
- tmp
21
- */tmp
22
- */junk
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- *.bck
2
- pkg
3
- doc
4
- junk/*
5
- tmp/*
6
- tmp
7
- */tmp
8
- */junk
data/rakefile DELETED
@@ -1,40 +0,0 @@
1
- begin
2
- require 'bones'
3
- rescue LoadError
4
- abort '### please install the bones gem ###'
5
- end
6
-
7
- ensure_in_path 'lib'
8
- require 'cgen/cgen'
9
-
10
- Bones {
11
- name 'cgen'
12
- authors 'Joel VanderWerf'
13
- email 'vjoel@users.sourceforge.net'
14
- url 'http://rubyforge.org/projects/cgen'
15
- rubyforge.name 'cgen'
16
- version CGenerator::VERSION
17
- readme_file 'README.txt'
18
-
19
- summary 'C code generator'
20
- description <<END
21
- Framework for dynamically generating and loading C extensions from Ruby
22
- programs. Includes CShadow module for defining classes in terms of C structs
23
- with accessors and inheritance.
24
- END
25
-
26
- changes File.read(history_file)[/^\w.*?(?=^\w)/m]
27
- (rdoc.dir File.readlink(rdoc.dir)) rescue nil
28
-
29
- spec.opts << '--color'
30
- test.files = Dir["test/test-*.rb"]
31
- }
32
-
33
- ENV["VERSION"] = CGenerator::VERSION ## why isn't this automatic?
34
-
35
- task 'gem:release' => 'rubyforge:release' # to release to rubyforge as well
36
-
37
- task :release => ["rubyforge:release", "rubyforge:doc_release"]
38
-
39
- # EOF
40
-