dm-metamapper 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -0
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/example/example.cpp +1 -0
- data/example/example.rb +7 -0
- data/lib/dm-metamapper/generators/cpp.rb +7 -0
- data/lib/templates/cpp/class.hpp.erb +4 -0
- data/lib/templates/cpp/instance.hpp.erb +6 -0
- metadata +3 -4
- data/dm-metamapper.gemspec +0 -74
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -16,8 +16,9 @@ end
|
|
16
16
|
|
17
17
|
desc "local gem build and install"
|
18
18
|
task :local do
|
19
|
+
sh "rvm ree@drive"
|
19
20
|
sh "gem uninstall -a dm-metamapper"
|
20
21
|
sh "gem build dm-metamapper.gemspec"
|
21
22
|
version = File.read("VERSION").chomp
|
22
23
|
sh "gem install -l ./dm-metamapper-#{version}.gem"
|
23
|
-
end
|
24
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.9
|
data/example/example.cpp
CHANGED
data/example/example.rb
CHANGED
@@ -3,12 +3,18 @@ require "rubygems"
|
|
3
3
|
require "bundler"
|
4
4
|
Bundler.setup(:default, :test)
|
5
5
|
require "dm-core"
|
6
|
+
require "dm-types"
|
6
7
|
require File.expand_path("../../lib/dm-metamapper.rb", __FILE__)
|
7
8
|
require "dm-metamapper/generators/cpp"
|
8
9
|
|
9
10
|
#DataMapper.setup(:default, "sqlite3::memory:")
|
10
11
|
DataMapper.setup(:default, "mysql://root@localhost/dmmm")
|
11
12
|
|
13
|
+
COLORS = [
|
14
|
+
:blue,
|
15
|
+
:white
|
16
|
+
]
|
17
|
+
|
12
18
|
class User
|
13
19
|
include DataMapper::Resource
|
14
20
|
|
@@ -29,6 +35,7 @@ class Dog
|
|
29
35
|
property :id, Serial
|
30
36
|
property :user_id, Integer
|
31
37
|
property :name, String
|
38
|
+
property :color, Enum[*COLORS]
|
32
39
|
property :stinks, Boolean
|
33
40
|
end
|
34
41
|
|
@@ -21,11 +21,16 @@ module DataMapper
|
|
21
21
|
hash[m.child_key.first.name] = decolonize(m.parent_model_name.to_const_string)
|
22
22
|
hash
|
23
23
|
end
|
24
|
+
enums = {}
|
24
25
|
model.properties.each do |prop|
|
25
26
|
cpp_name = if prop.serial?
|
26
27
|
"Field<I_#{decolonize(model.name)}>"
|
27
28
|
elsif key_to_parent[prop.name]
|
28
29
|
"Field<I_#{key_to_parent[prop.name]}>"
|
30
|
+
elsif prop.type.ancestors.include?(DataMapper::Types::Enum)
|
31
|
+
name = prop.name.to_s.upcase
|
32
|
+
enums[name] = prop
|
33
|
+
"Field<Enum#{decolonize(model.name)}#{name}>"
|
29
34
|
else
|
30
35
|
"F_#{decolonize(prop.primitive.to_s)}"
|
31
36
|
end
|
@@ -33,6 +38,8 @@ module DataMapper
|
|
33
38
|
(class << prop; self; end).instance_eval{ attr_accessor :cpp_name }
|
34
39
|
prop.cpp_name = cpp_name
|
35
40
|
end
|
41
|
+
(class << model; self; end).instance_eval{ attr_accessor :enums }
|
42
|
+
model.enums = enums
|
36
43
|
end
|
37
44
|
|
38
45
|
def output_path(model, template)
|
@@ -74,8 +74,12 @@ public:
|
|
74
74
|
for(size_t i = 0; i < res.size(); ++i){
|
75
75
|
<% model.generated_properties.each do |property| %>
|
76
76
|
r[i]._f_<%= property.name %>._base =
|
77
|
+
<% if property.type.ancestors.include?(DataMapper::Types::Enum) %>
|
78
|
+
(<%= property.cpp_name %>::Base)UTILS::fromString<char>(res[i]["<%= property.name %>"]);
|
79
|
+
<% else %>
|
77
80
|
UTILS::fromString<<%= property.cpp_name %>::Base>(res[i]["<%= property.name %>"]);
|
78
81
|
<% end %>
|
82
|
+
<% end %>
|
79
83
|
}
|
80
84
|
}
|
81
85
|
|
@@ -16,6 +16,11 @@
|
|
16
16
|
|
17
17
|
<%# self.relationships.select{|r,m| m.class.name == 'DataMapper::Associations::OneToMany::Relationship'}.each do |relative| %>
|
18
18
|
<%# end %>
|
19
|
+
|
20
|
+
<% model.enums.each do |name, property| %>
|
21
|
+
enum Enum<%= class_name %><%= name %> { <%= property.type.flag_map.map{|v, k| class_name.upcase + "_" + property.name.to_s.upcase + "_" + k.to_s.upcase + " = " + v.to_s}.join(", ") %> };
|
22
|
+
<% end %>
|
23
|
+
|
19
24
|
namespace DMMM {
|
20
25
|
|
21
26
|
class O_<%= class_name %>{
|
@@ -38,6 +43,7 @@ public:
|
|
38
43
|
{}
|
39
44
|
<% end %>
|
40
45
|
|
46
|
+
|
41
47
|
<% model.generated_properties.each do |property| %>
|
42
48
|
const <%= property.cpp_name %>::Base& _<%= property.name %>() const {
|
43
49
|
return _f_<%= property.name %>._base;
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 9
|
9
|
+
version: 0.0.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jonah Honeyman
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-21 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -34,7 +34,6 @@ files:
|
|
34
34
|
- README.md
|
35
35
|
- Rakefile
|
36
36
|
- VERSION
|
37
|
-
- dm-metamapper.gemspec
|
38
37
|
- example/.gitignore
|
39
38
|
- example/Makefile
|
40
39
|
- example/example.cpp
|
data/dm-metamapper.gemspec
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{dm-metamapper}
|
8
|
-
s.version = "0.0.7"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Jonah Honeyman", "Omer Tamuz"]
|
12
|
-
s.date = %q{2010-07-08}
|
13
|
-
s.description = %q{C++ API for databases created with DM. Hard typing, compile time checked queries.}
|
14
|
-
s.email = %q{jonah@honeyman.org}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"README.md"
|
17
|
-
]
|
18
|
-
s.files = [
|
19
|
-
".autospec",
|
20
|
-
".gitignore",
|
21
|
-
"Gemfile",
|
22
|
-
"README.md",
|
23
|
-
"Rakefile",
|
24
|
-
"VERSION",
|
25
|
-
"dm-metamapper.gemspec",
|
26
|
-
"example/.gitignore",
|
27
|
-
"example/Makefile",
|
28
|
-
"example/example.cpp",
|
29
|
-
"example/example.rb",
|
30
|
-
"lib/dm-metamapper.rb",
|
31
|
-
"lib/dm-metamapper/config.rb",
|
32
|
-
"lib/dm-metamapper/generator.rb",
|
33
|
-
"lib/dm-metamapper/generators/cpp.rb",
|
34
|
-
"lib/dm-metamapper/metamapper.rb",
|
35
|
-
"lib/dm-metamapper/model.rb",
|
36
|
-
"lib/dm-metamapper/property.rb",
|
37
|
-
"lib/dm-metamapper/template.rb",
|
38
|
-
"lib/templates/cpp/class.hpp.erb",
|
39
|
-
"lib/templates/cpp/dmmm_comparators.hpp.erb",
|
40
|
-
"lib/templates/cpp/dmmm_dbface.cpp.erb",
|
41
|
-
"lib/templates/cpp/dmmm_dbface.h.erb",
|
42
|
-
"lib/templates/cpp/dmmm_fields.hpp.erb",
|
43
|
-
"lib/templates/cpp/dmmm_id.hpp.erb",
|
44
|
-
"lib/templates/cpp/dmmm_identifiers.hpp.erb",
|
45
|
-
"lib/templates/cpp/dmmm_utils.cpp.erb",
|
46
|
-
"lib/templates/cpp/dmmm_utils.hpp.erb",
|
47
|
-
"lib/templates/cpp/instance.hpp.erb",
|
48
|
-
"spec/dm-metamapper/generator_spec.rb",
|
49
|
-
"spec/dm-metamapper/template_spec.rb",
|
50
|
-
"spec/spec.opts",
|
51
|
-
"spec/spec_helper.rb"
|
52
|
-
]
|
53
|
-
s.homepage = %q{http://github.com/jonuts/dm-metamapper}
|
54
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
55
|
-
s.require_paths = ["lib"]
|
56
|
-
s.rubygems_version = %q{1.3.6}
|
57
|
-
s.summary = %q{Code generating C++ ORM}
|
58
|
-
s.test_files = [
|
59
|
-
"spec/spec_helper.rb",
|
60
|
-
"spec/dm-metamapper/generator_spec.rb",
|
61
|
-
"spec/dm-metamapper/template_spec.rb"
|
62
|
-
]
|
63
|
-
|
64
|
-
if s.respond_to? :specification_version then
|
65
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
66
|
-
s.specification_version = 3
|
67
|
-
|
68
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
69
|
-
else
|
70
|
-
end
|
71
|
-
else
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|