[Question bete surement] Existe t il des variantes de memcpy() ?
Bonjour,
J utilise actuellement Matlab (vous devez vous demander ce que je fais la...lool mais je vous explique...) avec Simulink et GUIDE.
J ai un modele Simulink que je compile et obtiens du code C, C++ et un dll.
J utilise des fonctions pour controler via Matlab mon dll directement.
Bien evidemment je dois ameliorer le code C, C++ pour pouvoir le faire fonctionner correctement...
En realite, je cherche a obtenir des parametres de ce dll et les envoyer dans l environnement Matlab...
Pour cela, mes amis les pointeurs sont la...youpiii j en raffole...:aie:
Mon probleme est qu'entre ma source (le code C,C++) et ma destination (Matlab variable) j utilisais la fonction memcpy() mais elle ne supporte que des void * !!! Et moi je ne veux lui renvoyer que des DOUBLE sachant qu a la source j ai des types de parametres du genre SS_UINT8, SS_UINT16, SS_INT8, SS_INT16...etc
Voila donc ma question : existe t il une fonction qui copie (comme memcpy()) et qui CONVERTIT egalement ds le type desire (DOUBLE ici)...? 8O
OU dois je tout coder a la main avec des pointeurs ? :bug:
Merci d avance pour vos reponses...
Simplement pour vous montrer comment j l utilise je mets un ptit bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| case SS_UINT8 :
if (isComplex)
{
/* If is Complex and SS_INT32, the data type is unhandled */
mexPrintf("Unhandled Data Type: Complex values");
}
else
{
uint8_T* paramVal = (uint8_T *) paramAddress;
// ret est un pointeur sur un
// tableau contenant des infos sur le parametre
// mxGetData nous permet de pointer vers le tableau specifique
void *start_of_pr = mxGetData(ret);
size_t bytes_to_copy = numRows * numCols *(size_t)mxGetElementSize(ret);
// memcpy(destination,source,number_of_bytes)
memcpy(start_of_pr, paramVal, bytes_to_copy);
}
break; |