Page 2 sur 3

Publié : mar. 13/janv./2009 18:52
par cha0s
Petit news histoire de donner des nouvelles.

Le précompilateur et a moité fonctionnelle, le PureObjet a ma sauce ne lui fait pas peur.

Un petit exemple :

Code : Tout sélectionner

Class Test  Extends Chose
	Structure
		test.b
		name.s
	EndStructure
	#test = 10
	#test2="salut sava?"
	
	Procedure.i test3()
		*this\name = "salut"
	Endprocedure
	
	Procedure.i test2()
		Protected *test.Test = New Test()
		*test\test = 2
      *test.test3()
	Endprocedure
EndClass
Pour ce qui est de l'éditeur je suis en train d'ajouter les options.

Publié : lun. 02/févr./2009 13:25
par cha0s
Premier programme compilé sous Chronos
Image
rien d'exceptionnel, j'ai ajouté les options de compilation, le choix des couleurs (syntaxe ....) et plein de petite chose.

Une version stable a dl dans quelques jours.

Publié : lun. 02/févr./2009 13:37
par Progi1984
Tu pourrais pas réduire tes images de moitié de facon que ca rentre dans tous les résolutions.

Bon boulot :)

Publié : ven. 06/févr./2009 9:44
par Anonyme
Any news ?

Publié : ven. 06/févr./2009 13:48
par cha0s
je suis en train de retravailler les projets en ajoutant la liste des structure commentaire procédure et classes et au passage je transforme l'autocomplétion car pour l'instant je balance tout la liste des procédures, structures ou autre sans analyse du code.

note amusante je suis obligé de recompiler Chronos sous Chronos car l'IDE officiel refuse pour je ne sait quelle raison de me mettre une icône et d'activer les thèmes XP.

La beta arrive bientôt mais je n'ai pas encore retouché le précompileur.

j'ai aussi arrêté d'utiliser la liste des structures et procédures dans un fichier je demande directement au(x) compilateur(s).

Publié : mer. 18/févr./2009 23:23
par Progi1984
Pour l'intégration de Moebius, regarde le code source de l'addon MoebiusGUI.

Tiens moi au courant si c'est facilement intégrable :)

Publié : jeu. 19/févr./2009 12:34
par cha0s
j'ai survolé les sources et sa me semble facilement utilisable et dans le pire des cas je passerais en ligne de commande. Mais d'abords il me faut finir le precompilateur maintenant que mon PureBasicObject est normalisé et finir les principales fonctions de L'IDE.

Publié : ven. 20/févr./2009 14:52
par Progi1984
Dans le pire des cas, hésite pas à revenir vers moi. Je t'aiderais et cela me permettra d'améliorer mon code et de rendre l'intégration plus facile d'accès, ce qui ne sera dans aucun des cas un mal.

Publié : ven. 06/mars/2009 19:47
par cha0s
News :o

La version 1 du précompilateur est presque terminé reste quelques petits ajustement.

Chaque version du précompilateur sera rétro compatible c'est a dire qu'un code de la version 1 tournera sur la version 2 (pas l'inverse hein :lol:). chaque version verra son lot d'amélioration selon mon temps disponible.

Pour ceux qui ignore totalement ce qu'est la POO regardez l'exemple c'est plus parlant.

Pour l'instant :
-Héritage Simple.
-Typage statique obligatoire, un pointeur -> un objet (si il a été instancié bien sur).
-Attribut de classe avec possible valeur par défaut qui sont ajouté directement dans le constructeur.
-Code généré structuré (cependant si c'est codé a LaRache sa compilera pas je suis pas magicien ^^').


et c'est tout (oui c'est juste pour le moment)

Point noir :
-c'est de la précompilation donc certaine notion de l'encapsulation ne verront jamais le jour.
-dim et list non supporté pour l'instant a moins de ne pas les utiliser comme pointeur.
-sa doit être bugé dans certain cas tout le monde ne code pas comme moi ^^'.
-c'est pas encore super optimisé (mais sa l'est quand même un peu hein).
-heu.. ?


Un exemple une classe pour faire des tableaux dynamique (qui sera intégré dans l'api de chronos. Pourquoi ?, Parce que on peut pas utiliser de DIM ou LIST dans une structure et sans structure c'est pas de la POO).

