cstruct 1.0.0

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.
Files changed (47) hide show
  1. data/doc/documents.html +572 -0
  2. data/doc/examples/anonymous_struct.rb.html +94 -0
  3. data/doc/examples/anonymous_union.rb.html +93 -0
  4. data/doc/examples/array_member.rb.html +79 -0
  5. data/doc/examples/file_io.rb.html +87 -0
  6. data/doc/examples/first_example.rb.html +104 -0
  7. data/doc/examples/get_system_info.rb.html +114 -0
  8. data/doc/examples/get_versionex.rb.html +97 -0
  9. data/doc/examples/global_memory.rb.html +102 -0
  10. data/doc/examples/inner_struct.rb.html +79 -0
  11. data/doc/examples/inner_union.rb.html +77 -0
  12. data/doc/examples/namespace.rb.html +80 -0
  13. data/doc/examples/show_processes.rb.html +95 -0
  14. data/doc/examples/struct_member.rb.html +128 -0
  15. data/doc/examples.html +42 -0
  16. data/doc/images/Thumbs.db +0 -0
  17. data/doc/images/examples.png +0 -0
  18. data/doc/images/excample1.png +0 -0
  19. data/doc/images/excample2.png +0 -0
  20. data/doc/images/green-point.png +0 -0
  21. data/doc/images/learnmore.png +0 -0
  22. data/doc/images/logo.png +0 -0
  23. data/doc/images/news.png +0 -0
  24. data/doc/images/point.png +0 -0
  25. data/doc/images/start.png +0 -0
  26. data/doc/images/synopsish.png +0 -0
  27. data/doc/index.html +149 -0
  28. data/doc/stylesheets/coderay.css +34 -0
  29. data/doc/stylesheets/ie.css +9 -0
  30. data/doc/stylesheets/style.css +216 -0
  31. data/examples/anonymous_struct.rb +43 -0
  32. data/examples/anonymous_union.rb +42 -0
  33. data/examples/array_member.rb +29 -0
  34. data/examples/file_io.rb +49 -0
  35. data/examples/first_example.rb +53 -0
  36. data/examples/inner_struct.rb +28 -0
  37. data/examples/inner_union.rb +26 -0
  38. data/examples/namespace.rb +29 -0
  39. data/examples/struct_member.rb +77 -0
  40. data/examples/win32/get_system_info.rb +64 -0
  41. data/examples/win32/get_versionex.rb +47 -0
  42. data/examples/win32/global_memory.rb +51 -0
  43. data/examples/win32/show_processes.rb +45 -0
  44. data/lib/cstruct.rb +523 -0
  45. data/lib/win32struct.rb +90 -0
  46. data/lib/win64struct.rb +13 -0
  47. metadata +109 -0
