/*
 *	clipsrec.h
 *
 *	モトローラS (SREC) 形式ファイルローダー
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2015 Naoyuki Sawa
 *
 *	* Tue Nov 10 23:10:00 JST 2015 Naoyuki Sawa
 *	- 1st リリース。
 *	  clipihex.cモジュールの関数とインターフェイス互換となるように作成しました。
 *	- 参照資料:「Wikipedia - SREC (file format)」http://en.wikipedia.org/wiki/SREC_(file_format)
 *	* Wed Nov 18 21:37:53 JST 2015 Naoyuki Sawa
 *	- 'extern "C" {'〜'}'で囲みました。.cppを含むWin32プロジェクトからもインクルード出来るようにするためです。
 */
#ifndef __CLIP_SREC_H__
#define __CLIP_SREC_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
//モトローラS形式ファイルをロードします。
//[in]
//	fname		ファイル名
//	callback	アプリケーション定義のコールバック関数
//[out]
//	無し
//[note]
//	//使用例
//	unsigned char Memory[MEMORY_SIZE];
//	static void MyCallback(int addr, int data) {
//		if((unsigned)addr >= MEMORY_SIZE) DIE();
//		Memory[addr] = data;
//	}
//	void MyLoadTest() {
//		memset(Memory, -1, MEMORY_SIZE);
//		SREC_load("sample.s", MyCallback);
//	}
void SREC_load(const char* fname, void (*callback)(int addr, int data));
//モトローラS形式ファイルをロードします。(スレッドセーフ版)
// [in]
//	fname		ファイル名
//	callback	アプリケーション定義のコールバック関数
//	userdata	コールバック関数に引き渡される任意の値
//[out]
//	無し
//[note]
//	//使用例
//	static void MyCallback(int addr, int data, void* userdata) {
//		unsigned char* Memory = userdata;
//		if((unsigned)addr >= MEMORY_SIZE) DIE();
//		Memory[addr] = data;
//	}
//	void MyLoadTest() {
//		unsigned char Memory[MEMORY_SIZE];
//		memset(Memory, -1, MEMORY_SIZE);
//		SREC_load_r("sample.s", MyCallback, Memory);
//	}
void SREC_load_r(const char* fname, void (*callback)(int addr, int data, void* userdata), void* userdata);
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_SREC_H__