Code : Tout sélectionner

;===========================================================
;lib Array
;===========================================================
Class Array
	*ptr = AllocateMemory(1)
	number.i = 0
	
	
	Procedure CountElement()
	  ProcedureReturn *this\number
	EndProcedure
	
  Procedure SetElement(number.i, *Element)
  	If number > *this\number
  	*this\number = number
  	*this\ptr = ReAllocateMemory(*this\ptr, number * SizeOf(integer))
  	EndIf
  	PokeI(*this\ptr + (number-1) * SizeOf(integer), *Element)
  EndProcedure
  
  Procedure AddElement(*Element)
  	*this.SetElement(*this\number+1, *Element)
  	ProcedureReturn *this\number
  EndProcedure

  Procedure FreeElement(number.i)
  	If *this\number = 1
  	  *this\number = 0
  	Else
  	  If number < *this\number
  	    CopyMemory(*this\ptr + SizeOf(integer)*number,  *this\ptr + SizeOf(integer)*(number - 1), SizeOf(integer)*(*this\number-number))
  	  EndIf
  	  *this\number - 1
  	  *this\ptr = ReAllocateMemory(*this\ptr, *this\number * SizeOf(integer))
  	EndIf
  EndProcedure
  
  Procedure GetElement(number.i)
  	If number <= *this\number
      ProcedureReturn PeekI(*this\ptr + (number-1) * SizeOf(integer))
  	Else
  	  ProcedureReturn 0
  	EndIf
  EndProcedure

  Procedure RemoveAll()
  	*this\number  = 0
  	*this\ptr = ReAllocateMemory(*this\ptr, 1)
  EndProcedure
  
  Procedure Free()
  	FreeMemory(*this\ptr)
  	FreeMemory(*this)
  EndProcedure
EndClass
ce qui génère en fichier principal

Code : Tout sélectionner

;===========================================================;
;                                                           ;
; Main File : main.pb                                       ;
; Code generated by Chronos Precompiler                     ;
;                                                           ;
;===========================================================;

EnableExplicit ;Variable declaration enable

IncludeFile "Constant.pbi"
IncludeFile "Structure.pbi"
IncludeFile "Variable.pbi"
IncludeFile "Macro.pb"
IncludeFile "Declaration.pb"
IncludeFile "Procedure.pb"
le fichier Structure.pbi

Code : Tout sélectionner

;Class Array
Structure Array
	*ptr.i
	number.i
EndStructure
le fichier Declaration.pb

Code : Tout sélectionner

;Class Array
Declare.i Array_CountElement(*this.Array)
Declare.i Array_SetElement(*this.Array,number.i,*Element.i)
Declare.i Array_AddElement(*this.Array,*Element.i)
Declare.i Array_FreeElement(*this.Array,number.i)
Declare.i Array_GetElement(*this.Array,number.i)
Declare.i Array_RemoveAll(*this.Array)
Declare.i Array_Free(*this.Array)

declare.i New_Array()
et enfin le fichier Procedure.pb

Code : Tout sélectionner

;Class Array

Procedure.i Array_CountElement(*this.Array)
	ProcedureReturn *this\number
EndProcedure

Procedure.i Array_SetElement(*this.Array,number.i,*Element.i)
	If number>*this\number
	*this\number=number
	*this\ptr=ReAllocateMemory(*this\ptr,number *SizeOf(integer))
	EndIf
	PokeI(*this\ptr+(number-1)*SizeOf(integer),*Element)
EndProcedure

Procedure.i Array_AddElement(*this.Array,*Element.i)
	Array_SetElement(*this,*this\number+1,*Element)
	ProcedureReturn *this\number
EndProcedure

Procedure.i Array_FreeElement(*this.Array,number.i)
	If *this\number=1
	*this\number=0
	Else
	If number<*this\number
	CopyMemory(*this\ptr+SizeOf(integer)*number,*this\ptr+SizeOf(integer)*(number-1),SizeOf(integer)*(*this\number-number))
	EndIf
	*this\number-1
	*this\ptr=ReAllocateMemory(*this\ptr,*this\number *SizeOf(integer))
	EndIf
EndProcedure

Procedure.i Array_GetElement(*this.Array,number.i)
	If number<=*this\number
	ProcedureReturn PeekI(*this\ptr+(number-1)*SizeOf(integer))
	Else
	ProcedureReturn 0
	EndIf
