Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2e9c43658e374d290a2de15d25134ac8 > files > 867

db4o-doc-8.0-1.fc15.i686.rpm

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="2" MadCap:lastHeight="120" MadCap:lastWidth="624" MadCap:disableMasterStylesheet="true" MadCap:tocPath="Tuning|Debugging db4o" MadCap:InPreviewMode="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="index.xml" MadCap:SearchType="Stem">
    <head><title>Reading Db4o File	</title>
        <script type="text/javascript">/* <![CDATA[ */
window.onload = function(){
	var pathToFlash = $('html').attr('MadCap:PathToHelpSystem') + 'Content/Resources/Code/ZeroClipboard.swf';
	ZeroClipboard.setMoviePath(pathToFlash);
			
	function bindToClipBord(element,content){
		var clip = new ZeroClipboard.Client();
		clip.setText(content);
		clip.glue(element);
	};
		
	if(location.protocol==='file:'){
		$('.copylink-marker').remove();
	} else{
			$('.copylink-marker').each(function(){
				var text = $(this).parent().parent().children('.prettyprint').html();
				$(this).hover(function(){
					bindToClipBord(this,text);
				},
				function(){});
			});	
	}		
	prettyPrint();	
};
                /* ]]> */</script>
        <link href="../../SkinSupport/MadCap.css" rel="stylesheet" />
        <link href="../../Resources/Stylesheets/OnlineStyle.css" rel="stylesheet" />
        <script src="../../Resources/Code/prettify.js">
        </script>
        <script src="../../Resources/Code/lang-vb.js">
        </script>
        <script src="../../Resources/Code/jquery.min.js">
        </script>
        <script src="../../Resources/Code/ZeroClipboard.js">
        </script>
        <script src="../../SkinSupport/MadCapAll.js" type="text/javascript">
        </script>
    </head>
    <body>
        <p class="MCWebHelpFramesetLink" style="display: none;"><a href="../../../index_CSH.html#tuning/debugging_db4o/reading_db4o_file.htm" style="">Open topic with navigation</a>
        </p>
        <div class="MCBreadcrumbsBox"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="../../tuning.htm">Tuning</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../debugging_db4o.htm">Debugging db4o</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">Reading db4o File</span>
        </div>
        <p>
            <script type="text/javascript">/*<![CDATA[*/document.write('<a href="' + location.href +'">');
				document.write("Direct Link");
			document.write('</a>');/*]]>*/</script>
        </p>
        <p>
        </p>
        <h1>Reading Db4o File</h1>
        <p>For debugging, learning and teaching
purposes, the db4o file format can be modified to be (nearly ?) human readable.</p>
        <p>To do this, simply compile the sources
with Deploy.debug set to true, run an application that creates a db4o database
file and look at the file with any editor.</p>
        <p>With the Deploy.debug setting all
pointers in the database file will be readable with their physical address as a
readable number.</p>
        <p>All other slots will be identifiable by a
single character at the beginning. An index that explains the character
constants can be found in com.db4o.internal.Const4.</p>
        <p>To understand the format best, you may
want to look at the <a href="http://developer.db4o.com/ProjectSpaces/view.aspx/Db4o_Product_Design/Db4o_Core/File_Header">File
Header</a> structure and at the #readThis() methods of classes derived from
PersistentBase, like ClassMetadataRepository for instance.</p>
        <p>This functionality proved to be very
useful when db4o was originally written. By marking freespace with XXXXes a bug
in the format could be spotted immediately by visual inspection of a database
file.</p>
        <p>To navigate through a database file in
your favourite editor, it will work best if you write a macro for this editor
that allows you to mark and select a number in the database file and to hit a
button in the editor to jump to the corresponding offset in the database file
(number of characters from the beginning).</p>
        <p>Such macro for Microsoft Word is presented below:</p>
        <pre class="prettyprint" xml:space="preserve">OffsetNavigator.Vb
Sub SearchOffset()
    Dim pos As Integer
    pos = Val(Selection.Text)
    If pos = 0 Then
        MsgBox ("The selection is not a number")
    Else
        ActiveDocument.Content.Characters(pos).Select
    End If
End Sub</pre>
        <p>To make use of it, open Visual Basic Macro editor within your Word environment, create a new Macro in the Normal template and paste the code above. In order to make its usage easy assign a key sequence to call the macro command:</p>
        <ul>
            <li value="1">open Tools/Customize/Commands/Keyboard;</li>
            <li value="2"> select
"Macros" as a Category and the newly-created macro name in the Commands list;</li>
            <li value="3"> press
a new key sequence for the command and press "Assign".  </li>
        </ul>
        <p>Now you can navigate
through the human-readable db4o file using the selected key sequence.</p>
        <p>
        </p>
        <script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>