begin process at 2012 02 13 19:45:28
  Trouver un code source :
 
dans
 

101 commentaire(s) de xterminhate sur des sources sur tout CodeS-SourceS

Déposé sur [win32 & linux] threads c++

A priori, la compilation ne devrait pas poser de problème. J'avais déjà MinGW au moment du développement de ce projet.
Posté le : 10/03/2010 00:34:56

Déposé sur [win32 & linux] threads c++

Actuellement, je développe avec MinGW (GCC pour Win) et j'utilise les librairies open source telles que WxWidgets. Ca me permet de faire un code assez portable tout en pouvant le compiler en 32 ou 64 bits lorsque je suis sous windows. Le support du C++ est correct.
Posté le : 09/03/2010 23:23:14

Déposé sur [win32 & linux] threads c++

VC6 est une catastrophe en terme de respect du standard C++. Je t'invite à changer de compilateur si tu en as la possibilité !
Posté le : 09/03/2010 21:48:14

Déposé sur Minxl (minimalist xml library) : générateur/analyseur/traitem...

Bonjour,

MinXL utilise le gestionnaire d'exception afin de faciliter le traitement d'un fichier XML anormal / corrompu. A mon sens, tu ne devrais donc avoir qu'un seul et unique bloc try-catch, encadrant l'appel à la fonction de "configuration" de ton application.

A partir de ce point, on suppose le fichier XML parfaitement intègre et valide. Pour simplifier l'interprétation du fichier XML par l'application, on prendra soin de choisir une structuration XML systématique. Ainsi, aucun traitement d'exception n'est a implémenter au moment de l'analyse du fichier XML.

Par exemple, le noeud <drives> comprendra un certains nombre de fils <drive> et seulement <drive>, comprenant tous un attribut "data" (renseigné ou vide). Le noed <drive> comprendra un certain nombre de fils <select>, comprenant tous un attribut "label" (renseigné ou vide). Etc.

Par conséquent, en prenant soin d'utiliser les fonctions membres child_at( size_t ), nb_children(), attribute_at( size_t ) et nb_attributes(), aucune exception ne sera levée par MinXL. Cela tend à simplifier le code la fonction "configuration" de cette application.

Pour gérer les exceptions au fil de l'analyse du fichier, dans le but de résister à une corruption partielle du fichier XML, je ne vois pas d'autre solution que de gérer les exceptions à chaque appel à MinXL avec un bloc try-catch dédié. L'autre technique serait d'utiliser le principe du C avec un retour de fonction à 0 et une fonction globale du genre get_error() afin d'obtenir une information détaillée sur la nature de l'erreur...

Effectivement, il manque une fonction pour supprimer tous les enfants d'un noeud, par exemple remove_childS(). Pour l'instant, c'est à l'utilisateur de MinXL d'implémenter une éventuelle boucle. En outre, il n'y a pas d'autre solution que de faire un boucle pour supprimer les fils un par un. Néanmoins, il est possible d'utiliser la fonction remove_child() sur le père du noeud dont on veut supprimer les fils. Attention, cela supprime également le noeud en question.

Je vais réfléchir à intégrer la fonction remove_childs() et remove_attributes() dans une prochaine révision de MinXL.

Je suis preneur de proposition pour une gestion plus souple des exceptions.

Cordialement,
Xterminhate.










Posté le : 21/08/2008 17:55:51

Déposé sur Minxl (minimalist xml library) : générateur/analyseur/traitem...

Bonjour,

Je crée un nouveau projet C++. J'ajoute les fichiers xml.hpp et .cpp. J'écris le code source suivant :

#include <iostream>
using namespace std;
#include "xml.hpp"

int main()
{
    MinXL::t_xml_node root;
    root.parse_from_file( "test.xml" );

    MinXL::t_xml_node drives = root.child_at("drives");
    size_t drive_count = drives.nb_children();
    cout << drive_count << " drives!" << endl;

    for( size_t index = 0; index != drive_count; ++index )
        cout << "Drive #" << index << " = " << drives.child_at(index).attribute_value_at("data") << endl;

    return 0;
}