EndProcedure

Procedure.i Array_RemoveAll(*this.Array)
	*this\number=0
	*this\ptr=ReAllocateMemory(*this\ptr,1)
EndProcedure

Procedure.i Array_Free(*this.Array)
	FreeMemory(*this\ptr)
	FreeMemory(*this)
EndProcedure

Procedure.i New_Array()
	protected *this.Array = AlocateMemory(SizeOf(Array))
	*this\ptr = AllocateMemory(1)
	*this\number = 0

	ProcedureReturn *this
EndProcedure
et c'est tout, je peut donc avec le précompilateur coder de la manière suivante

Code : Tout sélectionner

  Define.Array *MonTableau
  MonTableau = New Array()
  *MonTableau.AddElement(24)
  Debug *MonTableau.CountElement()
  *MonTableau.FreeElement(1) ;on enlève l'élément 1
  *MonTableau.Free();on libère les ressources

Publié : mer. 11/mars/2009 22:14
par cha0s
Update

Version 0.9.3.11

-precompilateur V1 ^^'
-gestion des projets amélioré (mais sa reste encore très léger)
-beaucoup plus stable
-utilisation du debugger externe


Question templates et projet j'ai abandonné le format des fichiers pour utiliser le XML. Je me demande d'ailleurs pourquoi j'ai pas commencé avec.

attention actuellement le precompilateur ne supporte que des classes dont la structure est assez simple. Les procédures simple ne sont pas supporté et les directives de compilation sont a manipuler avec précaution.

Si vous utilisez le precompilateur j'ai rajouté un mot clée :

Code : Tout sélectionner

IncludeImport <chaine de caractère>
Usage IncludeImport "dossier1.[dossier2.[dossier3.]]nom de la bibliothèque"
pour faire appelle au classes du dossier API de chronos
pour l'instant une seul librairie qui est Array pour utiliser des tableaux dynamique dans une structure.

Pour ce qui est de la creation de classe c'est comme ceci

Code : Tout sélectionner

Class MaClasse
  structure1.l
  structure2.l

  static procedure MaMethode2()
    ;action
  endprocedure

  procedure  MaMethode()
    *this\structure1 = 42
  endprocedure 
EndClass

define.MaClass *ptr
*ptr = New MaClasse()
*ptr.MaMethode()
MaClasse::MaMethode2()
la version 64bits ne fonctionne toujours pas une fois compilé pour une raison que j'ignore (elle compile c'est déjà bien xD).

Et enfin j'ai commencé une doc qui n'est pas encore disponible.

Publié : mer. 08/avr./2009 0:03
par cha0s
C'est la crise, plein de boulot et bientôt les exams mais qu'importe Chronos avance :lol:. En ce jours il est capable de se compiler sous lui même (j'ai intégré directement le précompilateur) en code OO et le pire c'est que c'est stable.

Par conséquent une version BETA a vernir si je trouve le temps (disons que j'ai d'autre priorité mais je peut pas m'empêcher de coder en pure ^^').

Image

Publié : mer. 08/avr./2009 6:01
par Progi1984
Ca avance petit à petit.

Bien joué, @ bientot :)

Publié : sam. 02/mai/2009 7:32
par Thyphoon
des news ?

Pour info quand je créer un projet.. j'ai en permanance le message d'erreur
"Ilegal string founded in the name" même si il n'y a qu'une lettre... Je suppose que ça doit être un vieux bug déjà corrigé. j'ai testé là 9.3.11
En tout cas j'attends la prochaine version avec impatience

Publié : sam. 02/mai/2009 7:39
par cha0s
le précompilateur étant totalement fonctionnel je suis en train de stabiliser le produits pour une béta. Si j'ai le temps la béta devrait être dispo cette aprem ou demain. Je suis justement a la création de projet que je vait remanier un peu.

Publié : sam. 02/mai/2009 8:00
par Thyphoon
cha0s a écrit :le précompilateur étant totalement fonctionnel je suis en train de stabiliser le produits pour une béta. Si j'ai le temps la béta devrait être dispo cette aprem ou demain. Je suis justement a la création de projet que je vait remanier un peu.
excellent ! j'ai hate de tester ça !!