vt-cs-projects / c08_gis_system / test / grading / tempdir / FIDIndex.c
FIDIndex.c
Raw
#include "FIDIndex.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 * Creates a new FIDIndex such that:
 *
 *      - FID equals the ID parameter
 *      - occuranceOffset equals the offset parameter
 *
 */
FIDIndex *FIDIndex_create(char *ID, uint32_t offset)
{
    FIDIndex *idx = calloc(1, sizeof(FIDIndex));
    idx->FID = calloc(strlen(ID) + 1, sizeof(char));
    strcpy(idx->FID, ID);
    idx->occuranceOffset = offset;

    return idx;
}

/**
 *  Allows two FIDIndex structs to be compared
 *  in order to be sorted within the arrayList implimentation
 *
 *  left and right are pointers to FIDIndex structs
 *
 *  Returns <0 if left FID is greater than right FID,
 *  >0 in the converse, and 0 if both FID's are equal
 */
int compareFIDIndex(const void *left, const void *right)
{
    const FIDIndex *pLeft = (FIDIndex *)(left),
                   *pRight = (FIDIndex *)(right);

    return (strcmp(pLeft->FID, pRight->FID));
}

/**
 * Frees the specified FIDIndex
 */
void cleanFID(void *const idx)
{
    free(((FIDIndex *)(idx))->FID);
}