Lib Vector 2.1

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Lib Vector 2.1

Message 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:
Dernière modification par lionel_om le sam. 09/août/2008 11:53, modifié 3 fois.
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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
"Qui baise trop bouffe un poil." P. Desproges
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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
Dernière modification par lionel_om le sam. 09/août/2008 11:59, modifié 3 fois.
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Post supprimé.
Les exemples sont dispo dans le ZIP.
Dernière modification par lionel_om le sam. 09/août/2008 11:58, modifié 1 fois.
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 :|
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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:
Dernière modification par lionel_om le sam. 09/août/2008 11:58, modifié 1 fois.
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message 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 :) .
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Anonyme

Message par Anonyme »

Elle est ou la version Compatible linux ? le zip que j'ai télécharger n'est pas compatible avec Nux.

@++
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Anonyme

Message 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.

@++
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Anonyme

Message par Anonyme »

ok, bonne bourre :D , je verais aussi cela plus tard :D
Répondre