Donner des indices pour aider M2SCI...
%m2scideclare variable_name|sizes|data_type|property
nom de la variable déclarée.
Ce nom peut être un champ de Struct (e.g. x(1,2).nom
)
ou décrire le contenu d'une Cell en utilisant la syntaxe
x(1,2).entries
.
![]() | NOTEZ que pour les Cells et les
Structs * peut être utilisé comme index. |
Tailles de la variable déclarée, séparées par des espaces.
Si une taille est inconnue, la remplacer par ?
.
![]() | NOTER qu'une chaînes de caractères Matlab (définies entre apostrophes)
est considérée comme un vecteur de caractères adressables un à un.
En conséquence, la taille de 'string' est |1 6|
(non |1 1| ). |
Type et sous-type de la variable. Les valeurs possibles sont présentées dans la page décrivant Type.
![]() | Les valeurs de propriétés qui ne sont pas prédéfinies comme constantes
dans m2ci -- telles que 'int8' ou 'Axes' -- doivent être spécifiées
sans apostrophes ni guillements dans la ligne %m2scideclare. |
La conversion des expressions du langage Matlab en équivalent Scilab dépend notamment
du type et de la taille des objets impliqués.
Plus le convertisseur M2SCI (mfile2sci
) connait ces informations,
plus précise et directe sera la conversion.
Dés lors que les données originelles sont littéralement définies dans le
code Matlab à convertir -- comme dans l'instruction a = [1 3 5]
indiquant directement le vtype==Double, la property=Real, et la taille
|1 3|
, M2SCI sait alors tout
ce qu'il faut savoir à propos de a
pour convertir les expressions
ultérieures dans lesquelles a
intervient.
Cependant, l'information manque fréquemment. En particulier, en tête des
macros, le type et les dimensions des arguments d'entrée ne sont pas donnés (pouvoir
s'en abstenir est d'ailleurs un des avantages/soulagements des langages évolués tels
que Matlab ou Scilab).
Des lignes d'instructions %m2scideclare
peuvent être alors ajoutées
(en commentaire Matlab, donc) pour donner ces informations au convertisseur, avant de
lancer celui-ci.
Lors de la conversion, lorsqu'une ligne %m2scideclare
est rencontrée,
le convertisseur examine la liste des symboles déjà connus. Cette liste est établie
au cours de la conversion et est continuellement mise à jour, en fonction des symboles
déjà rencontrés et convertis, et des lignes %m2scideclare
antérieures
déjà prises en compte :
Si %m2scideclare
décrit une nouvelle donnée, celle-ci est
ajoutée à la liste des objets partiellement ou totalement connus.
Si l'objet décrit par %m2scideclare
est déjà connu,
le convertisseur compare les informations apportées par %m2scideclare
avec celles déjà connues.
Si ces informations coincident ou sont compatibles, le convertisseur
éventuellement complète le registre (par exemple si la property était Unknown
et est précisée par %m2scideclare
), ou ne fait rien.
Sinon, une ligne d'alerte est générée par %m2scideclare
dans le fichier converti, et les informations données par
%m2scideclare
sont ignorées.
![]() | Ce fonctionnement peut être mis à profit par les développeurs souhaitant
corriger ou étendre le convertisseur, en utilisant
%m2scideclare dans les tests : si le type, le sous-type
ou les dimensions de l'objet considéré ne sont pas ceux attendus et donnés
par %m2scideclare , l'alerte générée sera exploitée pour
corriger le convertisseur. |
Si en tant qu'utilisateur du convertisseur vous rencontrez une telle alerte
%m2scideclare
qui vous semble incompatible avec ce que
vous connaissez de votre code,
vous pouvez rapporter le cas sur https://gitlab.com/scilab/scilab/-/issues
%m2scideclare var1|2 3|Double|Real
var1 est déclarée comme une matrice de Doubles de taille 2x3 et contenant des données réelles
%m2scideclare var2|2 3 10|Double|Complex
var2 est déclarée comme une hypermatrice de Doubles de taille 2x3x10 et contenant des nombres complexes.
%m2scideclare var3(1,2).name|1 10|String|?
var3 est déclarée comme un tableau de Structs contenant une chaîne de caractères de taille 1x10 dans le champ 'name' de la Struct à l'indice (1,2)
%m2scideclare var4(1,5).entries|1 ?|Boolean|?
var4 est déclarée comme un tableau de Cells contenant un vecteur ligne de booléens à l'indice (1,5)
%m2scideclare var4(1,6).entries|? ?|Int|?
var4 est déclarée comme un tableau de Cells contenant un vecteur ligne de booléens à l'indice (1,5) et des données entières à l'indice (1,6).
%m2scideclare var5(*,*).name|1 ?|String|?
var5 est déclarée comme un tableau de Structs contenant une chaîne de caractères de taille 1xn dans chaque champ 'name'
%m2scideclare var6(2,*).entries|1 3|Double|Real
var6 est déclarée comme un tableau de Cells contenant un veteur de Doubles de taille 1x3 dans chaque élement de sa seconde ligne.
Version | Description |
< 5.0 | %m2sciassume est obsolète et est remplacée par
m2scideclare . |
6.1.1 | m2scideclare accepte tous les nouveaux vtypes et valeurs de
sous-types
Polynomial ,
Function/Macro , Function/Builtin ,
String/Char ,
Handle/'Figure' , Handle/'Axes' ,
Int/'int8' , Int/'int16' ,
Int/'int32' , Int/'int64' ,
Int/'uint8' , Int/'uint16' ,
Int/'uint32' , Int/'uint64' ,
Sparse/Boolean .
Le vtype Sparse devient effectivement utilisable. |