RuCodeGen 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +25 -0
- data/README +34 -0
- data/Rakefile +32 -0
- data/docs/Principle +152 -0
- data/docs/ValueIncapsulator +195 -0
- data/docs/examples/cpp/custom/submit_deliver +909 -0
- data/docs/examples/cpp/value_incapsulator/cfg +127 -0
- data/docs/examples/cpp/value_incapsulator/host_config +51 -0
- data/examples/cpp/custom/submit_deliver/submit_deliver.rb +43 -0
- data/examples/cpp/custom/submit_deliver/submit_deliver_gen.rb +326 -0
- data/examples/cpp/value_incapsulator/cfg.decl.hpp +51 -0
- data/examples/cpp/value_incapsulator/cfg.impl.cpp +63 -0
- data/examples/cpp/value_incapsulator/cg-cfg.rb +19 -0
- data/examples/cpp/value_incapsulator/cg-cfg.test.cpp +15 -0
- data/examples/cpp/value_incapsulator/cg-host_config.rb +12 -0
- data/examples/cpp/value_incapsulator/cout.log +4 -0
- data/examples/cpp/value_incapsulator/host_config.impl.cpp +21 -0
- data/examples/cpp/value_incapsulator/host_config.impl.hpp +21 -0
- data/lib/rucodegen/begin_end.rb +26 -0
- data/lib/rucodegen/codegen.rb +4 -0
- data/lib/rucodegen/filename_producer.rb +57 -0
- data/lib/rucodegen/generation_initiator.rb +92 -0
- data/lib/rucodegen/generators.rb +36 -0
- data/lib/rucodegen/run_mode.rb +89 -0
- data/lib/rucodegen/value_incapsulator.rb +331 -0
- data/lib/rucodegen.rb +4 -0
- data/tests/generators_test_extension.rb +23 -0
- data/tests/tc_class_attribute.rb +87 -0
- data/tests/tc_codegen_initiator.rb +164 -0
- data/tests/tc_filename_producer.rb +54 -0
- data/tests/tc_generators.rb +55 -0
- data/tests/tc_run_mode.rb +72 -0
- data/tests/tc_value_incapsulator.rb +193 -0
- data/tests/tc_value_incapsulator_gen.rb +479 -0
- data/tests/ts_rucodegen.rb +11 -0
- metadata +98 -0
data/LICENSE
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2005, Yauheni Akhotnikau
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
# are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# 1. Redistributions of source code must retain the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer.
|
10
|
+
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
# this list of conditions and the following disclaimer in the documentation
|
12
|
+
# and/or other materials provided with the distribution.
|
13
|
+
# 3. The name of the author may not be used to endorse or promote products derived
|
14
|
+
# from this software without specific prior written permission.
|
15
|
+
#
|
16
|
+
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
17
|
+
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
18
|
+
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
19
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
21
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
22
|
+
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
23
|
+
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
24
|
+
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
data/README
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
= RuCodeGen � ���������� ��� �������������
|
2
|
+
|
3
|
+
== ��������
|
4
|
+
|
5
|
+
RuCodeGen � ��� ������� ���������� ��� �������������. RuCodeGen ������� �� ����
|
6
|
+
������ � ���������� ���������� ��� ��������� ���������������, � ���������� ������� ���������������.
|
7
|
+
|
8
|
+
��������� ��. {docs/Principle}[link://files/docs/Principle.html].
|
9
|
+
|
10
|
+
== ������� ��������������
|
11
|
+
|
12
|
+
* cpp_value_incapsulator (���������� RuCodeGen::ValueIncapsulator).
|
13
|
+
��������� ��. {docs/ValueIncapsulator}[link://files/docs/ValueIncapsulator.html].
|
14
|
+
|
15
|
+
=== ������� ������������� � �������� ���������������
|
16
|
+
|
17
|
+
* {cpp/value_incapsulator/host_config}[link://files/docs/examples/cpp/value_incapsulator/host_config.html]
|
18
|
+
* {cpp/value_incapsulator/cfg}[link://files/docs/examples/cpp/value_incapsulator/cfg.html]
|
19
|
+
* {cpp/custom/submit_deliver}[link://files/docs/examples/cpp/custom/submit_deliver.html]
|
20
|
+
|
21
|
+
== �����������
|
22
|
+
|
23
|
+
RuCodeGen ���������������� � ���� Gem-�. ��� ��� ����������� ���������� ��������������� ��������:
|
24
|
+
|
25
|
+
gem install RuCodeGen
|
26
|
+
|
27
|
+
== ��������
|
28
|
+
|
29
|
+
RuCodeGen ���������������� ��� BSD ��������� (��. LICENSE[link://files/LICENSE.html]).
|
30
|
+
|
31
|
+
== �������������
|
32
|
+
|
33
|
+
Homepage:: http://eao197.narod.ru/projects/rucodegen
|
34
|
+
Email:: mailto://eao197@yahoo.com
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
Gem::manage_gems
|
3
|
+
|
4
|
+
require 'rake/gempackagetask'
|
5
|
+
|
6
|
+
PKG_NAME =
|
7
|
+
RKG_VERSION = '0.1.0'
|
8
|
+
|
9
|
+
spec = Gem::Specification.new do |s|
|
10
|
+
s.name = "RuCodeGen"
|
11
|
+
s.version = "0.1.0"
|
12
|
+
s.author = "Yauheni Akhotnikau"
|
13
|
+
s.email = "eao197@yahoo.com"
|
14
|
+
s.homepage = "http://eao197.narod.ru/projects"
|
15
|
+
s.platform = Gem::Platform::RUBY
|
16
|
+
s.summary = "Simple code generation tool"
|
17
|
+
s.files = FileList[ "{bin,tests,lib,docs,examples}/**/*" ].
|
18
|
+
exclude( "rdoc" ).to_a
|
19
|
+
s.require_path = "lib"
|
20
|
+
s.autorequire = "rucodegen"
|
21
|
+
s.test_file = "tests/ts_rucodegen.rb"
|
22
|
+
s.has_rdoc = true
|
23
|
+
s.rdoc_options = [ '-c', 'windows-1251', '-S', '--main', 'README' ]
|
24
|
+
s.extra_rdoc_files = [ "README", "Rakefile", "LICENSE" ] + FileList[ "docs/**/*" ].to_a
|
25
|
+
end
|
26
|
+
|
27
|
+
gem = Rake::GemPackageTask.new( spec ) do |pkg|
|
28
|
+
pkg.need_zip = true
|
29
|
+
pkg.need_tar = true
|
30
|
+
end
|
31
|
+
|
32
|
+
task :default => [ gem.package_dir + "/" + gem.name + "-" + gem.version.version + ".gem" ]
|
data/docs/Principle
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
= �������� ������ RuCodeGen
|
2
|
+
|
3
|
+
== ������� �������� ������������� RuCodeGen
|
4
|
+
|
5
|
+
RuCodeGen �������� �� ������������� ����� Ruby � �������� DSL (Domain
|
6
|
+
Specific Language) ��� �������� �����-���� �������������. ��� ��������, ���
|
7
|
+
��� � ��������� ������������� �������� � ���� Ruby-�������. ���� ������ �����
|
8
|
+
����������� �� ���������� (��� ������� Ruby-������) � � ���������� ����������
|
9
|
+
���� ��� ��������� �������������� ������ �� ��������������� �����.
|
10
|
+
|
11
|
+
���� �������� �������� ������������� �������
|
12
|
+
{RuCodeGen::ValueIncapsulator}[link://files/docs/ValueIncapsulator.html].
|
13
|
+
|
14
|
+
=== �������� ������� � ��������� �������������
|
15
|
+
|
16
|
+
� ������� ��� ��������� C++ ������ � �������������� RuCodeGen::ValueIncapsulator
|
17
|
+
���������� ������� ��� ����:
|
18
|
+
1. ���������� Gem RuCodeGen.
|
19
|
+
2. ������� �������� ��� ��������� C++ ������.
|
20
|
+
|
21
|
+
��������:
|
22
|
+
|
23
|
+
# �������� Gem RuCodeGen.
|
24
|
+
require 'rubygems'
|
25
|
+
require_gem 'RuCodeGen'
|
26
|
+
|
27
|
+
# �������� ��� �������������.
|
28
|
+
cpp_value_incapsulator :host_config_t do |c|
|
29
|
+
c.decl_file :script_relative => "host_config.impl.hpp"
|
30
|
+
c.impl_file :script_relative => "host_config.impl.cpp"
|
31
|
+
|
32
|
+
c.attr_prefix "m_"
|
33
|
+
|
34
|
+
c.attr :host, "std::string", :default => "localhost"
|
35
|
+
c.attr :post, "short", :default => 8080
|
36
|
+
end
|
37
|
+
|
38
|
+
����� ����������� ��� ����������� � ����� src/cg-host_config.rb.
|
39
|
+
|
40
|
+
=== ������ ������� �� ����������
|
41
|
+
|
42
|
+
����������� ���� ������ ����� ������������ ��� �����: src/host_config.impl.hpp
|
43
|
+
� src/host_config.impl.cpp. ��� ����� ����� ���� ���������� ���������
|
44
|
+
������ src/cg-host_config.rb:
|
45
|
+
|
46
|
+
$ruby src/cg-host_config.rb
|
47
|
+
|
48
|
+
����� ���������� ����� ����� �������� � �++ ������.
|
49
|
+
|
50
|
+
=== ������ ������ RuCodeGen
|
51
|
+
|
52
|
+
�� ���������, ������ � ��������� ������������� ��������� �������������. ��
|
53
|
+
��� ����� ���� ���� �� ��������� ������� ��� ������. ����� ������ ���������
|
54
|
+
��������� ������, ����� ��������� ������ � ���������� <tt>--help</tt>:
|
55
|
+
|
56
|
+
|
57
|
+
$ruby src/cg-host_config.rb --help
|
58
|
+
Usage: cg-host_config [options]
|
59
|
+
-m, --mode MODE run mode
|
60
|
+
(build, rebuild, clean, dry-run)
|
61
|
+
-h, --help show this screen
|
62
|
+
|
63
|
+
���� �������� <tt>--mode</tt> �� �����, �� ���������������, ���
|
64
|
+
������ ����������� � ���������� <tt>--mode build</tt>. ��, ������ ��������
|
65
|
+
<tt>--mode</tt> � ��������� ������ ����, ����� ������� ����� �� ��������������
|
66
|
+
�������:
|
67
|
+
[_build_] ��������� �������������. ������� ������������� ������������ ������
|
68
|
+
� ������� ��������� ��������� ��������� ������ � ��������� ���
|
69
|
+
��� ������ �����-�� �� �������������� ����� ������.
|
70
|
+
[_rebuild_] ��������� �������������� �������������, ���� ���� � �������
|
71
|
+
��������� ��������� ������ �� ��������� � �� ����������.
|
72
|
+
[_clean_] ������� ��� ���������� ���������� �������������.
|
73
|
+
[<i>dry-run</i>] ������ �� ������������. ����� ���� ������� ��� �������� �������������� ������������ ������� � ��������� ���������� �������������.
|
74
|
+
|
75
|
+
== ���������� �����
|
76
|
+
|
77
|
+
=== ���������� ����
|
78
|
+
|
79
|
+
���� RuCodeGen ������� � ���, ����� ��� ������� ���� ������������� ���
|
80
|
+
������ ���� ������ (���, ��������, RuCodeGen::ValueIncapsulator). �������
|
81
|
+
� ��������� ���������� ������������� ������������ �� ����������� �����������
|
82
|
+
�������. ���� RuCodeGen � ����� ������ ����������� �� � ���������:
|
83
|
+
1. ������������ �������� ������� ��������� ��� ���������� ������������
|
84
|
+
�������� (����� ��� �������� ������������� ����������� ����������
|
85
|
+
�������������, ������������� ����� �������������, ��������� ����������
|
86
|
+
��������� ������� � ��.).
|
87
|
+
1. ���� ���������� �������� ����������������� � ������������� ���������������.
|
88
|
+
|
89
|
+
� �������� �������� ���������� ��� ��������� ������������� RuCodeGen
|
90
|
+
�������, ����� ������ ������ � ���������� ����� ������ ���������� ���� ���
|
91
|
+
��������� ��������-����������� � ������������� �� � ������
|
92
|
+
RuCodeGen::Generators. ���� ������ ��������� ������ ���� ������ � ����������
|
93
|
+
������ ��������������� ����� (�.�. �� ������ ������ ������ ������� ���,
|
94
|
+
����� ��������� ����������� �������������� ���� � ��� �� ����).
|
95
|
+
|
96
|
+
���������� ������ ������������ ��������� ���������:
|
97
|
+
|
98
|
+
def generate(to) ... end
|
99
|
+
|
100
|
+
��� � �������� ��������� to ����� ������������ �����-�����, � ������� �����
|
101
|
+
���������� ���������� ���������.
|
102
|
+
|
103
|
+
��������� ������� ����������� �������� ������
|
104
|
+
RuCodeGen::ValueIncapsulator::Generation::DeclGenerator �
|
105
|
+
RuCodeGen::ValueIncapsulator::Generation::ImplGenerator.
|
106
|
+
|
107
|
+
=== ������������� �������������
|
108
|
+
|
109
|
+
���� ������ � ��������� ������������� ����������� � ������ +build+, ��
|
110
|
+
��������� ����������� ��� ���������� ������ ������� ��������� �������:
|
111
|
+
1. ����������� ������� ����� � ����������� ������ ��������.
|
112
|
+
��������, ���� �������� ������������� ��������� � �����
|
113
|
+
src/cg-host_config.rb, �� ��� ����������� ����� ������ ��������� �
|
114
|
+
����� src/.cg-host_config.rb.md5.
|
115
|
+
2. ���� ����� � ����������� ������ ���, �� ����������� ������
|
116
|
+
�������������. ���� ���� ���� �������� �� ���������� � ���������� ���
|
117
|
+
���������� ���������� �������������.
|
118
|
+
3. ���� ���� � ����������� ������ ����, �� ��� ���������� �� ��������� �
|
119
|
+
����������� ������ ������� � ��������� �������������, �� �����������
|
120
|
+
������ ������������� (�.�. ���������, ��� ���������� ��������� ���������).
|
121
|
+
4. ���� ����������� ����� ������� � ��������� ������������� ��������
|
122
|
+
����������, �� ����������� ������� ������-����������� �������������.
|
123
|
+
� ���� ������ ��������� ����������� ������ ��� ������������� ������.
|
124
|
+
|
125
|
+
���� ������ � ��������� ������������� ����������� � ������ +clean+, �� ���������
|
126
|
+
��� ����� � ������������ ������������� � ���� � ����������� ������.
|
127
|
+
|
128
|
+
=== ������������ ����������� �������������
|
129
|
+
|
130
|
+
� ��������, ������ ���������������� ������ ����� ��������� �����������
|
131
|
+
������� ������������ ��������������� �� ������. RuCodeGen �������������
|
132
|
+
����� RuCodeGen::FilenameProducer, ������� �������� ����������� �����
|
133
|
+
��� ���� ������� ��������:
|
134
|
+
* ����� � �������� ��������������� ����� ����������� ���������� ��� �����.
|
135
|
+
� ���� ������ ������� �������������� ��� ��������� ������ ��������� ��
|
136
|
+
�����;
|
137
|
+
* ����� ����������� ���, �������� ������������ �������� ��������. � ���� ������
|
138
|
+
����������� ������ ���, � ������� ����������� ��� �������� ��������;
|
139
|
+
* ����� ����������� ���, ������� ������������ ������� � ���������
|
140
|
+
�������������. � ���� ������ ����������� ������ ��� � ������ ������������
|
141
|
+
��������� �������.
|
142
|
+
|
143
|
+
��������, � ����������� ���� ������� � src/cg-host_config.rb, �����
|
144
|
+
������������� ������ ������ ������������ ������� cg-host_config.rb. �������,
|
145
|
+
������, ���� ������ ��������� � �������� ~/sandboxes/some_prj/src, � �������
|
146
|
+
��������� �������� ~/sandboxes, �� ������ �������������:
|
147
|
+
|
148
|
+
ruby some_prj/src/cg-host_config.rb
|
149
|
+
|
150
|
+
�������� � �������� ������ ~/sandboxes/some_prj/src/host_config.impl.hpp �
|
151
|
+
~/sandboxes/some_prj/src/host_config.impl.cpp.
|
152
|
+
|
@@ -0,0 +1,195 @@
|
|
1
|
+
= ������ ValueIncapsulator [C++]
|
2
|
+
|
3
|
+
== ����������
|
4
|
+
|
5
|
+
������ ValueIncapsulator ������������ ��� ��������� C++ �������, ������� ������
|
6
|
+
������������� � ���� ��������� �������� � ������������� ��������� ������ ���
|
7
|
+
���������/��������� ���� ��������. ��������� ����� ������� ����� ���� ������,
|
8
|
+
���������� ������������ ����������. ��������, ����� ����� �����, �������
|
9
|
+
�������� ��� ����� � ����� ����� ��� ����������� � ����� ����� ����� TCP/IP.
|
10
|
+
��� ������������� ������������� �������� �� �������� ��������� C++ ���:
|
11
|
+
|
12
|
+
class host_config_t
|
13
|
+
{
|
14
|
+
private :
|
15
|
+
std::string m_host;
|
16
|
+
short m_port;
|
17
|
+
public :
|
18
|
+
host_config_t()
|
19
|
+
: m_port( 0 )
|
20
|
+
{}
|
21
|
+
|
22
|
+
const std::string & host() const { return m_host; }
|
23
|
+
void set_host( const std::string & v ) { m_host = v; }
|
24
|
+
|
25
|
+
short port() const { return m_port; }
|
26
|
+
void set_port( short v ) { m_port = v; }
|
27
|
+
};
|
28
|
+
|
29
|
+
�� ������ �� ���������� ����� ������� � �������������� ������� ValueIncapsulator:
|
30
|
+
|
31
|
+
cpp_value_incapsulator :host_config_t do |c|
|
32
|
+
c.decl_file :script_relative => "host_config.impl.hpp"
|
33
|
+
c.impl_file :script_relative => "host_config.impl.cpp"
|
34
|
+
|
35
|
+
c.attr_prefix "m_"
|
36
|
+
c.attr :host, "std::string"
|
37
|
+
c.attr :port, "short", default => 0
|
38
|
+
end
|
39
|
+
|
40
|
+
== ������� ������
|
41
|
+
|
42
|
+
������ ValueIncapsulator ������������ ����������� ������ cpp_value_incapsulator,
|
43
|
+
������� �������� � �������� ��������� ��� ������������� C++ ������ � �������
|
44
|
+
������� ����� ����, � ������� ����� ���������� ��������� �������������.
|
45
|
+
���� ���� ���� ���������� ������ cpp_value_incapsulator � ����� ����������:
|
46
|
+
����������� ������ RuCodeGen::ValueIncapsulator. � ������� ������ �����
|
47
|
+
���������� � �������� ��������� �������������.
|
48
|
+
|
49
|
+
����� ����, ��� ���� ���� ������ cpp_value_incapsulator ����������,
|
50
|
+
������ ������� ��� ���������� ���� -- ���� ��� ��������� �������� ������,
|
51
|
+
������ ��� ��������� ���������� ������. � ������� ������ ValueIncapsulator,
|
52
|
+
�������� � ���������� ������ ������ ����������� � ��������� ������,
|
53
|
+
������������ � ����� ������� �������� ����������� �������
|
54
|
+
RuCodeGen::ValueIncapsulator#decl_file � RuCodeGen::ValueIncapsulator#impl_file.
|
55
|
+
��������� cpp_value_incapsulator ���������� ����������� �� ����������
|
56
|
+
������� ������� ��� ���������� ������ �������.
|
57
|
+
|
58
|
+
== ��������� ������� ValueIncapsulator
|
59
|
+
|
60
|
+
=== ����� ��������/���������� ������������� ������.
|
61
|
+
|
62
|
+
����� � ������������ ������ �������� ����������� ������� decl_file �
|
63
|
+
impl_file:
|
64
|
+
c.decl_file <relative> => <name>
|
65
|
+
��� <relative> ���:
|
66
|
+
[<tt>:absolute</tt>] �������� ���������� ��� �����;
|
67
|
+
[<tt>:script_relative</tt>] ��� ����� �������� ������������ ������������
|
68
|
+
������� � ��������� �������������;
|
69
|
+
[<tt>:cwd_relative</tt>] ��� ����� �������� ������������ �������� ��������.
|
70
|
+
|
71
|
+
��������:
|
72
|
+
c.decl_file :script_relative => "h/decl.hpp"
|
73
|
+
c.impl_file :script_relative => "decl.cpp"
|
74
|
+
|
75
|
+
��������� ��. RuCodeGen::FilenameProducer#produce.
|
76
|
+
|
77
|
+
=== ��������/�������� ��� ���� ���������
|
78
|
+
|
79
|
+
�� ���������, ValueIncapsulator ������� �������� ���������������� ������
|
80
|
+
� ���� �������, ������� ���� �������� � ����� c.attr. ��������, ���
|
81
|
+
��������:
|
82
|
+
|
83
|
+
c.attr :host, "std::string"
|
84
|
+
|
85
|
+
����� ������������ ������� host ���� std::string. ���� ���������, �����
|
86
|
+
� ��������� ������ ���� ������������� �������� ���/� ��������, �� �������
|
87
|
+
������ �� � ������� ������� attr_prefix, attr_suffix. ��������:
|
88
|
+
|
89
|
+
c.attr_prefix "m_"
|
90
|
+
c.attr :host, "std::string"
|
91
|
+
|
92
|
+
�������� � ���������:
|
93
|
+
std::string m_host;
|
94
|
+
|
95
|
+
� ��������:
|
96
|
+
|
97
|
+
c.attr_suffix "_"
|
98
|
+
c.attr :host, "std::string"
|
99
|
+
|
100
|
+
�������� � ���������:
|
101
|
+
std::string host_;
|
102
|
+
|
103
|
+
����� ������ ������������ � �������, � �������.
|
104
|
+
|
105
|
+
=== �������� ��� ������� getter-/setter-��
|
106
|
+
|
107
|
+
�� ���������, ValueIncapsulator ������� ������ getter-/setter-� � ����
|
108
|
+
�������, ������� ���� �������� � ����� c.attr. ��������:
|
109
|
+
|
110
|
+
c.attr :port, "short"
|
111
|
+
|
112
|
+
������������� �:
|
113
|
+
|
114
|
+
short port() const;
|
115
|
+
void port( short v__ );
|
116
|
+
|
117
|
+
� ������� ������� getter_prefix � setter_prefix ����� ������� �������
|
118
|
+
��� ���������������� ���� �������. ��������:
|
119
|
+
|
120
|
+
c.getter_prefix "query_"
|
121
|
+
c.attr :port, "short"
|
122
|
+
|
123
|
+
������������� �:
|
124
|
+
|
125
|
+
short query_port() const;
|
126
|
+
void port( short v__ );
|
127
|
+
|
128
|
+
���:
|
129
|
+
|
130
|
+
c.setter_prefix "set_"
|
131
|
+
c.attr :port, "short"
|
132
|
+
|
133
|
+
�������� �:
|
134
|
+
|
135
|
+
short port() const;
|
136
|
+
void set_port( short v__ );
|
137
|
+
|
138
|
+
����� ������ ������������ �������� ��� getter-�� � setter-��.
|
139
|
+
|
140
|
+
== �������� �� ��������� ��� ���������
|
141
|
+
|
142
|
+
�� ���������, ��� ���� ��������� ����������� ����� (��.
|
143
|
+
RuCodeGen::ClassAttribute::PRIMITIVE_TYPES) � ������������ ��������
|
144
|
+
�������� 0. ��� ���������, ��� �������� �� ��������� � ����������� �����
|
145
|
+
��������� �������� ������ �� ��������.
|
146
|
+
���� ��� �� ���������� � ����� ��������� ��������
|
147
|
+
������������� ��������, �� ��� ������� ������� � ������ attr:
|
148
|
+
|
149
|
+
c.attr :host, "std::string", :default => "localhost"
|
150
|
+
c.attr :port, "short", :default => 8080
|
151
|
+
|
152
|
+
=== ������������� ��������������� � �������� ��������� �������� ���������
|
153
|
+
|
154
|
+
���� ��������� �������� �������� �������� �����-���� C++ ����������,
|
155
|
+
��������� enum-� ��� ���� ������� C++ �������, �� ��������������� C++
|
156
|
+
������������� ����� ���������� � Ruby-���� � ���� Symbol-� (��������������
|
157
|
+
� �������������� ����������):
|
158
|
+
|
159
|
+
c.attr :host, "std::string", :default => :"get_default_host()"
|
160
|
+
c.attr :port, "short", :default => :default_port
|
161
|
+
|
162
|
+
����� � ������������ ������������� ��������� ����� ����� ���:
|
163
|
+
|
164
|
+
host( get_default_host() ),
|
165
|
+
port( default_port )
|
166
|
+
|
167
|
+
== ������ �� ���������� �� ����������� �����
|
168
|
+
|
169
|
+
���� ��� �������� �� �������� ����������� (��.
|
170
|
+
RuCodeGen::ClassAttribute::PRIMITIVE_TYPES), �� ����� getter ����������
|
171
|
+
����������� ������ �� �������, � ����� setter �������� �����������
|
172
|
+
������ � �������� ���������. ��������:
|
173
|
+
|
174
|
+
c.attr :host, "std::string"
|
175
|
+
|
176
|
+
�������� � ���������:
|
177
|
+
|
178
|
+
const std::string & host() const;
|
179
|
+
void host( const std::string & v__ );
|
180
|
+
|
181
|
+
���� �� �����-�� �������� ������������ ������ �� ����������, �� ���
|
182
|
+
����� ������� ��� �������� ��������:
|
183
|
+
|
184
|
+
c.attr :host, "std::string", getter_returns_value => true
|
185
|
+
|
186
|
+
��� �������� � ���������:
|
187
|
+
|
188
|
+
std::string host() const;
|
189
|
+
void host( std::string v__ );
|
190
|
+
|
191
|
+
== ������� ������������� �������������� cpp_value_incapsulator
|
192
|
+
|
193
|
+
{������ host_config}[link://files/docs/examples/cpp/value_incapsulator/host_config.html]
|
194
|
+
|
195
|
+
{������ cfg}[link://files/docs/examples/cpp/value_incapsulator/cfg.html]
|