#include "NativeAssetDir.h"
#include "FilePath.h"

#include <android_native_app_glue.h>
#include <sstream>
#include <stdexcept>

//////////////////////////////////////////////////////////////
namespace Dubious {
namespace Utility {

//////////////////////////////////////////////////////////////
NativeAssetDir::NativeAssetDir( AAssetManager& Manager, const FilePath& Path )
{
	m_pDir = AAssetManager_openDir( &Manager, Path.FullPath().c_str() );
	if (!m_pDir) {
	    throw std::runtime_error( "Failed to open asset dir: " + Path.FullPath() );
	}
}

//////////////////////////////////////////////////////////////
NativeAssetDir::~NativeAssetDir()
{
	AAssetDir_close(m_pDir);
}

//////////////////////////////////////////////////////////////
FilePathVector NativeAssetDir::GetContents()
{
	FilePathVector Vect;
	AAssetDir_rewind(m_pDir);
	while (const char* NextName=AAssetDir_getNextFileName(m_pDir)) {
		Vect.push_back( FilePath( NextName ) );
	}
	return Vect;
}

}
}
