/********************************************************
 * Functions to be optimized for the CS:APP Performance Lab
 ********************************************************/

#include <stdio.h>
#include <stdlib.h>
#include "defs.h"
#include "line-versions.h"

/* 
 * Please fill in the following team struct 
 */
team_t team = {
    "unstable",                 /* Team name */

    "Andreas van Cranenburgh",  /* First member full name */
    "acranenb@science.uva.nl",  /* First member email address */

    "Tjerk Kostelijk",          /* Second member full name (leave blank if none) */
    "tkosteli@science.uva.nl"   /* Second member email addr (leave blank if none) */
};

/* 
 * line - Your current working version of draw_line
 * IMPORTANT: This is the version you will be graded on
 */
char line_descr[] = "the best one";
void line(int dim, pixel *src, pixel *dst)
{
    return aunst_line(dim, src, dst);
}

/*********************************************************************
 * register_line_functions - Register all of your different versions
 *     of the draw_line function to the driver by calling the
 *     add_line_function() for each test function. When you run the
 *     driver program, it will test and report the performance of each
 *     registered test function.  
 *********************************************************************/

void register_line_functions() 
{
    /* ... the current version is test first */
   add_line_function(&line, line_descr);
    /* ... Register intermediate results here */
    /* ... Remove the naive implementation as fast as possible,
           because testing this version takes a lot of time */
    // add_line_function(&apointer_line, POINTER_LINE_DESCR);   
    add_line_function(&aunst_line, UNST_LINE_DESCR);   
    // add_line_function(&naive_line, NAIVE_LINE_DESCR);
}

/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
/* IMPORTANT: this year (2004) the functions rotate and smooth don't
 * have to be optimized!
 * DO NOT CHANGE THE CODE BELOW THIS POINT
 */

/*
 * rotate - Your current working version of rotate
 */
char rotate_descr[] = "rotate: Current working version";
void rotate(int dim, pixel *src, pixel *dst)
{
}

/*********************************************************************
 * register_rotate_functions - Register all of your different versions
 *     of the rotate kernel with the driver by calling the
 *     add_rotate_function() for each test function. When you run the
 *     driver program, it will test and report the performance of each
 *     registered test function.
 *********************************************************************/

void register_rotate_functions()
{
    /* ... Register additional test functions here */
}

/*
 * smooth - Your current working version of smooth.
 */
char smooth_descr[] = "smooth: Current working version";
void smooth(int dim, pixel *src, pixel *dst)
{
}

/*********************************************************************
 * register_smooth_functions - Register all of your different versions
 *     of the smooth kernel with the driver by calling the
 *     add_smooth_function() for each test function.  When you run the
 *     driver program, it will test and report the performance of each
 *     registered test function.
 *********************************************************************/

void register_smooth_functions() {
    /* ... Register additional test functions here */
}
