book.c 2.32 KB
/*====================================================================
 * book.c
 *
 * Copyright 1993, Silicon Graphics, Inc.
 * All Rights Reserved.
 *
 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
 * Inc.; the contents of this file may not be disclosed to third
 * parties, copied or duplicated in any form, in whole or in part,
 * without the prior written permission of Silicon Graphics, Inc.
 *
 * RESTRICTED RIGHTS LEGEND:
 * Use, duplication or disclosure by the Government is subject to
 * restrictions as set forth in subdivision (c)(1)(ii) of the Rights
 * in Technical Data and Computer Software clause at DFARS
 * 252.227-7013, and/or in similar or successor clauses in the FAR,
 * DOD or NASA FAR Supplement. Unpublished - rights reserved under the
 * Copyright Laws of the United States.
 *====================================================================*/

#include <assert.h>
#include "ic.h"

void bookNew(ICBook *b, int order, int npredictors)
{
    int size;
    
    b->decl.declclass = ICBOOK;
    b->decl.id = objectID++;
    b->decl.offset = (void *)-1;      
    size = npredictors*order*ADPCMVSIZE;
    b->decl.size = size*sizeof(short) + 8;
    b->order = order;
    b->npredictors= npredictors;
}

void bookLayOut(ICBook *icb)
{
    ALADPCMBook *b;
    int i;
    int size;
    
    icb->decl.size = declSize((Decl *)icb);
    b = calloc(1, icb->decl.size);
    assert(b);

    b->order = icb->order;
    b->npredictors = icb->npredictors;
    size = b->npredictors*b->order*ADPCMVSIZE;
    for (i=0; i<size; i++)
        b->book[i] = icb->book[i];
    
    icb->bookp = b;
}

void bookPrint(ICBook *icb)
{
    ALADPCMBook *b = icb->bookp;
    Id          *name;
    short       *bcodes;
    int         i;
    int         j;
    
    name = findname((Decl *)icb);

    if (name) {
         printf("Book: %s\n", name->name);
    } else {
         printf("Book: \n");
    }
    
    declPrint((Decl *)icb);
    
    printf("\torder:\t\t= %d\n", b->order);
    printf("\tnpredictors:\t= %d\n", b->npredictors);
    printf("\tbook:\n\t");
    bcodes = b->book;
    for (i=0; i<b->npredictors*b->order; i++){
        for (j=0; j<ADPCMVSIZE; j++)
            printf("%6d ",*bcodes++);
        printf("\n\t");
    }
    
    printf("\n");
}

void bookWrite(ICBook *b, FILE *file)
{
    fwrite(b->bookp, b->decl.size, 1, file);
}