54 lines
No EOL
6.6 KiB
HTML
54 lines
No EOL
6.6 KiB
HTML
<?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> |