Page 1 sur 2

Lib Vector 2.1

Publié : jeu. 21/juin/2007 16:04
par lionel_om
Bonjour à tous.

De puis plusieurs semaines, quand j'en ai le temps, je refais une Lib de listes chaînées : Lib Vector

Toutes les fonctions disponibles sont listées ici :

Code : Tout sélectionner

; -------------------------------
; | Lib Vector (version 2 beta) |
; -------------------------------


;- Liste des fonctions disponibles

Vector_Count(*vector.Vector)
Vector_Index(*vector.Vector)
Vector_GetCurrentElement(*vector.Vector)
Vector_GetFirstElement(*vector.Vector)
Vector_GetLastElement(*vector.Vector)
Vector_SetCaseSensitiveState(*Vector.Vector, State.l) ; For String Vectors

Vector_FirstElement(*vector.Vector)
Vector_LastElement(*vector.Vector)
Vector_NextElement(*vector.Vector)
Vector_PreviousElement(*vector.Vector)
Vector_Reset(*vector.Vector)
Vector_SelectElement(*vector.Vector, Index.l)

Vector_Get(*vector.Vector, Index.l = #Vector_CurrentElement)
Vector_Set(*vector.Vector, *Object = #Null, Index.l = #Vector_CurrentElement)
Vector_SwapElements(*vector.Vector, Index1.l, Index2.l)

Vector_SetComparator(*vector.Vector, Function)
Vector_GetComparator(*vector.Vector)


Vector_CreateFromStructure(Constructor, Destructor, Comparator = #Null)
Vector_Create(Type.w)

Vector_Clear(*vector.Vector)
Vector_Free(*vector.Vector)

Vector_AddElement(*vector.Vector, *object = #Null, Index.l = #Vector_CurrentElement)
Vector_DeleteElement(*vector.Vector, Index.l = #Vector_CurrentElement)


Vector_SortOnRange(*vector.Vector, options.l, debut.l, fin.l)
Vector_Sort(*vector.Vector, options.l = #Null)


Vector_Search(*vector.Vector, *element, *index.Long = #Null)

Vector_Copy(*original.Vector)
Vector_Combine(*source.Vector, *destination.Vector)
Le principe
Lorsque l'on crée un Vector, il faut lui spécifier un constructeur et un destructeur (les types de PB par défaut sont déjà gérés, il suffit d'utiliser les constantes #String, #Long...)
Ces constructeurs doivent renvoyer un pointeurs sur une structure. Les destructeurs faire tous les FreeMemory nécessaires (dont celui sur la structure elle-même) -- (mais pour le ptr sur la structure ça sera peut-être changé).

Ensuite, lors de l'ajout d'un élément, il ne suffira plus que de passer un pointeur sur l'objet et le constructeur déclaré se chargera donc de faire tous les AllocateMemory et les recopies de données nécessaires.

De nombreuses fonctions existent déjà : Ajout, Sort, Recherche, Copie, Swap d'élément, Combinaison (ajout du contenu d'un Vector à un autre).
Beaucoup d'autres arriveront plus tard, notamment sur les chaînes de caractères...

Pour l'instant, il n'y a pas encore de Doc, mais quelques exemples suffisent à vous montrer le fonctionnement général.
Pour plus d'informations, vous pouvez toujours aller voir à quoi ressembler la version 1 : Lib Vector 1

Complément : les listes internes de PB sont largement plus rapides (5 à 7 fois), mais les Vector permettent de programmer plus rapidement, sans avoir à récrire sans arrêt des fonctions de base.

N'hésitez pas à laisser vos commentaires, impressions ou rapports de Bug.

Lionel :wink:

Publié : sam. 23/juin/2007 10:54
par KarLKoX
Aficionados de la class vector de la STL, je ne peut que te féliciter de nous proposer cette lib qui me semble juste indispensable, d'autant plus qu'elle est tres bien codé, structuré, merci :D

Publié : sam. 23/juin/2007 15:17
par lionel_om
KarLKoX a écrit :Aficionados de la class vector de la STL, je ne peut que te féliciter de nous proposer cette lib qui me semble juste indispensable, d'autant plus qu'elle est tres bien codé, structuré, merci :D
Merci de ce compliment ! :P
J'ai essayé de coder le plus propre possible afin de pouvoir être modifiée ou que n'importe qui puisse ajouter des fonctions.

Je remettrais plus de fonctions dès la semaine prochaine (exams obligent... :? )

Lio :wink:

Publié : mar. 16/oct./2007 10:17
par lionel_om
Bonjour à tous.

Voilà la nouvelle version de ma Lib Vector. Je m'en sert actuellement pour un projet de WallPaper et donc je corrige les derniers bugs restants.
Je vais mettre des exemples d'utilisation dans le le post suivant.

Voici le code :

Code : Tout sélectionner

Code supprimé.
Les sources sont dispo dans le ZIP.
/Lio

Publié : mar. 16/oct./2007 10:40
par lionel_om
Post supprimé.
Les exemples sont dispo dans le ZIP.

Publié : dim. 04/nov./2007 22:15
par lionel_om
Quelques fonctions ont été modifiées.
Le code ci-dessus a été mis à jour.

Il manque des fonctions de Mutex afin de pouvoir utiliser les Vectors sans aucun risque de bug dans des Threads. Pour l'instant seules les fonctions elle-même sont "mutexées".

Dès que j'ai du temps j'attaque la conversion avec TailBite, puis la doc !

Lio :wink:

Publié : lun. 05/nov./2007 1:12
par Dr. Dri
lionel_om a écrit :N'hésitez pas à faire parvenir vos remarques.
Lio :wink:
Ca commence à me gonfler de pas pouvoir déclarer mes listes autrement qu'en entités autonômes. Heureusement (ou malheureusement) qu'on a une bonne lib pour compenser.

Dri :|

Publié : mer. 14/nov./2007 14:28
par lionel_om
Ça y est, la version 2.0 beta est disponible.

Elle est téléchargeable : ici.

Elle contient les fichiers compilé par TailBite (donc à copier/coller dans votre répertoire PB), une documentation complète en anglais (mais très compréhensible), les sources et des exemples d'utilisation.

N'hésitez pas à faire des remarques.

Lio
:wink:

Publié : mer. 14/nov./2007 14:53
par SpaceMan
je vais l'essayer bien que j'utilise pas encore les listes chainées complexes. je crois qu'il est temps de commencer :) .

Publié : mer. 14/nov./2007 18:42
par lionel_om
Grâce à une personne du forum anglais, la Lib Vector est maintenant compatible Linux. Si quelqu'un peut convertir le Résident en version Mac ça permettrait de rendre la Lib full compatible, avec les 3 OSs (actuellement seules quelques fonctions ne sont pas fonctionnelles sous Mac OS)

Lio

Publié : ven. 16/nov./2007 12:49
par Anonyme
Elle est ou la version Compatible linux ? le zip que j'ai télécharger n'est pas compatible avec Nux.

@++

Publié : ven. 16/nov./2007 13:05
par lionel_om
Cpl.Bator a écrit :Elle est ou la version Compatible linux ? le zip que j'ai télécharger n'est pas compatible avec Nux.

@++
Je n'ai pas Linux donc je ne peux rien t'affirmer. Mais normalement elle est compatible Linux (au pire il faut la recompilée).
Le zip ne peut pas être extrait sous Nux ? Dans ce cas quel format passe (j'ai WinRar ou 7zip) ?

Lio

Publié : ven. 16/nov./2007 13:13
par Anonyme
si si , c'est pas le problème du zip , mais de la compilation en elle même, là je retourne au boulot , je regarde le problème se soir vers 22h quand je rentre.

@++

Publié : ven. 16/nov./2007 13:24
par lionel_om
Cpl.Bator a écrit :si si , c'est pas le problème du zip , mais de la compilation en elle même, là je retourne au boulot , je regarde le problème se soir vers 22h quand je rentre.

@++
Arf je pourrais pas t'aider à cette heure là par contre.
Je serais sur le chemin d'une boite pour aller ambiancer les suédoises !!!

Lio, le suédois :D

Publié : ven. 16/nov./2007 22:39
par Anonyme
ok, bonne bourre :D , je verais aussi cela plus tard :D