first commit
This commit is contained in:
commit
2bba8c5fee
122 changed files with 8389 additions and 0 deletions
|
@ -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">"rb"</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">"rb"</span>)
|
||||
<span class="ruby-identifier">file</span> = <span class="ruby-value str">"<string>"</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">"x6CCx4Nx4Nx4N"</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">"#{file}: Format error!"</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">""</span>,<span class="ruby-value str">"C*"</span>,<span class="ruby-value str">"n*"</span>,<span class="ruby-value str">"(H6)*"</span>,<span class="ruby-value str">"N*"</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>
|
|
@ -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">"bplist00"</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">"x6CC"</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">"x4N"</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">"x4N"</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">"x4N"</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>
|
|
@ -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">"unknown null type: #{length}"</span>)
|
||||
<span class="ruby-keyword kw">end</span></pre>
|
||||
</body>
|
||||
</html>
|
|
@ -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">"Integer greater than 8 bytes: #{length}"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">3</span>
|
||||
|
||||
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</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">"C"</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">"n"</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">"N"</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">"NN"</span>)
|
||||
<span class="ruby-identifier">val</span> = <span class="ruby-identifier">hiword</span> <span class="ruby-operator"><<</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>
|
|
@ -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">"Real greater than 8 bytes: #{length}"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">3</span>
|
||||
|
||||
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</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">"got #{length+1} byte float, must be an error!"</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">"got #{length+1} byte float, must be an error!"</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">"f"</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">"d"</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>
|
|
@ -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">"Date greater than 8 bytes: #{length}"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">3</span>
|
||||
|
||||
<span class="ruby-identifier">nbytes</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</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">"#{length+1} byte CFDate, error"</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">"#{length+1} byte CFDate, error"</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">"f"</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">"d"</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>
|
|
@ -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">""</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">></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>
|
|
@ -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">""</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">></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>
|
|
@ -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">"UTF-8"</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">"encode"</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>
|
|
@ -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">"UTF-8"</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">"encode"</span>)
|
||||
|
||||
<span class="ruby-identifier">str</span> = <span class="ruby-constant">Iconv</span>.<span class="ruby-identifier">conv</span>(<span class="ruby-value str">"UTF-8"</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">"UTF-8"</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>
|
|
@ -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">"UTF-16BE"</span>,<span class="ruby-value str">"UTF-8"</span>))
|
||||
<span class="ruby-keyword kw">end</span></pre>
|
||||
</body>
|
||||
</html>
|
|
@ -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">"C*"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"n*"</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>
|
|
@ -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">"C*"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"n*"</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">"C*"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"n*"</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>
|
|
@ -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">"C*"</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">&</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">"H*"</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">"0"</span> <span class="ruby-operator">&&</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>
|
|
@ -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>
|
|
@ -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">></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">></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">></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>
|
|
@ -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">></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">></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">></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"><</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>
|
|
@ -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">"C"</span>, <span class="ruby-value str">"n"</span>, <span class="ruby-value str">"N"</span>, <span class="ruby-value str">"N"</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>
|
|
@ -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">>=</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>
|
|
@ -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">""</span>
|
||||
|
||||
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">int</span> <span class="ruby-operator">></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">"\x12"</span><span class="ruby-operator">+</span>[<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">"N"</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">></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">"\x11"</span><span class="ruby-operator">+</span>[<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">"n"</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">"\x10"</span><span class="ruby-operator">+</span>[<span class="ruby-identifier">int</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">"C"</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>
|
|
@ -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">""</span>
|
||||
|
||||
<span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">type_len</span> <span class="ruby-operator"><</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">"%x"</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">"f"</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">"H*"</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">optional_int</span>
|
||||
<span class="ruby-keyword kw">end</span></pre>
|
||||
</body>
|
||||
</html>
|
|
@ -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>
|
|
@ -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">></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>
|
|
@ -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">></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">"6"</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-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">"UTF-8"</span>,<span class="ruby-value str">"UTF-16BE"</span>)
|
||||
|
||||
<span class="ruby-identifier">val</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-value str">"ASCII-8BIT"</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">"encode"</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">"5"</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>
|
|
@ -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">></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">></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">></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"><</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">"1"</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">""</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">fmt</span> = <span class="ruby-value str">"N"</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">"C"</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">"n"</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">>></span> <span class="ruby-value">32</span>
|
||||
<span class="ruby-identifier">low_word</span> = <span class="ruby-identifier">value</span> <span class="ruby-operator">&</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">"NN"</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>
|
|
@ -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">"2"</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">"d"</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>
|
|
@ -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">""</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>
|
|
@ -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">"3"</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">"d"</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>
|
|
@ -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">"\x9"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"\x8"</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>
|
|
@ -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">"4"</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>
|
|
@ -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">"a"</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>
|
|
@ -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">"d"</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>
|
Reference in a new issue