first commit

This commit is contained in:
Jeena Paradies 2010-06-12 17:59:50 +02:00
commit 2bba8c5fee
122 changed files with 8389 additions and 0 deletions

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>load (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 13</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">load</span>(<span class="ruby-identifier">opts</span>)
<span class="ruby-ivar">@unique_table</span> = {}
<span class="ruby-ivar">@count_objects</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@string_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@int_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@misc_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@object_refs</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@written_object_count</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@object_table</span> = []
<span class="ruby-ivar">@object_ref_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@offsets</span> = []
<span class="ruby-identifier">fd</span> = <span class="ruby-keyword kw">nil</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">opts</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">:file</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">fd</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:file</span>],<span class="ruby-value str">&quot;rb&quot;</span>)
<span class="ruby-identifier">file</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:file</span>]
<span class="ruby-keyword kw">else</span>
<span class="ruby-identifier">fd</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:data</span>],<span class="ruby-value str">&quot;rb&quot;</span>)
<span class="ruby-identifier">file</span> = <span class="ruby-value str">&quot;&lt;string&gt;&quot;</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-comment cmt"># first, we read the trailer: 32 byte from the end</span>
<span class="ruby-identifier">fd</span>.<span class="ruby-identifier">seek</span>(<span class="ruby-value">-32</span>,<span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">SEEK_END</span>)
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">32</span>)
<span class="ruby-identifier">offset_size</span>, <span class="ruby-identifier">object_ref_size</span>, <span class="ruby-identifier">number_of_objects</span>, <span class="ruby-identifier">top_object</span>, <span class="ruby-identifier">table_offset</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span> <span class="ruby-value str">&quot;x6CCx4Nx4Nx4N&quot;</span>
<span class="ruby-comment cmt"># after that, get the offset table</span>
<span class="ruby-identifier">fd</span>.<span class="ruby-identifier">seek</span>(<span class="ruby-identifier">table_offset</span>, <span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">SEEK_SET</span>)
<span class="ruby-identifier">coded_offset_table</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">number_of_objects</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">offset_size</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{file}: Format error!&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">coded_offset_table</span>.<span class="ruby-identifier">bytesize</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">number_of_objects</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">offset_size</span>
<span class="ruby-ivar">@count_objects</span> = <span class="ruby-identifier">number_of_objects</span>
<span class="ruby-comment cmt"># decode offset table</span>
<span class="ruby-identifier">formats</span> = [<span class="ruby-value str">&quot;&quot;</span>,<span class="ruby-value str">&quot;C*&quot;</span>,<span class="ruby-value str">&quot;n*&quot;</span>,<span class="ruby-value str">&quot;(H6)*&quot;</span>,<span class="ruby-value str">&quot;N*&quot;</span>]
<span class="ruby-ivar">@offsets</span> = <span class="ruby-identifier">coded_offset_table</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-identifier">formats</span>[<span class="ruby-identifier">offset_size</span>])
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">offset_size</span> <span class="ruby-operator">==</span> <span class="ruby-value">3</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@offsets</span>.<span class="ruby-identifier">count</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@offsets</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-ivar">@offsets</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">to_i</span>(<span class="ruby-value">16</span>) }
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@object_ref_size</span> = <span class="ruby-identifier">object_ref_size</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">read_binary_object_at</span>(<span class="ruby-identifier">file</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">top_object</span>)
<span class="ruby-identifier">fd</span>.<span class="ruby-identifier">close</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>to_str (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 65</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_str</span>(<span class="ruby-identifier">opts</span>={})
<span class="ruby-ivar">@unique_table</span> = {}
<span class="ruby-ivar">@count_objects</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@string_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@int_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@misc_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@object_refs</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@written_object_count</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@object_table</span> = []
<span class="ruby-ivar">@object_ref_size</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@offsets</span> = []
<span class="ruby-identifier">binary_str</span> = <span class="ruby-value str">&quot;bplist00&quot;</span>
<span class="ruby-identifier">unique_and_count_values</span>(<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:root</span>])
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@unique_table</span>.<span class="ruby-identifier">count</span>
<span class="ruby-ivar">@object_ref_size</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_needed</span>(<span class="ruby-ivar">@count_objects</span>)
<span class="ruby-identifier">file_size</span> = <span class="ruby-ivar">@string_size</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@object_refs</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@object_ref_size</span> <span class="ruby-operator">+</span> <span class="ruby-value">40</span>
<span class="ruby-identifier">offset_size</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_needed</span>(<span class="ruby-identifier">file_size</span>)
<span class="ruby-identifier">table_offset</span> = <span class="ruby-identifier">file_size</span> <span class="ruby-operator">-</span> <span class="ruby-value">32</span>
<span class="ruby-ivar">@object_table</span> = []
<span class="ruby-ivar">@written_object_count</span> = <span class="ruby-value">0</span>
<span class="ruby-ivar">@unique_table</span> = {} <span class="ruby-comment cmt"># we needed it to calculate several values, but now we need an empty table</span>
<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:root</span>].<span class="ruby-identifier">to_binary</span>(<span class="ruby-keyword kw">self</span>)
<span class="ruby-identifier">object_offset</span> = <span class="ruby-value">8</span>
<span class="ruby-identifier">offsets</span> = []
<span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@object_table</span>.<span class="ruby-identifier">count</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">binary_str</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">i</span>]
<span class="ruby-identifier">offsets</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-identifier">object_offset</span>
<span class="ruby-identifier">object_offset</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">bytesize</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">offsets</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">offset</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">binary_str</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">pack_it_with_size</span>(<span class="ruby-identifier">offset_size</span>,<span class="ruby-identifier">offset</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">binary_str</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">offset_size</span>, <span class="ruby-ivar">@object_ref_size</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;x6CC&quot;</span>)
<span class="ruby-identifier">binary_str</span> <span class="ruby-operator">+=</span> [<span class="ruby-ivar">@count_objects</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;x4N&quot;</span>)
<span class="ruby-identifier">binary_str</span> <span class="ruby-operator">+=</span> [<span class="ruby-value">0</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;x4N&quot;</span>)
<span class="ruby-identifier">binary_str</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">table_offset</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;x4N&quot;</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">binary_str</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_null_type (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 117</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_null_type</span>(<span class="ruby-identifier">length</span>)
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">length</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-comment cmt"># null byte</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-value">8</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFBoolean</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">false</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value">9</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFBoolean</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value">15</span> <span class="ruby-keyword kw">then</span> <span class="ruby-keyword kw">return</span> <span class="ruby-value">15</span> <span class="ruby-comment cmt"># fill type</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;unknown null type: #{length}&quot;</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_int (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 130</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_int</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Integer greater than 8 bytes: #{length}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">length</span>
<span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">nil</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">nbytes</span>)
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">length</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;C&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;n&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;N&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span>
<span class="ruby-identifier">hiword</span>,<span class="ruby-identifier">loword</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;NN&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">hiword</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">32</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">loword</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFInteger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">val</span>);
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_real (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 158</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_real</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Real greater than 8 bytes: #{length}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">length</span>
<span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">nil</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">nbytes</span>)
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">length</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># 1 byte float? must be an error</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;got #{length+1} byte float, must be an error!&quot;</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># 2 byte float? must be an error</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;got #{length+1} byte float, must be an error!&quot;</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;f&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;d&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFReal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_date (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 183</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_date</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Date greater than 8 bytes: #{length}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">length</span>
<span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">nil</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">nbytes</span>)
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">length</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># 1 byte CFDate is an error</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{length+1} byte CFDate, error&quot;</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># 2 byte CFDate is an error</span>
<span class="ruby-identifier">raise</span> <span class="ruby-constant">CFFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{length+1} byte CFDate, error&quot;</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;f&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;d&quot;</span>)
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFDate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">val</span>,<span class="ruby-constant">CFDate</span><span class="ruby-operator">::</span><span class="ruby-constant">TIMESTAMP_APPLE</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_data (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 208</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_data</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">buff</span> = <span class="ruby-value str">&quot;&quot;</span>;
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">length</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFData</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">buff</span>,<span class="ruby-constant">CFData</span><span class="ruby-operator">::</span><span class="ruby-constant">DATA_RAW</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_string (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 216</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_string</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">buff</span> = <span class="ruby-value str">&quot;&quot;</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">length</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">buff</span>] = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@unique_table</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">buff</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFString</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">buff</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>charset_convert (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 226</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_convert</span>(<span class="ruby-identifier">str</span>,<span class="ruby-identifier">from</span>,<span class="ruby-identifier">to</span>=<span class="ruby-value str">&quot;UTF-8&quot;</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-identifier">from</span>).<span class="ruby-identifier">encode</span>(<span class="ruby-identifier">to</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value str">&quot;encode&quot;</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">Iconv</span>.<span class="ruby-identifier">conv</span>(<span class="ruby-identifier">to</span>,<span class="ruby-identifier">from</span>,<span class="ruby-identifier">str</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>charset_strlen (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 232</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_strlen</span>(<span class="ruby-identifier">str</span>,<span class="ruby-identifier">charset</span>=<span class="ruby-value str">&quot;UTF-8&quot;</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">length</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value str">&quot;encode&quot;</span>)
<span class="ruby-identifier">str</span> = <span class="ruby-constant">Iconv</span>.<span class="ruby-identifier">conv</span>(<span class="ruby-value str">&quot;UTF-8&quot;</span>,<span class="ruby-identifier">charset</span>,<span class="ruby-identifier">str</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">charset</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;UTF-8&quot;</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/./</span><span class="ruby-identifier">mu</span>).<span class="ruby-identifier">size</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_unicode_string (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 240</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_unicode_string</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-comment cmt"># The problem is: we get the length of the string IN CHARACTERS;</span>
<span class="ruby-comment cmt"># since a char in UTF-16 can be 16 or 32 bit long, we don't really know</span>
<span class="ruby-comment cmt"># how long the string is in bytes</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">2</span><span class="ruby-operator">*</span><span class="ruby-identifier">length</span>)
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">buff</span>] = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@unique_table</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">buff</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFString</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_convert</span>(<span class="ruby-identifier">buff</span>,<span class="ruby-value str">&quot;UTF-16BE&quot;</span>,<span class="ruby-value str">&quot;UTF-8&quot;</span>))
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_array (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 252</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_array</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">ary</span> = []
<span class="ruby-comment cmt"># first: read object refs</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">length</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@object_ref_size</span>)
<span class="ruby-identifier">objects</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-ivar">@object_ref_size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;C*&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;n*&quot;</span>)
<span class="ruby-comment cmt"># now: read objects</span>
<span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">object</span> = <span class="ruby-identifier">read_binary_object_at</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">objects</span>[<span class="ruby-identifier">i</span>])
<span class="ruby-identifier">ary</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">object</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ary</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_dict (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 272</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_dict</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">length</span>)
<span class="ruby-identifier">dict</span> = {}
<span class="ruby-comment cmt"># first: read keys</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">length</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@object_ref_size</span>)
<span class="ruby-identifier">keys</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-ivar">@object_ref_size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;C*&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;n*&quot;</span>)
<span class="ruby-comment cmt"># second: read object refs</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">length</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@object_ref_size</span>)
<span class="ruby-identifier">objects</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-ivar">@object_ref_size</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;C*&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;n*&quot;</span>)
<span class="ruby-comment cmt"># read real keys and objects</span>
<span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">key</span> = <span class="ruby-identifier">read_binary_object_at</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">keys</span>[<span class="ruby-identifier">i</span>])
<span class="ruby-identifier">object</span> = <span class="ruby-identifier">read_binary_object_at</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">objects</span>[<span class="ruby-identifier">i</span>])
<span class="ruby-identifier">dict</span>[<span class="ruby-identifier">key</span>.<span class="ruby-identifier">value</span>] = <span class="ruby-identifier">object</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">CFDictionary</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">dict</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_object (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 297</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_object</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>)
<span class="ruby-comment cmt"># first: read the marker byte</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">fd</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">1</span>)
<span class="ruby-identifier">object_length</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;C*&quot;</span>)
<span class="ruby-identifier">object_length</span> = <span class="ruby-identifier">object_length</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x</span><span class="ruby-constant">F</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">&quot;H*&quot;</span>)
<span class="ruby-identifier">object_type</span> = <span class="ruby-identifier">buff</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">object_type</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;0&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">object_length</span> <span class="ruby-operator">==</span> <span class="ruby-value">15</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">object_length</span> = <span class="ruby-identifier">read_binary_object</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>)
<span class="ruby-identifier">object_length</span> = <span class="ruby-identifier">object_length</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-keyword kw">nil</span>
<span class="ruby-keyword kw">case</span> <span class="ruby-identifier">object_type</span>
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'0'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># null, false, true, fillbyte</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_null_type</span>(<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'1'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># integer</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_int</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'2'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># real</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_real</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'3'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># date</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_date</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'4'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># data</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_data</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'5'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># byte string, usually utf8 encoded</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_string</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'6'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># unicode string (utf16be)</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_unicode_string</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'a'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># array</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_array</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">when</span> <span class="ruby-value str">'d'</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># dictionary</span>
<span class="ruby-identifier">retval</span> = <span class="ruby-identifier">read_binary_dict</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">object_length</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">retval</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>read_binary_object_at (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 339</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_binary_object_at</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>,<span class="ruby-identifier">pos</span>)
<span class="ruby-identifier">position</span> = <span class="ruby-ivar">@offsets</span>[<span class="ruby-identifier">pos</span>]
<span class="ruby-identifier">fd</span>.<span class="ruby-identifier">seek</span>(<span class="ruby-identifier">position</span>,<span class="ruby-constant">IO</span><span class="ruby-operator">::</span><span class="ruby-constant">SEEK_SET</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">read_binary_object</span>(<span class="ruby-identifier">fname</span>,<span class="ruby-identifier">fd</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>bytes_size_int (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 347</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_size_int</span>(<span class="ruby-identifier">int</span>)
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">E</span> <span class="ruby-comment cmt"># 2 bytes int</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FF</span> <span class="ruby-comment cmt"># 3 bytes int</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFF</span> <span class="ruby-comment cmt"># 5 bytes int</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nbytes</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>bytes_int (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 358</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_int</span>(<span class="ruby-identifier">int</span>)
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FF</span> <span class="ruby-comment cmt"># 2 byte int</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFF</span> <span class="ruby-comment cmt"># 4 byte int</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">4</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFFFFFF</span> <span class="ruby-comment cmt"># 8 byte int</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">7</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-comment cmt"># 8 byte int (since it is signed)</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># one „marker” byte</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>pack_it_with_size (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 370</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">pack_it_with_size</span>(<span class="ruby-identifier">nbytes</span>,<span class="ruby-identifier">int</span>)
<span class="ruby-identifier">format</span> = [<span class="ruby-value str">&quot;C&quot;</span>, <span class="ruby-value str">&quot;n&quot;</span>, <span class="ruby-value str">&quot;N&quot;</span>, <span class="ruby-value str">&quot;N&quot;</span>][<span class="ruby-identifier">nbytes</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>]
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">==</span> <span class="ruby-value">3</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = [<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-identifier">format</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">-3</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-identifier">format</span>)
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>bytes_needed (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 382</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_needed</span>(<span class="ruby-identifier">count</span>)
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">0</span>
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">count</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">do</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">count</span> <span class="ruby-operator">/=</span> <span class="ruby-value">256</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nbytes</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>int_bytes (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 394</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">int_bytes</span>(<span class="ruby-identifier">int</span>)
<span class="ruby-identifier">intbytes</span> = <span class="ruby-value str">&quot;&quot;</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFF</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">intbytes</span> = <span class="ruby-value str">&quot;\x12&quot;</span><span class="ruby-operator">+</span>[<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;N&quot;</span>) <span class="ruby-comment cmt"># 4 byte integer</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">int</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FF</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">intbytes</span> = <span class="ruby-value str">&quot;\x11&quot;</span><span class="ruby-operator">+</span>[<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;n&quot;</span>) <span class="ruby-comment cmt"># 2 byte integer</span>
<span class="ruby-keyword kw">else</span>
<span class="ruby-identifier">intbytes</span> = <span class="ruby-value str">&quot;\x10&quot;</span><span class="ruby-operator">+</span>[<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;C&quot;</span>) <span class="ruby-comment cmt"># 8 byte integer</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">intbytes</span>;
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>type_bytes (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 409</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-identifier">type</span>,<span class="ruby-identifier">type_len</span>)
<span class="ruby-identifier">optional_int</span> = <span class="ruby-value str">&quot;&quot;</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">type_len</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">15</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">type</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%x&quot;</span>,<span class="ruby-identifier">type_len</span>)
<span class="ruby-keyword kw">else</span>
<span class="ruby-identifier">type</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;f&quot;</span>
<span class="ruby-identifier">optional_int</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">int_bytes</span>(<span class="ruby-identifier">type_len</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">type</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;H*&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">optional_int</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>unique_and_count_values (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 424</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unique_and_count_values</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-comment cmt"># no uniquing for other types than CFString and CFData</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFInteger</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFReal</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFInteger</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_int</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-keyword kw">else</span>
<span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+=</span> <span class="ruby-value">9</span> <span class="ruby-comment cmt"># 9 bytes (8 + marker byte) for real</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword kw">return</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFDate</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+=</span> <span class="ruby-value">9</span>
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword kw">return</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFBoolean</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword kw">return</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFArray</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">cnt</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">value</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">cnt</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">unique_and_count_values</span>(<span class="ruby-identifier">v</span>)
<span class="ruby-ivar">@object_refs</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># each array member is a ref</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_size_int</span>(<span class="ruby-identifier">cnt</span>)
<span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># marker byte for array</span>
<span class="ruby-keyword kw">return</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFDictionary</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">cnt</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">value</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">cnt</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-operator">!</span><span class="ruby-ivar">@unique_table</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">k</span>))
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-value">0</span>
<span class="ruby-ivar">@string_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">binary_strlen</span>(<span class="ruby-identifier">k</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_size_int</span>(<span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_strlen</span>(<span class="ruby-identifier">k</span>,<span class="ruby-value str">'UTF-8'</span>))
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@object_refs</span> <span class="ruby-operator">+=</span> <span class="ruby-value">2</span> <span class="ruby-comment cmt"># both, key and value, are refs</span>
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">k</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">unique_and_count_values</span>(<span class="ruby-identifier">v</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># marker byte for dict</span>
<span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_size_int</span>(<span class="ruby-identifier">cnt</span>)
<span class="ruby-keyword kw">return</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFData</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">decoded_value</span>
<span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_size_int</span>(<span class="ruby-identifier">val</span>.<span class="ruby-identifier">length</span>)
<span class="ruby-ivar">@misc_size</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">length</span>
<span class="ruby-ivar">@count_objects</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword kw">return</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">value</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-operator">!</span><span class="ruby-ivar">@unique_table</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">val</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">val</span>] = <span class="ruby-value">0</span>
<span class="ruby-ivar">@string_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">binary_strlen</span>(<span class="ruby-identifier">val</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@int_size</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">bytes_size_int</span>(<span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_strlen</span>(<span class="ruby-identifier">val</span>,<span class="ruby-value str">'UTF-8'</span>))
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">val</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>binary_strlen (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 498</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">binary_strlen</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">each_byte</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">b</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">127</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_convert</span>(<span class="ruby-identifier">val</span>, <span class="ruby-value str">'UTF-8'</span>, <span class="ruby-value str">'UTF-16BE'</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">bytesize</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">bytesize</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>string_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 510</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">string_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-value">-1</span>
<span class="ruby-keyword kw">unless</span>(<span class="ruby-ivar">@unique_table</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">val</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">val</span>] = <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-identifier">utf16</span> = <span class="ruby-keyword kw">false</span>
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">each_byte</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">b</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">127</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">utf16</span> = <span class="ruby-keyword kw">true</span>
<span class="ruby-keyword kw">break</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">utf16</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;6&quot;</span>,<span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_strlen</span>(<span class="ruby-identifier">val</span>,<span class="ruby-value str">&quot;UTF-8&quot;</span>)) <span class="ruby-comment cmt"># 6 is 0110, unicode string (utf16be)</span>
<span class="ruby-identifier">val</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">charset_convert</span>(<span class="ruby-identifier">val</span>,<span class="ruby-value str">&quot;UTF-8&quot;</span>,<span class="ruby-value str">&quot;UTF-16BE&quot;</span>)
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-value str">&quot;ASCII-8BIT&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value str">&quot;encode&quot;</span>)
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">bdata</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword kw">else</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;5&quot;</span>,<span class="ruby-identifier">val</span>.<span class="ruby-identifier">bytesize</span>) <span class="ruby-comment cmt"># 5 is 0101 which is an ASCII string (seems to be ASCII encoded)</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">bdata</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">else</span>
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@unique_table</span>[<span class="ruby-identifier">val</span>]
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>int_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 545</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">int_to_binary</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">0</span>
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FF</span> <span class="ruby-comment cmt"># 1 byte integer</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFF</span> <span class="ruby-comment cmt"># 4 byte integer</span>
<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFFFFFF</span> <span class="ruby-comment cmt"># 8 byte integer</span>
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">3</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">value</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-comment cmt"># 8 byte integer, since signed</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;1&quot;</span>, <span class="ruby-identifier">nbytes</span>) <span class="ruby-comment cmt"># 1 is 0001, type indicator for integer</span>
<span class="ruby-identifier">buff</span> = <span class="ruby-value str">&quot;&quot;</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">3</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">fmt</span> = <span class="ruby-value str">&quot;N&quot;</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">fmt</span> = <span class="ruby-value str">&quot;C&quot;</span>
<span class="ruby-keyword kw">elsif</span>(<span class="ruby-identifier">nbytes</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>)
<span class="ruby-identifier">fmt</span> = <span class="ruby-value str">&quot;n&quot;</span>
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">buff</span> = [<span class="ruby-identifier">value</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-identifier">fmt</span>)
<span class="ruby-keyword kw">else</span>
<span class="ruby-comment cmt"># 64 bit signed integer; we need the higher and the lower 32 bit of the value</span>
<span class="ruby-identifier">high_word</span> = <span class="ruby-identifier">value</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">32</span>
<span class="ruby-identifier">low_word</span> = <span class="ruby-identifier">value</span> <span class="ruby-operator">&amp;</span> <span class="ruby-value">0x</span><span class="ruby-constant">FFFFFFFF</span>
<span class="ruby-identifier">buff</span> = [<span class="ruby-identifier">high_word</span>,<span class="ruby-identifier">low_word</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;NN&quot;</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">bdata</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">buff</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>real_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 576</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">real_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;2&quot;</span>,<span class="ruby-value">3</span>) <span class="ruby-comment cmt"># 2 is 0010, type indicator for reals</span>
<span class="ruby-identifier">buff</span> = [<span class="ruby-identifier">val</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;d&quot;</span>)
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">bdata</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">buff</span>.<span class="ruby-identifier">reverse</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>num_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 583</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">num_to_binary</span>(<span class="ruby-identifier">value</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">val</span> = <span class="ruby-value str">&quot;&quot;</span>
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CFInteger</span>)) <span class="ruby-keyword kw">then</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">int_to_binary</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">value</span>)
<span class="ruby-keyword kw">else</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">real_to_binary</span>(<span class="ruby-identifier">value</span>.<span class="ruby-identifier">value</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">val</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>date_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 599</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">date_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">getutc</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">-</span> <span class="ruby-constant">CFDate</span><span class="ruby-operator">::</span><span class="ruby-constant">DATE_DIFF_APPLE_UNIX</span> <span class="ruby-comment cmt"># CFDate is a real, number of seconds since 01/01/2001 00:00:00 GMT</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;3&quot;</span>, <span class="ruby-value">3</span>) <span class="ruby-comment cmt"># 3 is 0011, type indicator for date</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">bdata</span> <span class="ruby-operator">+</span> [<span class="ruby-identifier">val</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">&quot;d&quot;</span>).<span class="ruby-identifier">reverse</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>bool_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 612</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">bool_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">val</span> <span class="ruby-value">? </span><span class="ruby-value str">&quot;\x9&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;\x8&quot;</span> <span class="ruby-comment cmt"># 0x9 is 1001, type indicator for true; 0x8 is 1000, type indicator for false</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>data_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 621</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">data_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;4&quot;</span>, <span class="ruby-identifier">val</span>.<span class="ruby-identifier">bytesize</span>) <span class="ruby-comment cmt"># a is 1000, type indicator for data</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">bdata</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">val</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>array_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 632</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">array_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;a&quot;</span>, <span class="ruby-identifier">val</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">count</span>) <span class="ruby-comment cmt"># a is 1010, type indicator for arrays</span>
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">bdata</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">pack_it_with_size</span>(<span class="ruby-ivar">@object_ref_size</span>, <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_binary</span>(<span class="ruby-keyword kw">self</span>));
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">bdata</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>dict_to_binary (CFPropertyList::Binary)</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
<pre><span class="ruby-comment cmt"># File rbBinaryCFPropertyList.rb, line 647</span>
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dict_to_binary</span>(<span class="ruby-identifier">val</span>)
<span class="ruby-identifier">saved_object_count</span> = <span class="ruby-ivar">@written_object_count</span>
<span class="ruby-ivar">@written_object_count</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
<span class="ruby-identifier">bdata</span> = <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">type_bytes</span>(<span class="ruby-value str">&quot;d&quot;</span>,<span class="ruby-identifier">val</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">count</span>) <span class="ruby-comment cmt"># d=1101, type indicator for dictionary</span>
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">each_key</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">str</span> = <span class="ruby-constant">CFString</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">k</span>)
<span class="ruby-identifier">key</span> = <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_binary</span>(<span class="ruby-keyword kw">self</span>)
<span class="ruby-identifier">bdata</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">pack_it_with_size</span>(<span class="ruby-ivar">@object_ref_size</span>,<span class="ruby-identifier">key</span>)
<span class="ruby-keyword kw">end</span>
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">value</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
<span class="ruby-identifier">bdata</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">Binary</span>.<span class="ruby-identifier">pack_it_with_size</span>(<span class="ruby-ivar">@object_ref_size</span>,<span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_binary</span>(<span class="ruby-keyword kw">self</span>))
<span class="ruby-keyword kw">end</span>
<span class="ruby-ivar">@object_table</span>[<span class="ruby-identifier">saved_object_count</span>] = <span class="ruby-identifier">bdata</span>
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">saved_object_count</span>
<span class="ruby-keyword kw">end</span></pre>
</body>
</html>