RuCodeGen 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/NEWS +4 -0
- data/README +3 -1
- data/Rakefile +3 -3
- data/docs/EmbededRuCodeGen +61 -0
- data/docs/examples/cpp/value_incapsulator/embeded_cfg +25 -0
- data/examples/cpp/embeded_value_incapsulator/test.cpp +34 -0
- data/lib/rucodegen/begin_end.rb +17 -10
- data/lib/rucodegen/embeded.rb +95 -0
- data/lib/rucodegen.rb +1 -0
- data/tests/embeded_data/host_config/embeded.txt +17 -0
- data/{examples/cpp/value_incapsulator → tests/embeded_data/host_config/etalons}/host_config.impl.cpp +20 -20
- data/tests/embeded_data/host_config/standalone.txt +9 -0
- data/tests/embeded_data/in_empty.txt +0 -0
- data/tests/embeded_data/in_empty_fragments.txt +13 -0
- data/tests/embeded_data/in_no_fragments.txt +7 -0
- data/tests/embeded_data/in_not_closed_last_fragment.txt +21 -0
- data/tests/embeded_data/in_not_closed_not_last_fragment.txt +22 -0
- data/tests/embeded_data/in_not_empty_fragments.answer.txt +8 -0
- data/tests/embeded_data/in_not_empty_fragments.txt +21 -0
- data/tests/tc_embeded_extract_fragments.rb +52 -0
- data/tests/tc_embeded_run_rucodegen.rb +84 -0
- data/tests/ts_rucodegen.rb +2 -0
- metadata +27 -7
- data/examples/cpp/value_incapsulator/cfg.decl.hpp +0 -51
- data/examples/cpp/value_incapsulator/cfg.impl.cpp +0 -63
- data/examples/cpp/value_incapsulator/cout.log +0 -4
- /data/{examples/cpp/value_incapsulator → tests/embeded_data/host_config/etalons}/host_config.impl.hpp +0 -0
data/LICENSE
CHANGED
data/NEWS
ADDED
data/README
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
RuCodeGen � ��� ������� ���������� ��� �������������. RuCodeGen ������� �� ����
|
6
6
|
������ � ���������� ���������� ��� ��������� ���������������, � ���������� ������� ���������������.
|
7
7
|
|
8
|
-
��������� ��. {docs/Principle}[link://files/docs/Principle.html]
|
8
|
+
��������� ��. {docs/Principle}[link://files/docs/Principle.html] �
|
9
|
+
{docs/EmbededRuCodeGen}[link://files/docs/EmbededRuCodeGen.html].
|
9
10
|
|
10
11
|
== ������� ��������������
|
11
12
|
|
@@ -16,6 +17,7 @@ RuCodeGen
|
|
16
17
|
|
17
18
|
* {cpp/value_incapsulator/host_config}[link://files/docs/examples/cpp/value_incapsulator/host_config.html]
|
18
19
|
* {cpp/value_incapsulator/cfg}[link://files/docs/examples/cpp/value_incapsulator/cfg.html]
|
20
|
+
* {cpp/value_incapsulator/embeded_cfg}[link://files/docs/examples/cpp/value_incapsulator/embeded_cfg.html]
|
19
21
|
* {cpp/custom/submit_deliver}[link://files/docs/examples/cpp/custom/submit_deliver.html]
|
20
22
|
|
21
23
|
== �����������
|
data/Rakefile
CHANGED
@@ -4,11 +4,11 @@ Gem::manage_gems
|
|
4
4
|
require 'rake/gempackagetask'
|
5
5
|
|
6
6
|
PKG_NAME =
|
7
|
-
|
7
|
+
PKG_VERSION = '0.2.0'
|
8
8
|
|
9
9
|
spec = Gem::Specification.new do |s|
|
10
10
|
s.name = "RuCodeGen"
|
11
|
-
s.version =
|
11
|
+
s.version = PKG_VERSION
|
12
12
|
s.author = "Yauheni Akhotnikau"
|
13
13
|
s.email = "eao197@yahoo.com"
|
14
14
|
s.homepage = "http://eao197.narod.ru/projects"
|
@@ -21,7 +21,7 @@ spec = Gem::Specification.new do |s|
|
|
21
21
|
s.test_file = "tests/ts_rucodegen.rb"
|
22
22
|
s.has_rdoc = true
|
23
23
|
s.rdoc_options = [ '-c', 'windows-1251', '-S', '--main', 'README' ]
|
24
|
-
s.extra_rdoc_files = [ "README", "Rakefile", "LICENSE" ] + FileList[ "docs/**/*" ].to_a
|
24
|
+
s.extra_rdoc_files = [ "README", "Rakefile", "LICENSE", "NEWS" ] + FileList[ "docs/**/*" ].to_a
|
25
25
|
end
|
26
26
|
|
27
27
|
gem = Rake::GemPackageTask.new( spec ) do |pkg|
|
@@ -0,0 +1,61 @@
|
|
1
|
+
= ������������ RuCodeGen
|
2
|
+
|
3
|
+
� ������ 0.2.0 � RuCodeGen ���� ��������� ����������� ���������� RuCodeGen
|
4
|
+
�������� ������ ������ ������ (� ������ 0.1.0 RuCodeGen �������� ������ ����
|
5
|
+
������������� � ��������������� � ��������������� Ruby-�����, ������� �
|
6
|
+
���������� �� ���������).
|
7
|
+
|
8
|
+
���������� RuCodeGen ������ ���������� �� ������, � ������� ���� ���������
|
9
|
+
<tt>RuCodeGen::Embeded::begin</tt>, ����� ������ ���� ��� RuCodeGen ��������,
|
10
|
+
����� ������ � ��������� <tt>RuCodeGen::Embeded::end</tt>. ��������, � C++
|
11
|
+
����������� RuCodeGen ����� ���������, ��������, ���:
|
12
|
+
|
13
|
+
#if 0 /* RuCodeGen::Embeded::begin */
|
14
|
+
... # RuCodeGen ��������...
|
15
|
+
#endif /* RuCodeGen::Embeded::end */
|
16
|
+
|
17
|
+
��� ��:
|
18
|
+
|
19
|
+
/* RuCodeGen::Embeded::begin
|
20
|
+
... # RuCodeGen ��������...
|
21
|
+
RuCodeGen::Embeded::end */
|
22
|
+
|
23
|
+
��� ��������� ������������ RuCodeGen �������� �������� �����
|
24
|
+
process_embeded_rucodegen, ������� �������� �� ���� ��� ����� �� �����������
|
25
|
+
���������� � ����� ������������� (:build ��� :clean). ��������� �������������
|
26
|
+
��� ������������� �������� �����, ��������, ��������� ��������� �������:
|
27
|
+
|
28
|
+
ruby -e"require 'rubygems'; require_gem 'RuCodeGen'; process_embeded_rucodegen('test.cpp',:build)"
|
29
|
+
|
30
|
+
������, ��������������, ��� ������������ RuCodeGen ����� �������������� ������
|
31
|
+
�� ������������ �������������, ������� ���� ����� ������������ �������������
|
32
|
+
(��������, ������ ��� {Mxx_ru}[http://www.rubyforge.org/projects/mxx-ru].
|
33
|
+
|
34
|
+
== ������� ������ ������������� RuCodeGen
|
35
|
+
|
36
|
+
����� process_embeded_rucodegen �������� ��� ��������� �����, �� ��������� ���
|
37
|
+
���������� � �������� ������ ��� RuCodeGen-���������. ��� ���������
|
38
|
+
������������ � ���� ��������� Ruby-���� � ������
|
39
|
+
<tt>src_file-embeded-rucodegen</tt> (��� src_file -- ��� ��� ��������� �����).
|
40
|
+
� ������ ���������� ����� ���������� ����������:
|
41
|
+
|
42
|
+
require 'rubygems'
|
43
|
+
require_gem 'RuCodeGen'
|
44
|
+
|
45
|
+
�.�. process_embeded_rucodegen ��������� ���������� ���� �� ����� RuCodeGen
|
46
|
+
����������, ������� ���� ��������� � �������� ����. ����� ����� �����������
|
47
|
+
ruby � ������ ���������� ����� � �������� ��������� � ������������� �������� �
|
48
|
+
������� ��������� ������������� RuCodeGen. ����� ���������� �������������
|
49
|
+
��������� ���� ���������.
|
50
|
+
|
51
|
+
process_embeded_rucodegen ������� ��������� ����, �� � ������ :build ���������
|
52
|
+
���� � md5-�����. ���� md5-���� ������������ ��� ����������� ��������������
|
53
|
+
��� ����, ����� ��������� ������������� �������������. ���� ����� ���������,
|
54
|
+
��� �������� ���� ����������, � ���������� � ���� RuCodeGen �������� -- ���. �
|
55
|
+
����� ������� md5-��� ��� ���������� ����� ����� ���������� ����������.
|
56
|
+
md5-���� ������������ ��� ������ ��� ������� RuCodeGen � ������ :clean.
|
57
|
+
|
58
|
+
== ������ ������������� ������������� RuCodeGen
|
59
|
+
|
60
|
+
* {cpp/value_incapsulator/embeded_cfg}[link://files/docs/examples/cpp/value_incapsulator/embeded_cfg.html]
|
61
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
= [Embeded][RuCodeGen::ValueIncapsulator] cfg
|
2
|
+
|
3
|
+
== ���������������� ������
|
4
|
+
|
5
|
+
���������������� ������ ������� ��������������� � C++ ����:
|
6
|
+
|
7
|
+
:include: examples/cpp/embeded_value_incapsulator/test.cpp
|
8
|
+
|
9
|
+
��� ������������� ������������� ����� ��������� ��������� �������:
|
10
|
+
|
11
|
+
ruby -e"require 'rubygems'; require_gem 'RuCodeGen'; process_embeded_rucodegen('test.cpp',:build)"
|
12
|
+
|
13
|
+
���� ��������������� ���������� RuCodeGen � {Mxx_ru}[http://www.rubyforge.org/projects/mxx-ru]:
|
14
|
+
|
15
|
+
require 'mxx_ru/cpp'
|
16
|
+
require 'mxx_ru/cpp/rucodegen'
|
17
|
+
|
18
|
+
Mxx_ru::Cpp::exe_target {
|
19
|
+
target 'test'
|
20
|
+
|
21
|
+
r = generator( Mxx_ru::Cpp::RuCodeGen.new( self ) )
|
22
|
+
r.add_embeded 'test.cpp'
|
23
|
+
|
24
|
+
cpp_source 'test.cpp'
|
25
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#include <string>
|
2
|
+
|
3
|
+
std::string
|
4
|
+
default_self_mbox() { return "default"; }
|
5
|
+
|
6
|
+
const unsigned int default_low_watermark = 30;
|
7
|
+
|
8
|
+
#if 0 /* RuCodeGen::Embeded::begin */
|
9
|
+
cpp_value_incapsulator :cfg_t do |c|
|
10
|
+
c.decl_file :script_relative => "cfg.decl.hpp"
|
11
|
+
c.impl_file :script_relative => "cfg.impl.cpp"
|
12
|
+
|
13
|
+
c.attr_suffix "_"
|
14
|
+
|
15
|
+
c.attr :listening_mbox, "std::string"
|
16
|
+
c.attr :self_mbox, "std::string", :default => :"default_self_mbox()"
|
17
|
+
c.attr :interception_priority, "int", :default => 2
|
18
|
+
c.attr :low_watermark, "unsigned int", :default => :default_low_watermark
|
19
|
+
c.attr :high_watermark, "unsigned int"
|
20
|
+
c.attr :cprov_high_watermark, "unsigned int"
|
21
|
+
c.attr :max_life_time, "unsigned int", :default => 60
|
22
|
+
c.attr :check_life_time_period, "unsigned int", :default => 5
|
23
|
+
|
24
|
+
end
|
25
|
+
#endif /* RuCodeGen::Embeded::end */
|
26
|
+
|
27
|
+
#include "cfg.decl.hpp"
|
28
|
+
#include "cfg.impl.cpp"
|
29
|
+
|
30
|
+
int
|
31
|
+
main()
|
32
|
+
{
|
33
|
+
cfg_t cfg;
|
34
|
+
}
|
data/lib/rucodegen/begin_end.rb
CHANGED
@@ -9,18 +9,25 @@ require 'rucodegen/run_mode'
|
|
9
9
|
require 'rucodegen/generation_initiator'
|
10
10
|
|
11
11
|
END {
|
12
|
+
# �� ����� ��������� ���� �������� ������, ���� ��� ���������
|
13
|
+
# �� �����, � �� ����� ����������� ����� ����� ��� �����
|
14
|
+
# ����� '-e' � ��������� ������. ������������ �������� ��� � ����
|
15
|
+
# ������� $0 ����� ����� '-' � '-e' ��������������. ��� �� ���
|
16
|
+
# ������� ��������� ������� ������ ����� (�� ������ ������, �.�.
|
17
|
+
# ��� ������ ����� ���� ����� ������).
|
18
|
+
if ![ '-', '-e' ].member?( $0 ) or File.exists?( $0 )
|
19
|
+
RUNMODE = RuCodeGen::RunMode
|
12
20
|
|
13
|
-
|
14
|
-
|
15
|
-
RUNMODE.detect
|
21
|
+
RUNMODE.detect
|
16
22
|
#FIXME: ���������� ��������� �������� run_mode.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
+
if RUNMODE::BUILD == RUNMODE::mode ||
|
24
|
+
RUNMODE::REBUILD == RUNMODE::mode
|
25
|
+
RuCodeGen::CodegenInitiator.new( $0 ).initiate(
|
26
|
+
RUNMODE::REBUILD == RUNMODE::mode )
|
27
|
+
elsif RUNMODE::CLEAN == RUNMODE::mode
|
28
|
+
RuCodeGen::CodegenInitiator.new( $0 ).clean
|
29
|
+
end
|
30
|
+
# ��������� ������ (DRY_RUN, HELP) ������������.
|
23
31
|
end
|
24
|
-
# ��������� ������ (DRY_RUN, HELP) ������������.
|
25
32
|
}
|
26
33
|
|
@@ -0,0 +1,95 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
���������� ��������� RuCodeGen ��������, ��������� � ������ �����.
|
4
|
+
|
5
|
+
=end
|
6
|
+
|
7
|
+
module RuCodeGen
|
8
|
+
|
9
|
+
module Embeded
|
10
|
+
|
11
|
+
# �������� ���� ���� RuCodeGen ���������� �� ���������� �����.
|
12
|
+
#
|
13
|
+
# RuCodeGen �������� ���������� �� ������, � ������� ������������ ���������:
|
14
|
+
# RuCodeGen::Embeded::begin
|
15
|
+
# � ������������� RuCodeGen �������� �������, � ������� ������������:
|
16
|
+
# RuCodeGen::Embeded::end
|
17
|
+
#
|
18
|
+
# ������ ����������� ����������� RuCodeGen ��������:
|
19
|
+
# /* RuCodeGen::Embeded::begin
|
20
|
+
# cpp_value_incapsulator cfg_t do |c|
|
21
|
+
# ...
|
22
|
+
# end
|
23
|
+
# RuCodeGen::Embeded::end */
|
24
|
+
def Embeded.extract_fragments( file )
|
25
|
+
open_mark = /RuCodeGen::Embeded::begin/
|
26
|
+
close_mark = /RuCodeGen::Embeded::end/
|
27
|
+
expected_mark = open_mark
|
28
|
+
open_at = 0
|
29
|
+
line_no = 1
|
30
|
+
|
31
|
+
script_body = File.readlines( file ).inject( '' ) do |body, line|
|
32
|
+
if expected_mark == close_mark
|
33
|
+
if close_mark =~ line
|
34
|
+
expected_mark = open_mark
|
35
|
+
else
|
36
|
+
fail "#{file}:#{line_no}: open RuCodeGen inside opened fragment " +
|
37
|
+
"started at #{open_at}" if open_mark =~ line
|
38
|
+
|
39
|
+
body << line
|
40
|
+
end
|
41
|
+
elsif open_mark =~ line
|
42
|
+
expected_mark = close_mark
|
43
|
+
open_at = line_no
|
44
|
+
end
|
45
|
+
line_no += 1
|
46
|
+
|
47
|
+
body
|
48
|
+
end
|
49
|
+
|
50
|
+
fail "#{file}: unclosed RuCodeGen fragment open at #{open_at}" \
|
51
|
+
if expected_mark == close_mark
|
52
|
+
|
53
|
+
script_body
|
54
|
+
end
|
55
|
+
|
56
|
+
# ���������� ������������� ����� ������� ruby ��� ������������ �� ���������
|
57
|
+
# ����� ����������������� �������.
|
58
|
+
#
|
59
|
+
# [_src_file_name_] ��� ��������� �����, �� �������� ��� �������� ������;
|
60
|
+
# [_script_] ���������� ������������ �� ��������� ����� �������;
|
61
|
+
# [_mode_] ����� ������������� (:build ��� :clean).
|
62
|
+
def Embeded.run_generation( src_file_name, script, mode )
|
63
|
+
temp_script_name = src_file_name + '-embeded-rucodegen'
|
64
|
+
File.open( temp_script_name, 'w' ) do |f|
|
65
|
+
f << <<PROLOG
|
66
|
+
require 'rubygems'
|
67
|
+
require_gem 'RuCodeGen'
|
68
|
+
|
69
|
+
PROLOG
|
70
|
+
f << script
|
71
|
+
end
|
72
|
+
|
73
|
+
begin
|
74
|
+
`ruby #{temp_script_name} --mode #{mode}`
|
75
|
+
fail "Error running temporary script generated from #{src_file_name}" \
|
76
|
+
if $? and $?.exitstatus != 0
|
77
|
+
ensure
|
78
|
+
# � ����� ������ ��������� ���� ������ ���� ���������.
|
79
|
+
File.delete( temp_script_name )
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end # module Embeded
|
84
|
+
|
85
|
+
end # module RuCodeGen
|
86
|
+
|
87
|
+
# ��������� ������������� �� ���������� � ��������� ���� RuCodeGen ���������.
|
88
|
+
#
|
89
|
+
# [_file_name_] ��� ����� �� ����������� ����������.
|
90
|
+
# [_mode_] ����� ������������� (:build ��� :clean).
|
91
|
+
def process_embeded_rucodegen( file_name, mode )
|
92
|
+
script = RuCodeGen::Embeded.extract_fragments( file_name )
|
93
|
+
RuCodeGen::Embeded.run_generation( file_name, script, mode )
|
94
|
+
end
|
95
|
+
|
data/lib/rucodegen.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
This is file with embeded RuCodeGen scripts.
|
2
|
+
|
3
|
+
This text precedeed RuCogeGen script.
|
4
|
+
|
5
|
+
// RuCodeGen::Embeded::begin
|
6
|
+
cpp_value_incapsulator :host_config_t do |c|
|
7
|
+
c.decl_file :script_relative => "host_config.impl.hpp"
|
8
|
+
c.impl_file :script_relative => "host_config.impl.cpp"
|
9
|
+
|
10
|
+
c.attr_prefix "m_"
|
11
|
+
|
12
|
+
c.attr :host, "std::string", :default => "localhost"
|
13
|
+
c.attr :post, "short", :default => 8080
|
14
|
+
end
|
15
|
+
// RuCodeGen::Embeded::end
|
16
|
+
|
17
|
+
This text follow RuCodeGen script.
|
data/{examples/cpp/value_incapsulator → tests/embeded_data/host_config/etalons}/host_config.impl.cpp
RENAMED
@@ -1,21 +1,21 @@
|
|
1
|
-
|
2
|
-
host_config_t::host_config_t()
|
3
|
-
: m_host("localhost")
|
4
|
-
, m_post(8080)
|
5
|
-
|
6
|
-
{}
|
7
|
-
|
8
|
-
const std::string &
|
9
|
-
host_config_t::host() const
|
10
|
-
{ return m_host; }
|
11
|
-
void
|
12
|
-
host_config_t::host( const std::string & v__ )
|
13
|
-
{ m_host = v__; }
|
14
|
-
short
|
15
|
-
host_config_t::post() const
|
16
|
-
{ return m_post; }
|
17
|
-
void
|
18
|
-
host_config_t::post( short v__ )
|
19
|
-
{ m_post = v__; }
|
20
|
-
|
1
|
+
|
2
|
+
host_config_t::host_config_t()
|
3
|
+
: m_host("localhost")
|
4
|
+
, m_post(8080)
|
5
|
+
|
6
|
+
{}
|
7
|
+
|
8
|
+
const std::string &
|
9
|
+
host_config_t::host() const
|
10
|
+
{ return m_host; }
|
11
|
+
void
|
12
|
+
host_config_t::host( const std::string & v__ )
|
13
|
+
{ m_host = v__; }
|
14
|
+
short
|
15
|
+
host_config_t::post() const
|
16
|
+
{ return m_post; }
|
17
|
+
void
|
18
|
+
host_config_t::post( short v__ )
|
19
|
+
{ m_post = v__; }
|
20
|
+
|
21
21
|
|
@@ -0,0 +1,9 @@
|
|
1
|
+
cpp_value_incapsulator :host_config_t do |c|
|
2
|
+
c.decl_file :script_relative => "host_config.impl.hpp"
|
3
|
+
c.impl_file :script_relative => "host_config.impl.cpp"
|
4
|
+
|
5
|
+
c.attr_prefix "m_"
|
6
|
+
|
7
|
+
c.attr :host, "std::string", :default => "localhost"
|
8
|
+
c.attr :post, "short", :default => 8080
|
9
|
+
end
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
This file contains only empty RuCodeGen fragments.
|
2
|
+
|
3
|
+
First fragment:
|
4
|
+
RuCodeGen::Embeded::begin
|
5
|
+
RuCodeGen::Embeded::end
|
6
|
+
|
7
|
+
Second fragment:
|
8
|
+
RuCodeGen::Embeded::begin
|
9
|
+
RuCodeGen::Embeded::end
|
10
|
+
|
11
|
+
And yet another fragment:
|
12
|
+
RuCodeGen::Embeded::begin
|
13
|
+
RuCodeGen::Embeded::end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
This file contains only empty RuCodeGen fragments.
|
2
|
+
|
3
|
+
First fragment:
|
4
|
+
RuCodeGen::Embeded::begin
|
5
|
+
# First RuCodeGen fragment.
|
6
|
+
RuCodeGen::Embeded::end
|
7
|
+
|
8
|
+
Second fragment:
|
9
|
+
RuCodeGen::Embeded::begin
|
10
|
+
|
11
|
+
# Second RuCodeGen fragment with some
|
12
|
+
|
13
|
+
# empty lines and
|
14
|
+
# spaces inside
|
15
|
+
|
16
|
+
RuCodeGen::Embeded::end
|
17
|
+
|
18
|
+
And yet another fragment:
|
19
|
+
RuCodeGen::Embeded::begin
|
20
|
+
# Yet another RuCodeGen fragment
|
21
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
This file contains only empty RuCodeGen fragments.
|
2
|
+
|
3
|
+
First fragment:
|
4
|
+
RuCodeGen::Embeded::begin
|
5
|
+
# First RuCodeGen fragment.
|
6
|
+
RuCodeGen::Embeded::end
|
7
|
+
|
8
|
+
Second fragment:
|
9
|
+
RuCodeGen::Embeded::begin
|
10
|
+
|
11
|
+
# Second RuCodeGen fragment with some
|
12
|
+
|
13
|
+
# empty lines and
|
14
|
+
# spaces inside
|
15
|
+
|
16
|
+
RuCodeGen::Embeded::End
|
17
|
+
|
18
|
+
And yet another fragment:
|
19
|
+
RuCodeGen::Embeded::begin
|
20
|
+
# Yet another RuCodeGen fragment
|
21
|
+
|
22
|
+
RuCodeGen::Embeded::end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
This file contains only empty RuCodeGen fragments.
|
2
|
+
|
3
|
+
First fragment:
|
4
|
+
RuCodeGen::Embeded::begin
|
5
|
+
# First RuCodeGen fragment.
|
6
|
+
RuCodeGen::Embeded::end
|
7
|
+
|
8
|
+
Second fragment:
|
9
|
+
RuCodeGen::Embeded::begin
|
10
|
+
|
11
|
+
# Second RuCodeGen fragment with some
|
12
|
+
|
13
|
+
# empty lines and
|
14
|
+
# spaces inside
|
15
|
+
|
16
|
+
RuCodeGen::Embeded::end
|
17
|
+
|
18
|
+
And yet another fragment:
|
19
|
+
RuCodeGen::Embeded::begin
|
20
|
+
# Yet another RuCodeGen fragment
|
21
|
+
RuCodeGen::Embeded::end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
$:.unshift( File.dirname( __FILE__ ) + "/../lib" )
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'rucodegen/embeded'
|
6
|
+
|
7
|
+
class TC_EmbededExtractFragments < Test::Unit::TestCase
|
8
|
+
DATA_PATH = File.dirname( __FILE__ ) + '/embeded_data'
|
9
|
+
|
10
|
+
def test_empty
|
11
|
+
s = extract_from( 'in_empty.txt' )
|
12
|
+
assert_equal( '', s )
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_no_fragments
|
16
|
+
s = extract_from( 'in_no_fragments.txt' )
|
17
|
+
assert_equal( '', s )
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_empty_fragments
|
21
|
+
s = extract_from( 'in_empty_fragments.txt' )
|
22
|
+
assert_equal( '', s )
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_not_empty_fragments
|
26
|
+
s = extract_from( 'in_not_empty_fragments.txt' )
|
27
|
+
a = extract_answer_file( 'in_not_empty_fragments.answer.txt' )
|
28
|
+
assert_equal( a, s )
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_not_closed_last_fragment
|
32
|
+
assert_raise( RuntimeError ) {
|
33
|
+
extract_from( 'in_not_closed_last_fragment.txt' )
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_not_closed_not_last_fragment
|
38
|
+
assert_raise( RuntimeError ) {
|
39
|
+
extract_from( 'in_not_closed_not_last_fragment.txt' )
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
def extract_from( file )
|
45
|
+
RuCodeGen::Embeded.extract_fragments( File.join( DATA_PATH, file ) )
|
46
|
+
end
|
47
|
+
|
48
|
+
def extract_answer_file( file )
|
49
|
+
File.read( File.join( DATA_PATH, file ) )
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,84 @@
|
|
1
|
+
RUCODEGEN_SRC_PATH = File.dirname( __FILE__ ) + '/../lib'
|
2
|
+
|
3
|
+
$:.unshift( RUCODEGEN_SRC_PATH )
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
|
7
|
+
require 'rucodegen/embeded'
|
8
|
+
|
9
|
+
class TC_EmbededRunRuCodeGen < Test::Unit::TestCase
|
10
|
+
DATA_PATH = File.dirname( __FILE__ ) + '/embeded_data'
|
11
|
+
SRC_PATH = 'host_config'
|
12
|
+
RESULTS_PATH = "#{SRC_PATH}/etalons"
|
13
|
+
|
14
|
+
def test_standalone
|
15
|
+
standalone = "#{SRC_PATH}/standalone.txt"
|
16
|
+
s = get_content( standalone )
|
17
|
+
process_codegen(
|
18
|
+
Proc.new {
|
19
|
+
RuCodeGen::Embeded.run_generation(
|
20
|
+
File.join( DATA_PATH, standalone ),
|
21
|
+
s,
|
22
|
+
:build )
|
23
|
+
},
|
24
|
+
Proc.new {
|
25
|
+
RuCodeGen::Embeded.run_generation(
|
26
|
+
File.join( DATA_PATH, standalone ),
|
27
|
+
s,
|
28
|
+
:clean )
|
29
|
+
}
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_embeded
|
34
|
+
embeded = "#{DATA_PATH}/#{SRC_PATH}/embeded.txt"
|
35
|
+
process_codegen(
|
36
|
+
Proc.new { process_embeded_rucodegen( embeded, :build ) },
|
37
|
+
Proc.new { process_embeded_rucodegen( embeded, :clean ) } )
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_embeded_via_run_ruby
|
41
|
+
embeded = "#{DATA_PATH}/#{SRC_PATH}/embeded.txt"
|
42
|
+
process_codegen(
|
43
|
+
Proc.new {
|
44
|
+
`ruby -I#{RUCODEGEN_SRC_PATH} -e"require 'rucodegen'; process_embeded_rucodegen( '#{embeded}', :build )"`
|
45
|
+
fail "Unable to build embeded RuCodeGen" if $? and 0 != $?.exitstatus
|
46
|
+
},
|
47
|
+
Proc.new {
|
48
|
+
`ruby -I#{RUCODEGEN_SRC_PATH} -e"require 'rucodegen'; process_embeded_rucodegen( '#{embeded}', :clean )"`
|
49
|
+
fail "Unable to clean embeded RuCodeGen" if $? and 0 != $?.exitstatus
|
50
|
+
}
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
protected
|
55
|
+
def process_codegen( build_block, clean_block )
|
56
|
+
header_file = 'host_config.impl.hpp'
|
57
|
+
source_file = 'host_config.impl.cpp'
|
58
|
+
|
59
|
+
assert_nothing_raised { build_block.call }
|
60
|
+
|
61
|
+
assert_equal(
|
62
|
+
get_content( "#{RESULTS_PATH}/#{header_file}" ),
|
63
|
+
get_content( "#{SRC_PATH}/#{header_file}" ) )
|
64
|
+
assert_equal(
|
65
|
+
get_content( "#{RESULTS_PATH}/#{source_file}" ),
|
66
|
+
get_content( "#{SRC_PATH}/#{source_file}" ) )
|
67
|
+
|
68
|
+
assert_nothing_raised { clean_block.call }
|
69
|
+
|
70
|
+
assert(
|
71
|
+
!File.exists?(
|
72
|
+
File.join( DATA_PATH, "#{SRC_PATH}/#{header_file}" ) ),
|
73
|
+
"'#{SRC_PATH}/#{header_file}' must be deleted" )
|
74
|
+
assert(
|
75
|
+
!File.exists?(
|
76
|
+
File.join( DATA_PATH, "#{SRC_PATH}/#{source_file}" ) ),
|
77
|
+
"'#{SRC_PATH}/#{source_file}' must be deleted" )
|
78
|
+
end
|
79
|
+
|
80
|
+
def get_content( file )
|
81
|
+
File.read( File.join( DATA_PATH, file ) )
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
data/tests/ts_rucodegen.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: RuCodeGen
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date:
|
6
|
+
version: 0.2.0
|
7
|
+
date: 2006-05-12
|
8
8
|
summary: Simple code generation tool
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -27,24 +27,42 @@ platform: ruby
|
|
27
27
|
authors:
|
28
28
|
- Yauheni Akhotnikau
|
29
29
|
files:
|
30
|
+
- tests/embeded_data
|
30
31
|
- tests/generators_test_extension.rb
|
31
32
|
- tests/tc_class_attribute.rb
|
32
33
|
- tests/tc_codegen_initiator.rb
|
34
|
+
- tests/tc_embeded_extract_fragments.rb
|
35
|
+
- tests/tc_embeded_run_rucodegen.rb
|
33
36
|
- tests/tc_filename_producer.rb
|
34
37
|
- tests/tc_generators.rb
|
35
38
|
- tests/tc_run_mode.rb
|
36
39
|
- tests/tc_value_incapsulator.rb
|
37
40
|
- tests/tc_value_incapsulator_gen.rb
|
38
41
|
- tests/ts_rucodegen.rb
|
42
|
+
- tests/embeded_data/host_config
|
43
|
+
- tests/embeded_data/in_empty.txt
|
44
|
+
- tests/embeded_data/in_empty_fragments.txt
|
45
|
+
- tests/embeded_data/in_not_closed_last_fragment.txt
|
46
|
+
- tests/embeded_data/in_not_closed_not_last_fragment.txt
|
47
|
+
- tests/embeded_data/in_not_empty_fragments.answer.txt
|
48
|
+
- tests/embeded_data/in_not_empty_fragments.txt
|
49
|
+
- tests/embeded_data/in_no_fragments.txt
|
50
|
+
- tests/embeded_data/host_config/embeded.txt
|
51
|
+
- tests/embeded_data/host_config/etalons
|
52
|
+
- tests/embeded_data/host_config/standalone.txt
|
53
|
+
- tests/embeded_data/host_config/etalons/host_config.impl.cpp
|
54
|
+
- tests/embeded_data/host_config/etalons/host_config.impl.hpp
|
39
55
|
- lib/rucodegen
|
40
56
|
- lib/rucodegen.rb
|
41
57
|
- lib/rucodegen/begin_end.rb
|
42
58
|
- lib/rucodegen/codegen.rb
|
59
|
+
- lib/rucodegen/embeded.rb
|
43
60
|
- lib/rucodegen/filename_producer.rb
|
44
61
|
- lib/rucodegen/generation_initiator.rb
|
45
62
|
- lib/rucodegen/generators.rb
|
46
63
|
- lib/rucodegen/run_mode.rb
|
47
64
|
- lib/rucodegen/value_incapsulator.rb
|
65
|
+
- docs/EmbededRuCodeGen
|
48
66
|
- docs/examples
|
49
67
|
- docs/Principle
|
50
68
|
- docs/ValueIncapsulator
|
@@ -53,24 +71,23 @@ files:
|
|
53
71
|
- docs/examples/cpp/value_incapsulator
|
54
72
|
- docs/examples/cpp/custom/submit_deliver
|
55
73
|
- docs/examples/cpp/value_incapsulator/cfg
|
74
|
+
- docs/examples/cpp/value_incapsulator/embeded_cfg
|
56
75
|
- docs/examples/cpp/value_incapsulator/host_config
|
57
76
|
- examples/cpp
|
58
77
|
- examples/cpp/custom
|
78
|
+
- examples/cpp/embeded_value_incapsulator
|
59
79
|
- examples/cpp/value_incapsulator
|
60
80
|
- examples/cpp/custom/submit_deliver
|
61
81
|
- examples/cpp/custom/submit_deliver/submit_deliver.rb
|
62
82
|
- examples/cpp/custom/submit_deliver/submit_deliver_gen.rb
|
63
|
-
- examples/cpp/
|
64
|
-
- examples/cpp/value_incapsulator/cfg.impl.cpp
|
83
|
+
- examples/cpp/embeded_value_incapsulator/test.cpp
|
65
84
|
- examples/cpp/value_incapsulator/cg-cfg.rb
|
66
85
|
- examples/cpp/value_incapsulator/cg-cfg.test.cpp
|
67
86
|
- examples/cpp/value_incapsulator/cg-host_config.rb
|
68
|
-
- examples/cpp/value_incapsulator/cout.log
|
69
|
-
- examples/cpp/value_incapsulator/host_config.impl.cpp
|
70
|
-
- examples/cpp/value_incapsulator/host_config.impl.hpp
|
71
87
|
- README
|
72
88
|
- Rakefile
|
73
89
|
- LICENSE
|
90
|
+
- NEWS
|
74
91
|
test_files:
|
75
92
|
- tests/ts_rucodegen.rb
|
76
93
|
rdoc_options:
|
@@ -83,6 +100,8 @@ extra_rdoc_files:
|
|
83
100
|
- README
|
84
101
|
- Rakefile
|
85
102
|
- LICENSE
|
103
|
+
- NEWS
|
104
|
+
- docs/EmbededRuCodeGen
|
86
105
|
- docs/examples
|
87
106
|
- docs/Principle
|
88
107
|
- docs/ValueIncapsulator
|
@@ -91,6 +110,7 @@ extra_rdoc_files:
|
|
91
110
|
- docs/examples/cpp/value_incapsulator
|
92
111
|
- docs/examples/cpp/custom/submit_deliver
|
93
112
|
- docs/examples/cpp/value_incapsulator/cfg
|
113
|
+
- docs/examples/cpp/value_incapsulator/embeded_cfg
|
94
114
|
- docs/examples/cpp/value_incapsulator/host_config
|
95
115
|
executables: []
|
96
116
|
extensions: []
|
@@ -1,51 +0,0 @@
|
|
1
|
-
|
2
|
-
class cfg_t
|
3
|
-
{
|
4
|
-
private :
|
5
|
-
std::string listening_mbox_;
|
6
|
-
std::string self_mbox_;
|
7
|
-
int interception_priority_;
|
8
|
-
unsigned int low_watermark_;
|
9
|
-
unsigned int high_watermark_;
|
10
|
-
unsigned int cprov_high_watermark_;
|
11
|
-
unsigned int max_life_time_;
|
12
|
-
unsigned int check_life_time_period_;
|
13
|
-
|
14
|
-
public :
|
15
|
-
cfg_t();
|
16
|
-
|
17
|
-
const std::string &
|
18
|
-
listening_mbox() const;
|
19
|
-
void
|
20
|
-
listening_mbox( const std::string & v__ );
|
21
|
-
const std::string &
|
22
|
-
self_mbox() const;
|
23
|
-
void
|
24
|
-
self_mbox( const std::string & v__ );
|
25
|
-
int
|
26
|
-
interception_priority() const;
|
27
|
-
void
|
28
|
-
interception_priority( int v__ );
|
29
|
-
unsigned int
|
30
|
-
low_watermark() const;
|
31
|
-
void
|
32
|
-
low_watermark( unsigned int v__ );
|
33
|
-
unsigned int
|
34
|
-
high_watermark() const;
|
35
|
-
void
|
36
|
-
high_watermark( unsigned int v__ );
|
37
|
-
unsigned int
|
38
|
-
cprov_high_watermark() const;
|
39
|
-
void
|
40
|
-
cprov_high_watermark( unsigned int v__ );
|
41
|
-
unsigned int
|
42
|
-
max_life_time() const;
|
43
|
-
void
|
44
|
-
max_life_time( unsigned int v__ );
|
45
|
-
unsigned int
|
46
|
-
check_life_time_period() const;
|
47
|
-
void
|
48
|
-
check_life_time_period( unsigned int v__ );
|
49
|
-
|
50
|
-
};
|
51
|
-
|
@@ -1,63 +0,0 @@
|
|
1
|
-
|
2
|
-
cfg_t::cfg_t()
|
3
|
-
: listening_mbox_()
|
4
|
-
, self_mbox_(default_self_mbox())
|
5
|
-
, interception_priority_(2)
|
6
|
-
, low_watermark_(default_low_watermark)
|
7
|
-
, high_watermark_(0)
|
8
|
-
, cprov_high_watermark_(0)
|
9
|
-
, max_life_time_(60)
|
10
|
-
, check_life_time_period_(5)
|
11
|
-
|
12
|
-
{}
|
13
|
-
|
14
|
-
const std::string &
|
15
|
-
cfg_t::listening_mbox() const
|
16
|
-
{ return listening_mbox_; }
|
17
|
-
void
|
18
|
-
cfg_t::listening_mbox( const std::string & v__ )
|
19
|
-
{ listening_mbox_ = v__; }
|
20
|
-
const std::string &
|
21
|
-
cfg_t::self_mbox() const
|
22
|
-
{ return self_mbox_; }
|
23
|
-
void
|
24
|
-
cfg_t::self_mbox( const std::string & v__ )
|
25
|
-
{ self_mbox_ = v__; }
|
26
|
-
int
|
27
|
-
cfg_t::interception_priority() const
|
28
|
-
{ return interception_priority_; }
|
29
|
-
void
|
30
|
-
cfg_t::interception_priority( int v__ )
|
31
|
-
{ interception_priority_ = v__; }
|
32
|
-
unsigned int
|
33
|
-
cfg_t::low_watermark() const
|
34
|
-
{ return low_watermark_; }
|
35
|
-
void
|
36
|
-
cfg_t::low_watermark( unsigned int v__ )
|
37
|
-
{ low_watermark_ = v__; }
|
38
|
-
unsigned int
|
39
|
-
cfg_t::high_watermark() const
|
40
|
-
{ return high_watermark_; }
|
41
|
-
void
|
42
|
-
cfg_t::high_watermark( unsigned int v__ )
|
43
|
-
{ high_watermark_ = v__; }
|
44
|
-
unsigned int
|
45
|
-
cfg_t::cprov_high_watermark() const
|
46
|
-
{ return cprov_high_watermark_; }
|
47
|
-
void
|
48
|
-
cfg_t::cprov_high_watermark( unsigned int v__ )
|
49
|
-
{ cprov_high_watermark_ = v__; }
|
50
|
-
unsigned int
|
51
|
-
cfg_t::max_life_time() const
|
52
|
-
{ return max_life_time_; }
|
53
|
-
void
|
54
|
-
cfg_t::max_life_time( unsigned int v__ )
|
55
|
-
{ max_life_time_ = v__; }
|
56
|
-
unsigned int
|
57
|
-
cfg_t::check_life_time_period() const
|
58
|
-
{ return check_life_time_period_; }
|
59
|
-
void
|
60
|
-
cfg_t::check_life_time_period( unsigned int v__ )
|
61
|
-
{ check_life_time_period_ = v__; }
|
62
|
-
|
63
|
-
|
File without changes
|