@@ -0,0 +1,94 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Anonymous struct</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># example:</span>
51
+ <span class="c"># struct Window in C\C++ (32-bit platform): </span>
52
+ <span class="c"># </span>
53
+ <span class="c"># struct Window</span>
54
+ <span class="c"># {</span>
55
+ <span class="c"># int style;</span>
56
+ <span class="c"># struct{</span>
57
+ <span class="c"># int x;</span>
58
+ <span class="c"># int y;</span>
59
+ <span class="c"># }position; /* position is anonymous struct's instance */</span>
60
+ <span class="c"># }; </span>
61
+
62
+
63
+ <span class="c"># struct Window in Ruby: </span>
64
+ <span class="r">class</span> <span class="cl">Window</span> &lt; <span class="co">CStruct</span>
65
+ int32<span class="sy">:style</span>
66
+ struct <span class="sy">:position</span> <span class="r">do</span>
67
+ int32<span class="sy">:x</span>
68
+ int32<span class="sy">:y</span>
69
+ <span class="r">end</span>
70
+ <span class="r">end</span>
71
+ <span class="c"># or like this (use brace):</span>
72
+ <span class="c"># class Window &lt; CStruct</span>
73
+ <span class="c"># int32:style</span>
74
+ <span class="c"># struct (:position) {</span>
75
+ <span class="c"># int32:x</span>
76
+ <span class="c"># int32:y </span>
77
+ <span class="c"># }</span>
78
+ <span class="c"># end</span>
79
+
80
+ <span class="c"># create a Window's instance</span>
81
+ window = <span class="co">Window</span>.new
82
+
83
+ <span class="c"># assign like as C language</span>
84
+ window.style = <span class="i">1</span>
85
+ window.position.x = <span class="i">10</span>
86
+ window.position.y = <span class="i">10</span>
87
+
88
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">sizeof(Window) = </span><span class="il"><span class="idl">#{</span><span class="co">Window</span>.__size__<span class="idl">}</span></span><span class="dl">&quot;</span></span> <span class="c"># &quot;__size__&quot; is alias of &quot;size&quot;</span>
89
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">window.style = </span><span class="il"><span class="idl">#{</span>window.style<span class="idl">}</span></span><span class="k">,window.position.x = </span><span class="il"><span class="idl">#{</span>window.position.x<span class="idl">}</span></span><span class="k">,window.position.y = </span><span class="il"><span class="idl">#{</span>window.position.y<span class="idl">}</span></span><span class="dl">&quot;</span></span>
90
+ </pre></div>
91
+ </div>
92
+
93
+ </div>
94
+ </body>
@@ -0,0 +1,93 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Anonymous union</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># example:</span>
51
+ <span class="c"># struct U in C\C++ (32-bit platform): </span>
52
+ <span class="c"># </span>
53
+ <span class="c"># struct U</span>
54
+ <span class="c"># {</span>
55
+ <span class="c"># union{</span>
56
+ <span class="c"># int x;</span>
57
+ <span class="c"># int y;</span>
58
+ <span class="c"># }value; /* values is anonymous union's instance */</span>
59
+ <span class="c"># }; </span>
60
+
61
+ <span class="c"># struct U in Ruby: </span>
62
+ <span class="r">class</span> <span class="cl">U</span> &lt; <span class="co">CStruct</span>
63
+ union<span class="sy">:value</span> <span class="r">do</span>
64
+ int32<span class="sy">:x</span>
65
+ int32<span class="sy">:y</span>
66
+ <span class="r">end</span>
67
+ <span class="r">end</span>
68
+
69
+ <span class="c"># or like this (use brace):</span>
70
+ <span class="c"># class U &lt; CStruct</span>
71
+ <span class="c"># union (:position) {</span>
72
+ <span class="c"># int32:x</span>
73
+ <span class="c"># int32:y </span>
74
+ <span class="c"># }</span>
75
+ <span class="c"># end</span>
76
+
77
+
78
+ <span class="c"># create a U's instance</span>
79
+ u = <span class="co">U</span>.new
80
+
81
+ <span class="c"># Notice! Assign is different from C language.</span>
82
+ <span class="c"># 'value' can not be omitted !</span>
83
+ u.value.x = <span class="i">10</span>
84
+
85
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">sizeof(U) = </span><span class="il"><span class="idl">#{</span><span class="co">U</span>.__size__<span class="idl">}</span></span><span class="dl">&quot;</span></span> <span class="c"># &quot;__size__&quot; is alias of &quot;size&quot; . You may use 'size'.</span>
86
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">u.value.x = </span><span class="il"><span class="idl">#{</span>u.value.x <span class="idl">}</span></span><span class="k">, u.value.y = </span><span class="il"><span class="idl">#{</span>u.value.y <span class="idl">}</span></span><span class="dl">&quot;</span></span>
87
+
88
+
89
+ </pre></div>
90
+ </div>
91
+
92
+ </div>
93
+ </body>
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Array member</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># example:</span>
51
+ <span class="c"># struct T in C\C++ (32-bit platform): </span>
52
+ <span class="c"># </span>
53
+ <span class="c"># struct T</span>
54
+ <span class="c"># {</span>
55
+ <span class="c"># int element[8];</span>
56
+ <span class="c"># }; </span>
57
+
58
+ <span class="c"># struct T in Ruby: </span>
59
+ <span class="r">class</span> <span class="cl">T</span> &lt; <span class="co">CStruct</span>
60
+ int32<span class="sy">:elements</span>,[<span class="i">8</span>]
61
+ <span class="r">end</span>
62
+
63
+ <span class="c"># create a T's instance</span>
64
+ t_array = <span class="co">T</span>.new
65
+
66
+ (<span class="i">0</span>..<span class="i">7</span>).each <span class="r">do</span> |i|
67
+ t_array.elements[i] = i <span class="c"># assign like as C language</span>
68
+ <span class="r">end</span>
69
+
70
+ <span class="c"># output</span>
71
+ (<span class="i">0</span>..<span class="i">7</span>).each {|i| puts <span class="s"><span class="dl">&quot;</span><span class="k">t_array.elements[</span><span class="il"><span class="idl">#{</span>i<span class="idl">}</span></span><span class="k">] = </span><span class="il"><span class="idl">#{</span>t_array.elements[i]<span class="idl">}</span></span><span class="dl">&quot;</span></span> }
72
+
73
+
74
+ <span class="c"># Actually,t_array.elements.class is Array. So..</span>
75
+ t_array.elements.each {|element| puts element }</pre></div>
76
+ </div>
77
+
78
+ </div>
79
+ </body>
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:File IO</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># struct Point in Ruby: </span>
51
+ <span class="r">class</span> <span class="cl">Point</span> &lt; <span class="co">CStruct</span>
52
+ int32<span class="sy">:x</span>
53
+ int32<span class="sy">:y</span>
54
+ <span class="r">end</span>
55
+
56
+ <span class="c"># struct PointF in Ruby: </span>
57
+ <span class="r">class</span> <span class="cl">PointF</span> &lt; <span class="co">CStruct</span>
58
+ double<span class="sy">:x</span>
59
+ double<span class="sy">:y</span>
60
+ <span class="r">end</span>
61
+
62
+ <span class="c"># write file</span>
63
+ <span class="co">File</span>.open(<span class="s"><span class="dl">&quot;</span><span class="k">point.bin</span><span class="dl">&quot;</span></span>,<span class="s"><span class="dl">&quot;</span><span class="k">wb</span><span class="dl">&quot;</span></span>)<span class="r">do</span> |f|
64
+ point = <span class="co">Point</span>.new {|st| st.x = <span class="i">100</span>; st.y =<span class="i">200</span> }
65
+ point_f = <span class="co">PointF</span>.new{|st| st.x = <span class="fl">20.65</span>; st.y =<span class="fl">70.86</span> }
66
+
67
+ f.write point.data
68
+ f.write point_f.data
69
+ <span class="r">end</span>
70
+
71
+ <span class="c">#read file</span>
72
+ <span class="co">File</span>.open(<span class="s"><span class="dl">&quot;</span><span class="k">point.bin</span><span class="dl">&quot;</span></span>,<span class="s"><span class="dl">&quot;</span><span class="k">rb</span><span class="dl">&quot;</span></span>)<span class="r">do</span> |f|
73
+ point = <span class="co">Point</span>.new
74
+ point_f = <span class="co">PointF</span>.new
75
+
76
+ point &lt;&lt; f.read(<span class="co">Point</span>.size)
77
+ point_f &lt;&lt; f.read(<span class="co">PointF</span>.size)
78
+
79
+ puts point.x
80
+ puts point.y
81
+ puts point_f.x
82
+ puts point_f.y
83
+ <span class="r">end</span></pre></div>
84
+ </div>
85
+
86
+ </div>
87
+ </body>
@@ -0,0 +1,104 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:First sample</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># example:</span>
51
+ <span class="c"># struct Point in C\C++ (32-bit platform): </span>
52
+ <span class="c">#</span>
53
+ <span class="c"># struct Point</span>
54
+ <span class="c"># {</span>
55
+ <span class="c"># int x;</span>
56
+ <span class="c"># int y;</span>
57
+ <span class="c"># }; </span>
58
+
59
+ <span class="c"># struct Point in Ruby: </span>
60
+ <span class="r">class</span> <span class="cl">Point</span> &lt; <span class="co">CStruct</span>
61
+ int32<span class="sy">:x</span>
62
+ int32<span class="sy">:y</span>
63
+ <span class="r">end</span>
64
+
65
+ <span class="c"># create a Point's instance</span>
66
+ point = <span class="co">Point</span>.new
67
+
68
+ <span class="c"># assign like as C language</span>
69
+ point.x = <span class="i">10</span>
70
+ point.y = <span class="i">20</span>
71
+
72
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">point.x = </span><span class="il"><span class="idl">#{</span>point.x<span class="idl">}</span></span><span class="k">,point.y = </span><span class="il"><span class="idl">#{</span>point.y<span class="idl">}</span></span><span class="dl">&quot;</span></span>
73
+
74
+
75
+
76
+ <span class="c"># struct PointF in C\C++ (32-bit platform): </span>
77
+ <span class="c">#</span>
78
+ <span class="c"># struct PointF</span>
79
+ <span class="c"># {</span>
80
+ <span class="c"># double x;</span>
81
+ <span class="c"># double y;</span>
82
+ <span class="c"># }; </span>
83
+
84
+ <span class="c"># struct PointF in Ruby: </span>
85
+ <span class="r">class</span> <span class="cl">PointF</span> &lt; <span class="co">CStruct</span>
86
+ double<span class="sy">:x</span>
87
+ double<span class="sy">:y</span>
88
+ <span class="r">end</span>
89
+
90
+ <span class="c"># create a PointF's instance</span>
91
+ <span class="c"># use 'block' to initialize the fields</span>
92
+ point2 = <span class="co">PointF</span>.new <span class="r">do</span> |st|
93
+ st.x = <span class="fl">10.56</span>
94
+ st.y = <span class="fl">20.78</span>
95
+ <span class="r">end</span>
96
+
97
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">sizeof(PointF) = </span><span class="il"><span class="idl">#{</span><span class="co">PointF</span>.size<span class="idl">}</span></span><span class="dl">&quot;</span></span>
98
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">point2.x = </span><span class="il"><span class="idl">#{</span>point2.x<span class="idl">}</span></span><span class="k">,point2.y = </span><span class="il"><span class="idl">#{</span>point2.y<span class="idl">}</span></span><span class="dl">&quot;</span></span>
99
+
100
+ </pre></div>
101
+ </div>
102
+
103
+ </div>
104
+ </body>
@@ -0,0 +1,114 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:GetSystemInfo</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">windows/system_info</span><span class="dl">'</span></span>
49
+ require <span class="s"><span class="dl">'</span><span class="k">win32struct</span><span class="dl">'</span></span>
50
+ include <span class="co">Windows</span>::<span class="co">SystemInfo</span>
51
+
52
+ <span class="c"># SYSTEM_INFO in VC6 's SDK</span>
53
+ <span class="c"># typedef struct _SYSTEM_INFO {</span>
54
+ <span class="c"># union {</span>
55
+ <span class="c"># DWORD dwOemId; // Obsolete field...do not use</span>
56
+ <span class="c"># struct {</span>
57
+ <span class="c"># WORD wProcessorArchitecture;</span>
58
+ <span class="c"># WORD wReserved;</span>
59
+ <span class="c"># };</span>
60
+ <span class="c"># };</span>
61
+ <span class="c"># DWORD dwPageSize;</span>
62
+ <span class="c"># LPVOID lpMinimumApplicationAddress;</span>
63
+ <span class="c"># LPVOID lpMaximumApplicationAddress;</span>
64
+ <span class="c"># DWORD dwActiveProcessorMask;</span>
65
+ <span class="c"># DWORD dwNumberOfProcessors;</span>
66
+ <span class="c"># DWORD dwProcessorType;</span>
67
+ <span class="c"># DWORD dwAllocationGranularity;</span>
68
+ <span class="c"># WORD wProcessorLevel;</span>
69
+ <span class="c"># WORD wProcessorRevision;</span>
70
+ <span class="c"># } SYSTEM_INFO, *LPSYSTEM_INFO;</span>
71
+
72
+ <span class="c"># SYSTEM_INFO in Ruby</span>
73
+ <span class="r">class</span> <span class="cl">SYSTEM_INFO</span> &lt; <span class="co">Win32Struct</span>
74
+ union<span class="sy">:u</span> <span class="r">do</span>
75
+ <span class="co">DWORD</span><span class="sy">:dwOemId</span>
76
+ struct<span class="sy">:x</span> <span class="r">do</span>
77
+ <span class="co">WORD</span><span class="sy">:wProcessorArchitecture</span>
78
+ <span class="co">WORD</span><span class="sy">:wReserved</span>
79
+ <span class="r">end</span>
80
+ <span class="r">end</span>
81
+ <span class="co">DWORD</span> <span class="sy">:dwPageSize</span>
82
+ <span class="co">LPVOID</span> <span class="sy">:lpMinimumApplicationAddress</span>
83
+ <span class="co">LPVOID</span> <span class="sy">:lpMaximumApplicationAddress</span>
84
+ <span class="co">DWORD</span> <span class="sy">:dwActiveProcessorMask</span>
85
+ <span class="co">DWORD</span> <span class="sy">:dwNumberOfProcessors</span>
86
+ <span class="co">DWORD</span> <span class="sy">:dwProcessorType</span>
87
+ <span class="co">DWORD</span> <span class="sy">:dwAllocationGranularity</span>
88
+ <span class="co">WORD</span> <span class="sy">:wProcessorLevel</span>
89
+ <span class="co">WORD</span> <span class="sy">:wProcessorRevision</span>
90
+ <span class="r">end</span>
91
+
92
+ <span class="c"># call GetSystemInfo</span>
93
+ sys_info = <span class="co">SYSTEM_INFO</span>.new
94
+ GetSystemInfo(sys_info.__data__) <span class="c"># __data__ is an alias for method 'data' </span>
95
+
96
+ <span class="c">#output</span>
97
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">&lt;System Infomation&gt;</span><span class="dl">&quot;</span></span>
98
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Processor Architecture:</span><span class="il"><span class="idl">#{</span>sys_info.u.x.wProcessorArchitecture<span class="idl">}</span></span><span class="dl">&quot;</span></span> <span class="c"># 'u' and 'x' can not be omitted</span>
99
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Page Size:</span><span class="il"><span class="idl">#{</span>sys_info.dwPageSize<span class="idl">}</span></span><span class="dl">&quot;</span></span>
100
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Minimum Application Address:0x</span><span class="il"><span class="idl">#{</span>sys_info.lpMinimumApplicationAddress.to_s <span class="i">16</span><span class="idl">}</span></span><span class="dl">&quot;</span></span>
101
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Maximum Application Address:0x</span><span class="il"><span class="idl">#{</span>sys_info.lpMaximumApplicationAddress.to_s <span class="i">16</span><span class="idl">}</span></span><span class="dl">&quot;</span></span>
102
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Active Processor Mask:</span><span class="il"><span class="idl">#{</span>sys_info.dwActiveProcessorMask<span class="idl">}</span></span><span class="dl">&quot;</span></span>
103
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Number Of Processors:</span><span class="il"><span class="idl">#{</span>sys_info.dwNumberOfProcessors<span class="idl">}</span></span><span class="dl">&quot;</span></span>
104
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Processor Type:</span><span class="il"><span class="idl">#{</span>sys_info.dwProcessorType<span class="idl">}</span></span><span class="dl">&quot;</span></span>
105
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Allocation Granularity:0x</span><span class="il"><span class="idl">#{</span>sys_info.dwAllocationGranularity.to_s <span class="i">16</span><span class="idl">}</span></span><span class="dl">&quot;</span></span>
106
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Processor Level:</span><span class="il"><span class="idl">#{</span>sys_info.wProcessorLevel<span class="idl">}</span></span><span class="dl">&quot;</span></span>
107
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Processor Revision:</span><span class="il"><span class="idl">#{</span>sys_info.wProcessorRevision<span class="idl">}</span></span><span class="dl">&quot;</span></span>
108
+
109
+
110
+ </pre></div>
111
+ </div>
112
+
113
+ </div>
114
+ </body>