Lib Vector

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

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

Message par lionel_om »

Merci !
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 »

Une autre question :
Avec TailBite on peut faire ça ? :

Code : Tout sélectionner

Procedure.l myProc()
  ;blabla
  if ...
     Procedurereturn 1
  endif
  procedurereturn 0
EndProc...

Procedure.l myProc_DEBUG()
  if myProc() = 0
    TB_DebugError("Erreur ...")
  endif
EndProcedure
EDIT :
Non, c'est bon g fais des tests (laborieux car j'avais oublié les "ProcedureDLL et CDLL")
Et on peut bien faire cette manip !!! :D donc c'est super pratique... :D
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.
La version 1.1 de la LIB Vector ets disponible à l'adresse suivante ici.
Vous y trouverez la liste des fonctions disponibles (36 au total).

La doc est également à jour et j'ai enlevé toutes les erreurs que j'ai rencontré. Quelques modifications et améliorations ont été apportées.
Comme pour la version 1.0, la source est fournie.

Merci de me faire part de vos remarques et suggestions.
Lionel
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 »

Elle n'intersse personne ma petite Lib ? :cry:

Dailleurs avec PB4, les listes chainées seront améliorées ???
ou ca sera toujours le même système : global ??? (pareil pour les tableaux ???)
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

lionel_om a écrit :Elle n'intersse personne ma petite Lib ? :cry:
Faudrait déjà savoir précisément à quoi ça sert, parce que j'ai beau lire et relire les posts depuis le début, j'ai toujours pas compris son utilité. :oops:
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Chris a écrit :Faudrait déjà savoir précisément à quoi ça sert, parce que j'ai beau lire et relire les posts depuis le début, j'ai toujours pas compris son utilité. :oops:
En gros c'est pour "remplacer" les listes chainées de PB qui sont globales et on doit donc réécrire chaque procédure pour chaque liste chainée utilisée.

Là, c'est donc une liste chainée générique (comme dans PB : on peut y stoquer des longs, des strings et des structures), avec beaucoup de fonctions déjà créées pour effectuer des recherches, des tris, des opérations telles que des combinaisons (combiner deux listes), etcs (cf Doc).
Bien sûr les fonctions sont le plus possible optimisées : la fonction de tri est une adaptation du QuickSort( le tri le plus rapide existant), etc...

L'EXE contient la Doc, les sources, ainsi que des exemples...

Je suis assez clair là ???
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

lionel_om a écrit :Je suis assez clair là ???
Ben...! Pas trop, mais on va faire avec! :lol:
:jesors:
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

lionel_om a écrit :En gros c'est pour "remplacer" les listes chainées de PB qui sont globales et on doit donc réécrire chaque procédure pour chaque liste chainée utilisée.
lionel_om a écrit : Là, c'est donc une liste chainée générique
Tu te contredis pas un peu ? une liste chainée pour rempalcer les listes chainées ?
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Ma lib permetd e créer des listes chainées qui seront utilisables comme PB (ms localement et globalement) avec les fonctions suivantes par exemple :
* Vector_Next()
* Vector_Prev()
* Vector_First()
* Vector_Select()
* Vector_Add()
( fonctions similaires à celles proposées par PB)
Par contre ces listes peuvent être passées en argument à une fonction (ce sui n'est pas le cas des listes PB)

Mais en plus de ces simples fonctions de gestion de liste et de déplacament, il y a aussi des fonctions de recherche, de tri, etc (comme je le décris brievement dans le post précédent).
La liste exhaustive des fonctions et le lien pour télécharger la lib ainsi que l'aide (en français) sont disponibles à cette url :
http://luchezl.free.fr/Programmation/PB ... hp?file=60
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Ca a l'air intéressant. J'ai regardé il y a un moment déjà et c'est vrai que c'est une bonne lib. Par contre, moi j'aurais besoin de listes chainées extrêmement rapide, si possible sans CALL, ou alors avec le minimum de passages sur la pile... Pas évident.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

djes a écrit :Ca a l'air intéressant. J'ai regardé il y a un moment déjà et c'est vrai que c'est une bonne lib. Par contre, moi j'aurais besoin de listes chainées extrêmement rapide, si possible sans CALL, ou alors avec le minimum de passages sur la pile... Pas évident.
les tableaux sont pas assez rapide ? :)

