1

Je veux faire une Librairie dynamique pour l'ESTACK.
C'est hitoire d'eviter a tous les nouveaux surtout de se farcir l'ESTACK et tout le tralala pour
se faire son petit programme C qui aurait besoin de paramettre.

Voici les carateristiques :
- Parcour de l'estack 1 et 1 seule fois
- Referencement des expressions TI_Basic dans une structure
- LIST et MATRIX sont traiter comme des tableaux indexes
- une Structure SYSTEM permet de receuillir differente infos sur les Arguments
- Gestion des Tag Speciaux comme dans ExtLib

Voici ce que devrait donner grossierement un main faisant appel a la Lib

 :/* Main Function */
 :void _main(void)
 :{ 
 :
 : // Malloc Global pointers
 : if( !AllocGlobalPtr() ) goto quit;
 : 
 : // Initializing MY_SYS_INFO
 : memset(SysInfo,0,sizeof(MY_SYS_INFO));
 : 
 : // Default EXPR managment system
 : Array.mode = TIGCC_ARRAY;
 : 
 : // Estackt pointers
 : ESI argptr, save_top;
 : argptr = save_top = top_estack;
 : 
 : // Recording Parameters
 : RETVAL ret = my_SetFuncParam(argptr,PARAM_COUNT);
 : 
 : // Updating argptr
 : argptr = ret.argptr;
 : if( ret.num<PARAM_COMPULSORY ) goto quit;
 : 
 : 
 :// VOTRE CODE ICI 
 : 
 : // 
 :quit:
 : 
 : // Free Global pointers
 : FreeGlobalPtr();
 : 
 : // Erasing Parameters
 : if( !argptr ) argptr = save_top;
 : while( *argptr!=END_TAG ) argptr = next_expression_index(argptr);
 : argptr--;
 : delete_between(argptr,save_top);
 :}



Je prevois de faire 2 mode d'utilisation : avec ou sans indexation des Expression TI_Basic.
Bon j'ai pas mis les details des structure car je veux pas que vous vous ennuyiez.

-

2

ouch... j'ai pas trop compris l'interet de toutes ces lignes, mais c'est vraiment plus simple que
ESI esi = top_estack;
if (GetArgType(esi) != type_attendu)
   return;
var = Get*Arg (esi);

pour un "petit programme C qui aurait besoin de paramètres" ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

je crois que fpgforce a fait un header ou une lib statique pour faciliter l'utilisation de l'estack.
D'autre part, je ne pense pas qu'une librairie dynamique soit une bonne idée vu le nombre de programmes qui utilisent l'estack.

4

Si le tu peux, regroupe toutes tes initialisations dans une fonction mylibEstackInit et la libération des ressources dans un myLibEstackQuit (que tu peux éventuellement enregistrer avec un atexit en plus)

Ça fait plus propre pour l'utilisateur final.
avatar
Inuki POWA !
СИЛАС терженя !

5

Pardon pour le dynamique je pensait Statique. Quelqu'un peut changer le titre SVP.

Comme je l'ai dit l'exemple de code, c'est vraiment grossierrement.
Je soignerais la presentation(regroupement) plus tard.

Je ne savais pas que fpgforce avait deja fait ca.

Ou peut-on trouver ca ?

Je ne sais pas si on a envisager les choses sous le meme angle.
Mon moteur a ete concu pour faire une librairie ( ExtLiB et MyLiB ).


EDIT :

Je pense donc que ca permettra de faire une nouvelle librairie en moins de deux.
L'interet c'est surtout la gestion des structures TI_Basic LIST/MATRIX.
Mais bon c'est couteux pour un petit programme car le moteur va surement faire dans les 2.5 Ko.

A priori ca ne semble pas etre tres interessant d'offrir un moteur pareil.
C'est vrai que ca reste tres limite comme utilisation.

Je suis en train d'optimiser mon code pour reduire la taille de ExtLiB
et remplacer les fonctions inutiles par des truc plus utiles.

Je vais faire des test pour voir si ce nouveau moteur donne des meilleurs resultats
en terme de vitesse vu que les LIST/MATRIX sont indexees maintenant.

Le probleme a ce niveau c'est que j'ai du mal a me decider entre solution pour gerer la table des index de chaque parametre :
- fixer la taille maxi a 200
- faire ca automatique a coup de malloc et de free

J'ai du mal a me decider sur le choix de la methode
- allocation automatique de la table des index