Revision: 230
----
Dans SepiExpressions.pas :
- Ajout d'une interface ISepiValue, qui devient base de ISepiReadableValue, ISepiWritableValue, ISepiAddressableValue, ISepiDirectValue, ISepiProperty et ISepiNilValue ;
- TSepiCastOperator travaille sur des ISepiValue au lieu de ISepiExpression ;
- Ajout de deux classes TSepiRecordFieldValue et TSepiObjectFieldValue pour gérer les champs de record et d'objet respectivement.
Revision: 229
----
Ajout dans TSepiUnitCompiler de deux méthodes GetPointerType et GetMetaClass qui permettent d'obtenir des types pointeur et meta-classe qui ne seront pas enregistrés dans l'unité.
Revision: 228
----
Propriété TSepiClass.CurrentVisibility déplacé dans TSepiMeta.
Revision: 227
----
Ajout de trois types d'expressions : l'adressage, le déréférencement, et les opération sur les types (SizeOf, TypeInfo, Low, High et Length).
Revision: 226
----
Revue des types tableau statique : ils n'enregistrent plus qu'une seule dimension, mais conserve le type d'index. Toutefois, les RTTI sont toujours créées en "court-circuitant" les imbrications de tableaux.
Revision: 225
----
- Ajout de trois méthodes Extract, Acquire et FindVarFromMemoryRef dans TSepiTempVarsLifeManager, pour gérer plus efficacement les variables temporaires ;
- Ajout d'une méthode AttachToExpression dans ISepiExpressionPart, pour demander à une part d'expression de s'attacher à une expression sous tous les IID qu'elle supporte ;
- ISepiConstantValue supprimée ; elle est remplacée par les méthodes GetIsConstant et GetConstValuePtr dans ISepiReadableValue ;
- Ajout de nouvelles classes d'expressions pour les variables globales et locales, les conversions, et les opérations arithmétiques et logiques ;
- Diverses modifications partout ailleurs dans SepiExpressions.pas.
Revision: 224
----
Ajout d'une méthode ClassImplementsInterface dans TSepiClass.
Revision: 223
----
TDynamicallyLinkedObject corrigé pour permettre d'être attaché plusieurs fois au même contrôleur (sous des IID différents).
Revision: 222
----
Ajout de deux nouvelles classes d'expressions pour les vraies constantes (et constantes littérales) et les transtypages.
Revision: 221
----
TSepiMemoryReference.SetSpace sur un meta a été découpée en deux : une pour TSepiConstant et une pour TSepiVariable, puisque c'étaient les deux seules restantes.
Revision: 220
----
- SepiExpression.pas renommée en SepiExpressions.pas ;
- Ajout dans SepiCompiler.pas de quelques méthodes diverses pour rentre plus pratique la compilation ;
- Ajout dans SepiExpressions.pas de quelques classes abstraites et non abstraites qui implémentent les interfaces.
Revision: 219
----
- Correction de l'enregistrement/chargement de TSepiVariable ;
- TSepiConstant peut maintenant être créé sans valeur, et son enregistrement/chargement est géré de la même façon que TSepiVariable ;
- TSepiMethod enregistre et charge maintenant ses enfants.
Revision: 218
----
Dans ScSerializer.pas, les deux routines WriteDataToStream et ReadDataFromStream ont été surchargées pour traiter de façon plus homogène les types qui n'ont pas de RTTI.
Revision: 217
----
- Ajout d'une unité SepiExpressions.pas avec des interfaces représentant les principales actions pouvant être faites sur des expressions Sepi ;
- Ajout d'une classe TSepiTempVarsLifeManager pour gérer plus facilement la vie de variables temporaires à travers les récursions dans la compilation des expressions ;
- Ajout de la licence dans SepiCompilerConsts.pas et SepiCompilerErrors.pas.
Revision: 216
----
- Ajout dans TSepiInstruction d'une propriété SourcePos et d'une méthode MakeError pour gérer les erreurs de compilation plus facilement ;
- Ajout d'une interface ISepiExpression et de son implémentation TSepiExpression pour la gestion des expressions.
Revision: 215
----
Ajout d'une SepiCompilerErrors.pas pour gérer les erreurs de compilation.
Revision: 214
----
Ajout d'une méthode CopyData dans TSepiType, raccourci pour la routine du même nom dans ScTypInfo.pas sur un type Sepi.
Revision: 213
----
Dans TSepiMemoryReference :
- Ajout d'une méthode Seal qui permet de sceller une référence mémoire, interdisant ainsi toute modification ultérieure ;
- Ajout de deux méthodes CanRemoveDereference et RemoveDereference qui permettront d'éviter des LoadAddress non nécessaires ;
- Ajout d'un constructeur Clone qui copie une référence mémoire, son statut de scellée exclu.
Revision: 212
----
Transformation complète du système de gestion des variables locales :
- Au lieu d'être des TSepiField dans un TSepiRecordType, elles sont des TSepiLocalVar dans un TSepiLocalVariables, en relation 1 pour 1 avec TSepiMethodCompiler ;
- Les paramètres sont intégrés aux variables locales ;
- Les variables locales proposent la gestion de leur vie - actuellement c'est sans effet, mais TSepiLocalVariables.AllocateOffsets devrait être récrit plus tard pour intégrer un algorithme d'allocation des données qui pourra en tenir compte ;
- Puisque les variables locales ne se voient affecter un offset qu'après la compilation (mais avant assemblage), le TSepiMemoryReference a dû retenir plus longtemps une référence à la TSepiLocalVar, ce qu'il fait désormais.
Revision: 211
----
Ajout dans ScTypInfo.pas d'une routine AreInitFinitCompatible qui permet de tester si deux types sont compatibles entre eux au niveau de l'initialisation/finalisation.
Revision: 210
----
Ajout d'une unité ScInterfaces.pas avec des interface et classes prévues pour la gestion d'interfaces liées dynamiquement à un contrôleur. C'est une version dynamique de la construction "implements".
Revision: 209
----
Ajout dans la SCL d'une unité ScIntegerSets.pas, avec une classe TScIntegerSet qui représente un ensemble d'entiers longs.
Revision: 208
----
Tout ce qui était appelé assembleur Sepi a été renommé en compilateur Sepi, suite aux derniers changements.
Revision: 207
----
- Ajout de quelques constantes ensemble de TSepiBaseType dans SepiOpCodes.pas.
Revision: 206
----
- Retrait du "support" des QWord, ainsi que du support des sar ;
- Ajout d'une routine ConversionExists dans SepiRuntimeOperations.pas permettant de savoir si une conversion est supportée.
Revision: 205
----
Restructuration des instructions dans l'assembleur, afin de pouvoir aussi utiliser des instructions non assembleur.
Revision: 204
----
- Ajout de 4 fonctions InitializeValue, FinalizeValue, NewValue et DisposeValue dans TSepiType ;
- Revue de la sérialisation des valeurs des variables (utilisation de ReadDataFromStream et WriteDataToStream).
Revision: 203
----
Le constructeur TSepiType.Clone n'est plus abstrait mais déclenche une exception ESepiError.
Revision: 202
----
Ajout du support de la création de sous-types énumérés.
Revision: 201
----
Ajout du support de clonage de type.
Revision: 200
----
Prise en charge des types énumérés compilés avec {$MINIMUMSIZE} différent de 1.
Revision: 199
----
- Ajout d'une propriété Tag dans TSepiMeta ;
- Ajout de la possibilité de charger des unités natives via LoadFromStream ;
- Correction d'un bug grave qui avait lieu lorsqu'un exception était levée durant le chargement d'une unité.
Revision: 198
----
- Dans TSepiMeta : ajout d'une méthode protégée ReAddChild et d'une propriété publique WasForward ;
- Correction d'un bug dans SepiFindMetaClass ;
- Ajout de deux méthodes ValueAsInteger et ValueAsCardinal dans TSepiOrdType ;
- Correction d'un bug de la propriété DefaultValue e TSepiProperty ;
- Correction d'un bug de numérotation des méthodes surchargées.
Partager