Page 1 of 1

tivars library (PHP, C++, JS)

Unread postPosted: 11 Oct 2015, 07:24
by Adriweb
Vers mi-septembre, j'avais commencé à écrire une bibliothèque PHP ("tivars_lib") pour interagir (lire, créer, modifier...) avec les fichiers des variables des TI-z80 (programmes, listes, matrices, nombres...) :


Cette bibliothèque est open source et disponible sur GitHub.
Elle sert notamment sur TI-Planet par exemple pour afficher le code-source des programmes TI-Basic, et est aussi utilisée pour le projet de convertisseur en ligne de programmes.

Il y a 2 jours, j'ai entamé le portage en C++ de cette bibliothèque, qui fonctionne désormais :


Et tout à l'heure... je l'ai fait compilé avec succès par Emscripten, ce qui en donne donc une version JavaScript :

(Ce n'est pas réellement utilisable pour le moment puisqu'il manque des bindings JS, mais c'est normalement vite faisable, ça)

Bref, voici enfin une solution open source pour faire ce que vous voulez en ligne (ainsi qu'hors-ligne, mais pour ça, il existait déjà des choses) :)
Pour des exemples d'utilisation, référez-vous au fichier de tests qui devrait vous mener sur le bon chemin (je ferai une doc plus tard).

Si vous souhaitez contribuer pour faire supporter plus de types de fichiers, regardez ici par exemple pour les nombres réels (et par ailleurs, pour les formats, cf. par ici)

Re: tivars library (PHP, C++, JS)

Unread postPosted: 18 Sep 2016, 14:09
by Adriweb
Updates:
- Gros refactor aujourd'hui pour vraiment simplifier les choses au niveau des TypeHandlers :)
- Handlers pour RealList (fait), et Matrix (en cours)

Re: tivars library (PHP, C++, JS)

Unread postPosted: 08 Oct 2016, 16:14
by Adriweb
Update encore :
- Version PHP "terminée" au niveau des vartypes que j'avais prévu de gérer, en lecture et écriture, sauf pour les vartypes exacts (de la 83PCE), où je ne gère que la lecture pour le moment.

Du coup, la version C++ devrait être mise à jour relativement bientôt pour elle aussi avoir ces nouvelles fonctionnalités...

Cela dit, comme rappelé dans le readme que je viens d'écrire, il manque encore par exemple la gestion des varnames spécifiques à certains types de vartypes (pour les listes, matrices...) ; et évidemment, quelques trucs encore à améliorer par ci par là, même si ce n'est pas forcément "crucial".

Re: tivars library (PHP, C++, JS)

Unread postPosted: 08 Oct 2016, 18:21
by Wistaro
Cool merci :)

Beau travail.

Re: tivars library (PHP, C++, JS)

Unread postPosted: 09 Oct 2016, 00:38
by Adriweb
Voila, c'est bon sur tivars_lib_cpp, et j'ai aussi mis à jour ça sur CEmu.

Re: tivars library (PHP, C++, JS)

Unread postPosted: 01 May 2017, 23:10
by Adriweb
Un certain nombre d'updates depuis le dernier post, mais en gros :
- Des bugfix: https://github.com/adriweb/tivars_lib/commits/master
- Support des AppVar: https://github.com/adriweb/tivars_lib/b ... H_0x15.php
- Build emscripten (asm.js / wasm) remi d'aplomb: https://github.com/adriweb/tivars_lib_c ... f5ebe6392f
...

Image

Donc... je vais voir du coté de EmBind pour les bindings JS tant promis :P
Peut-être, durant cette semaine, une démo d'un champ de texte HTML -> tivars_lib -> 8xp d'un viewer de texte (cf. par ici) ? ;)

Re: tivars library (PHP, C++, JS)

Unread postPosted: 29 Jul 2017, 12:56
by Adriweb
Comme remarqué par Epharius, il n'y avait pas de moyen pour mettre le flag d'archive sur un fichier (pour qu'il se transfère par défaut dans la Flash et non dans la RAM).

C'est désormais corrigé, avec une nouvelle méthode setArchived(bool) dans la classe TIVarFile.

Commits: lib PHP, et lib C++/JS.

Re: tivars library (PHP, C++, JS)

Unread postPosted: 29 Jul 2017, 14:40
by Epharius
Super merci ! C'est une bonne chose de faite :bj:

Re: tivars library (PHP, C++, JS)

Unread postPosted: 05 Nov 2017, 20:06
by Adriweb
Quelques commits aujourd'hui après avoir passé un certain nombre d'heures à débugger un crash qui venait plus ou moins du compilateur (enfin, de gcc/libstdc++, car avec clang/libc++, tout allait bien). Cela dit, mon code dépendait par hasard d'une optimisation (copy elision / RVO) et j'aurais pu rendre les choses plus clair/justes pour le compilateur (move et copy ctor) pour que donc ça marche dans tous les cas :D
Bref, ça fonctionne mieux sur davantage de plateformes désormais.

Cf les commits.

Je me suis rendu compte de tout ça après avoir rajouté des builds automatiques via Travis sur le repo, d'ailleurs.
(Au passage, je rappel qu'il faut GCC 4.9 ou clang 3.6 minimum, car sinon les regex sont cassées, et ça ne compile pas).