コード例 #1
0
ファイル: print_tree.php プロジェクト: sibero/moosql
class ErrorPrinter
{
    function set_error($err)
    {
        echo '<b>Error:</b> ' . $err . '<br>';
    }
}
$errpr = new ErrorPrinter();
$btr = new YNBTree_gen($errpr, 2048, 4, 'l');
define('BTR_BLKSZ', 2048);
$meta = array('root' => $argv[2]);
$i = 0;
$blocks = filesize($argv[1]) / BTR_BLKSZ;
echo 'Blocks: ' . $blocks . ", BTR_BLKSZ: " . BTR_BLKSZ . "\n";
for ($i = 0; $i < $blocks; $i++) {
    list($N, $ISLEAF, $pointers, $values, $offsets) = $btr->read_block($fp, $meta, $i * BTR_BLKSZ);
    echo "Block #" . $i . " " . ($ISLEAF ? '(LEAF)' : '') . "\n-------------------------\n";
    echo "Num values: {$N}\n";
    echo "Records (pointer:value:offset:pointer:...:pointer:value:offset:pointer):\n";
    error_reporting(E_ALL & ~E_NOTICE);
    $lastpointer = $lastvalue = $lastoffset = 0.5;
    // they are int :))
    foreach ($pointers as $k => $pointer) {
        if ($lastpointer == $pointer && $values[$k] == $lastvalue && $offsets[$k] == $lastoffset) {
            echo "--end\n";
            break;
        } else {
            if ($k == $N) {
                echo 'p' . $pointer . ' --ignore--' . ':v' . $values[$k] . ':o' . $offsets[$k] . "\n";
            } else {
                if ($k > $N) {