#ifndef INCLUDED_CMUSICPLAYER
#define INCLUDED_CMUSICPLAYER

#include <string>
#include <iostream>
#include <stdio.h>

//#include "oal.h"

/*
#include <ogg/ogg.h>
#include <vorbis/codec.h>
#include <vorbis/vorbisfile.h>
*/

/*
struct SOggFile
{
    char *dataPtr;
    size_t dataSize;
    size_t dataRead;
};

const size_t RAW_BUF_SIZE = 32*KB;
const int NUM_SLOTS = 3;

*/

class CMusicPlayer
{
public:
    CMusicPlayer(void);
    ~CMusicPlayer(void);
    void Open(char *filename);
    void Release();
    bool Play();
    bool IsPlaying();
    bool Update();

protected:  
//  bool Stream(ALuint buffer);
    void Check();
    void Empty();
    std::string ErrorString(int errorcode);

private:
    bool is_open;
        // between open() and release(); used to determine
        // if source is actually valid, for isPlaying check.
/*
    SOggFile memFile;

    Handle hf;

    struct IOSlot
    {
        ALuint al_buffer;
        Handle hio;
        void* raw_buf;
    };
    IOSlot slots[NUM_SLOTS];
*/
//  ALuint source;
};

#endif