int my_ucs2le_validator( const char *ucs2str, int ucs2str_length, int *bValid ) {
int err = 0; // エラー情報
charsetmanager_validator_property_ptr cvpp = NULL; // バリデーション情報格納領域
charsetmanager_validator_error_status status; // 詳細エラー情報
if( NULL == ( cvpp = charsetmanager_validator_open("UTF-16LE", &err ) ) )
// Validationの開始
return(-1); // Validation開始のエラー
if( 0 != charsetmanager_validator_set_policy_file( cvpp, "UCS2.policy", &err )) {
// バリデーションポリシーを設定
charsetmanager_validator_close( cvpp, &err );
return(-2); // ポリシー設定のエラー
}
// バリデーションの実行
if( 0 == charsetmanager_validator_validate(cvpp,
ucs2str,
ucs2str_length,
NULL,
&status,
&err) )
*bValid = 1; // 文字列は有効
else if(CHARSETMANAGER_VALIDATOR_ERROR_CODE_INVALID == err ) {
// 無効文字あり
printf( "String is not valid. index = %d, length = %d\n",
status.index,
status.invalidcodelen );
*bValid = 0;
}
else { // その他のエラー
charsetmanager_validator_close( cvpp, &err );
return(-3);
}
charsetmanager_validator_close( cvpp, &err ); // Validationの終了
return 0;
}