#schtroumpf
Dernière modification par Backup le jeu. 03/nov./2005 10:08, modifié 1 fois.
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

djes a écrit :Par contre, moi j'aurais besoin de listes chainées extrêmement rapide, si possible sans CALL, ou alors avec le minimum de passages sur la pile...
C'est quoi que tu appèle sans "CALL" ??? c'est des appels de fonctions ?
Comme j'ai donné la structure et les sources, tu peux toujours utilisés directement les commandes suivantes :
*vector\current, *vector\pos, etc... Comme ça tu empile moins.

Mais j'ai fais le maximum pour optimiser les fonctions. Si vous avez des suggestions n'hésitez pas...

Les tri et les Vector_Select() ont été optimisés au max. Je ne vois aucun moyen pour faire plus rapide... (si dans Select() je peux enlever des appels de fonctions par le même code si ca te convient mieux. Je ferais des tests sur le gain de performances...

Mais tinkiete pas, elles sont rapides... Moi je vais les utiliser dans mes futurs projets... :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.

J'ai eu un peu de temps (malgré la période d'exams finaux) et j'ai pu coder quelques fonctions supplémentaires à cette UserLib.

Maintenant, il ser apossible d'utiliser ces Vector en les associant à des structures (les SVector : Structured Vectors). Je m'explique :

Prenons la structure :

Code : Tout sélectionner

Structure Test
  a.b
  b.s
  *c.Point
  d.l
Il sera maintenant possible d'associer des champs à des sous-vecteurs : on dis que l'offset de "b" est une chaîne de caractère et l'offset de "c" est un pointeur sur une structure de 8 bits.

On pourra donc effectuer des opérations de ce type :

Code : Tout sélectionner

p.Point
bidon.Test
bidon\c = @p
; initialiation de bidon et de p

*vector.Vector = Vector_Create(SizeOf(Test))
; {création des offsets (associer les offsets avec leur type) }
; ...

Vector_Add(*vector, bidon)
; modification de bidon
bidon\c\X = 10 ; etc...
Vector_Add(*vector, bidon)
Les deux éléments du Vector seront donc différents et auront une intégrité correct.

Ainsi on pourra les utiliser très simplement et presque comme les listes chaînées de PB. Par contre le plus énorme, c'est que ces listes ne sont pas globales, mais locales.

On pourra alors facilement imaginer utiliser des SVectors pour créer des Base de Données ou gérer des structures avancées...

Plus d'info bien... La nouvelle version sera bientôt téléchargeable...

Lionel
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.
Voila le nouveau lien : Lib Vector

Vous y trouvez la liste des fonctions disponibles.
Le fichier (zip) contient également un fichier d'aide documentant toutes les fonctions.
Des exemples sont également fournis, de même que les sources.

Voila un exemple pour gérer les structures complexes :

Code : Tout sélectionner

Structure Bidon
  a.l
  b.l
  c.s
  *d.Point
  e.l
EndStructure


*list.Vector = Vector_Create(SizeOf(Bidon))

c.Point
  c\x = 123
  c\y = 321
b.Bidon
  b\a = 5
  b\b = 6
  b\c = "Coucou"
  b\d = @c
  b\e = 5


SVector_SetOffset(*list, OffsetOf(Bidon\c), #LC_TYPE_STR)
SVector_SetOffset(*list, OffsetOf(Bidon\d), SizeOf(Point))
Vector_Add(*list, b)


b\c = "Ca va ?"
b\d\x = 987
b\d\y = 789


*b.Bidon = Vector_GetValue(*list) ; <=> *a\current\info
Debug "--= Exemple 1 =--"
Debug *b\a
Debug *b\b
Debug *b\c    ; affiche "Coucou"
Debug *b\d\x  ; affiche 123
Debug *b\d\y  ; affiche 321
Debug *b\e
Debug ""

Vector_Add(*list, b)
*b.Bidon = Vector_GetValue(*list) ; <=> *a\current\info
Debug "--= Exemple 2 =--"
Debug *b\a
Debug *b\b
Debug *b\c    ; affiche "Ca va ?"
Debug *b\d\x  ; affiche 987
Debug *b\d\y  ; affiche 789
Debug *b\e
J'attends vos remarques...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Répondre