C++でHSPプラフインの作り方を勉強しています。
バイナリデータを返すプラグイン命令の作り方が分からないので、
質問させてもらいます。
int len = code_geti();//データの長さは、引数で指定
PVal *pval;
APTR aptr;
aptr = code_getva( &pval );
char* data = (char*)hspmalloc(len);
loaddata(data);//バイナリデータをdataにロード
code_setva( pval, aptr, HSPVAR_FLAG_STR, data);
hspfree( data );
return;
こんなかんじなのかなと、書いたソースです。
HSP側からは、sdimで予めバッファを用意して、渡しています。
でも返ってくるデータは不完全で、途中までしか代入されません。
HSPVAR_FLAG_STRで文字列扱いされているから、
バイナリデータの0の部分が終端文字扱いされてしまうのかなと、
勝手に想像しています。
これは、どう解決したら良いでしょうか?
よろしくお願いします。