本文整理汇总了C++中WolframLibraryData::UTF8String_disown方法的典型用法代码示例。如果您正苦于以下问题:C++ WolframLibraryData::UTF8String_disown方法的具体用法?C++ WolframLibraryData::UTF8String_disown怎么用?C++ WolframLibraryData::UTF8String_disown使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WolframLibraryData
的用法示例。
在下文中一共展示了WolframLibraryData::UTF8String_disown方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reverseString
DLLEXPORT int reverseString(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res)
{
mint i = 0, len = 0, n;
if (string)
libData->UTF8String_disown(string);
string = MArgument_getUTF8String(Args[0]);
while (string[len]) {
/* Error for non ASCII string */
if (string[len] & 128) return LIBRARY_FUNCTION_ERROR;
len++;
}
n = len/2;
len--; /* For index origin 0 */
for (i = 0; i < n; i++) {
char ci = string[i];
string[i] = string[len - i];
string[len - i] = ci;
}
MArgument_setUTF8String(Res, string);
return 0;
}
示例2: encodeString
DLLEXPORT int encodeString(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res)
{
mint i = 0, shift;
if (string)
libData->UTF8String_disown(string);
string = MArgument_getUTF8String(Args[0]);
shift = MArgument_getInteger(Args[1]);
/* Find shift mod 127 so we only
deal with positive numbers below */
shift = shift % 127;
if (shift < 0)
shift += 127;
shift -= 1;
while (string[i]) {
mint c = (mint) string[i];
/* Error for non ASCII string */
if (c & 128) return LIBRARY_FUNCTION_ERROR;
c = ((c + shift) % 127) + 1;
string[i++] = (char) c;
}
MArgument_setUTF8String(Res, string);
return 0;
}
示例3: countSubstring
DLLEXPORT int countSubstring(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument Res)
{
char *instring = MArgument_getUTF8String(Args[0]);
char *substring = MArgument_getUTF8String(Args[1]);
mint i, n = strlen(instring);
mint slen = strlen(substring);
mint c = 0;
if (n > slen) {
n -= slen;
for (i = 0; i <= n; i++) {
if (!strncmp(instring + i, substring, slen)) {
c++;
}
}
}
MArgument_setInteger(Res, c);
libData->UTF8String_disown(instring);
libData->UTF8String_disown(substring);
return 0;
}
示例4: sizeof
EXTERN_C DLLEXPORT int read_raw_image(WolframLibraryData libData, mint Argc, MArgument *Args, MArgument res) {
int err;
int check;
MImage out;
char * file;
libraw_data_t *iprc = libraw_init(0);
libraw_processed_image_t * img;
WolframImageLibrary_Functions imgFuns = libData->imageLibraryFunctions;
err = LIBRARY_FUNCTION_ERROR;
file = MArgument_getUTF8String(Args[0]);
libraw_open_file(iprc, file);
libraw_unpack(iprc);
iprc->params.output_bps = 8;
check = libraw_dcraw_process(iprc);
if (check != LIBRAW_SUCCESS) goto cleanup;
img = libraw_dcraw_make_mem_image(iprc, &check);
if (img == NULL) goto cleanup;
if (img->type != LIBRAW_IMAGE_BITMAP || img->colors != 3) goto cleanup;
if (img->bits == 16) {
raw_t_ubit16 * raw_data = (raw_t_ubit16*)img->data;
imgFuns->MImage_new2D(img->width, img->height, 3, MImage_Type_Bit16, MImage_CS_RGB, 1, &out);
memcpy(imgFuns->MImage_getBit16Data(out), raw_data, img->width * img->height * 3 * sizeof(raw_t_ubit16));
} else if (img->bits == 8) {
raw_t_ubit8 * raw_data = (raw_t_ubit8*)img->data;
imgFuns->MImage_new2D(img->width, img->height, 3, MImage_Type_Bit8, MImage_CS_RGB, 1, &out);
memcpy(imgFuns->MImage_getByteData(out), raw_data, img->width * img->height * 3 * sizeof(raw_t_ubit8));
} else {
goto cleanup;
}
MArgument_setMImage(res, out);
err = LIBRARY_NO_ERROR;
cleanup:
libData->UTF8String_disown(file);
libraw_dcraw_clear_mem(img);
return err;
}
示例5: WolframLibrary_uninitialize
DLLEXPORT void WolframLibrary_uninitialize(WolframLibraryData libData)
{
if (string)
libData->UTF8String_disown(string);
}