J'obtiens  l'affichage suivant :

3 drives!
Drive #0 = //nas/sources
Drive #1 = //nas/demos
Drive #2 = d:/jeux

Process returned 0 (0x0)   execution time : 0.015 s
Press any key to continue.

CQFD.

Pour utiliser TinyXML, il faut vraiment aimer les pointeurs dans tous les sens... ^^

Cordialement,
Xterminhate.
Posté le : 19/08/2008 11:22:08

Déposé sur Minxl (minimalist xml library) : générateur/analyseur/traitem...

s=k->read("/Workbook/Worksheet/Table/Row/Cell/Data:0");
s=k->read("/Workbook/Worksheet/Table/Row/Cell/Data:1");
s=k->read("/Workbook/Worksheet/Table/Row/Cell/Data:2");
etc....
Posté le : 24/07/2008 17:38:16

Déposé sur Minxl (minimalist xml library) : générateur/analyseur/traitem...

Bonjour,

L'optimisation dont il est question dans le texte d'introduction est terminée. J'en tiendrai compte pour la prochaine mise à jour.

Je souhaite avancer dans l'implémentation d'une API proche de Xpath pour xml_manip.

Ta contribution est la bienvenue. J'aimerais pouvoir en discuter avec toi par email (xterminhate@wanadoo.fr).

Cordialement,
Xterm-in'Hate.
Posté le : 16/03/2008 18:56:27

Déposé sur Minxl (minimalist xml library) : générateur/analyseur/traitem...

Bonjour Christophe,

D'abord, je te remercie pour tes commentaires et conseils au sujet de ce code source.

Apres diverses formalations assez complexe pour traiter de manière optimale tous les cas, j'ai finalement modifié mon code source de la façon suivante pour garantir le bon fonctionnement sous GCC et les dernières versions de Microsoft :

#if !defined( _MSC_VER )
    typedef std::size_t size_t;
#endif // !defined(_MSC_VER)


#if !defined( _MSC_VER )
    _tmp_str.clear();
#else
    _tmp_str = "";
#endif // !defined(_MSC_VER)

Concernant la factorisation de 'copy' et 'move', la modification est un peu plus compliquée car la partie 'free' prend en argument un résultat intermédiaire de 'copy'. J'ai factorisé 'cop' et 'move' en introduisant une fonction d'implémentation déclarée privée. J'ai aussi ajouté un test clair (18bis) dans xml_test.cpp pour vérifier le comportement de 'copy' et 'move'.

Langage Xpath est très intéressant pour la classe xml_manip. Je ne le connaissais pas à l'époque de la rédaction de ce code source. Par exemple, j'utilise le "." pour accéder un attribut alors que c'est un "@" dans Xpath. Et puis il y a les opérateur de recherche.... Intéressant mais il va me falloir trouver la motivation pour me replonger a fond dans mon code pour réaliser ces évolutions.

Concernant les deux opérateurs qui se ressemblent,
- le premier permet de retourner une référence constante (accès en lecture seul d'une valeur/attribut),
- le seconde retourne un référence vers une valeur/attribut (accès en lecteur et écrite).

GCC choisit automatique le bon opérateur en fonction du contexte appelant.

La premiere formulation permet de s'affranchir d'une copie dans la plupart des cas d'utilisation. La seconde formulation a pour but de pouvoir écrire le code suivant : xmlm( "/players/number" ) = "2";

Une mise à jour de MinXL est disponible dans quelques minutes.

Cordialement,
Xterm-in'Hate.
Posté le : 16/03/2008 09:09:15

Déposé sur Classe xml ultra lite

Bonjour bAzilew,

C'est sympa de m'avoir cité dans ton projet.

Bonne continuation :-)

Xterminhate.
Posté le : 13/02/2008 11:44:31

Déposé sur Minxl (minimalist xml library) : générateur/analyseur/traitem...

Merci pour ton commentaire. Ton projet semble tres interessant. Bonne chance !
Posté le : 22/09/2007 10:48:55

1 2 3 4 5 6 7 8 9 10 11


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,435 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales