IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Checker un GOBJECT


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut Checker un GOBJECT
    Bonjour,

    Comment vérifier la qualité d'un pointeur dont l'origine est indéterminé ?
    À savoir s'il s'agit bien d'un G_OJECT (ou dérivé) ?

    Exemple OK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    GtkWidget *widget;
    gboolean b;
    widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    b = G_IS_OBJECT (widget);
    /* b -> TRUE */
    Exemple KO :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    gchar *str = "bob";
    gboolean b;
    b = G_IS_OBJECT (str);
    /* plantage de la libgobject */
    Je voudrais donc pouvoir vérifier que l'objet que je reçois est bien un G_OBJECT (ou dérivé) et non autre chose (car ce n'est évidemment pas moi qui l'envoie).
    Un moyen ?

  2. #2
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut
    Je n'ai pas l'habitude de travailler directement avec les gobjects, donc des personnes plus compétentes pourrons sans doute te donner des avis plus pertinents.

    J'ai rapidement parcouru la doc, et il me semble que G_TYPE_IS_OBJECT() pourrai peut être faire l'affaire.

    Sinon, si tu n'a aucune idée de ce que tu reçois, il me semble que la seule méthode est de mettre en place provisoirement une capture du signal d'erreur provoqué par le test.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Merci.

    G_TYPE_IS_OBJECT pose la même difficulté en admettant un GType en argument. La conversion d'un char* par exemple en GType plantera de la même façon.

    Je ne devrais recevoir que des GObject, mais ce n'est pas moi qui les envoie. Une erreur volontaire ou non de l'émetteur peut m'envoyer autre chose qui peut provoquer un crash de l'application.

    Pour l'heure, j'ai mis un contrôle des objets en amont de leur cast en GObject, via des procédures internes à l'application mais je ne suis pas certain d'éliminer toutes les failles possibles ...

    C'est pourquoi s'il y avait un moyen pour qu'une macro ou une fonction GObject me renvoie un simple booléen, ce serait une grose épine en moins.

    Je vais voir du côté de la gestion du signal d'erreur, s'il y a un moyen.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Je ne suis pas un expert en GObject, je suis à peu près sûr que c'est faisable, mais je n'ai pas trouvé rapidement comment. Le mieux, si tu te débrouilles un peu en anglais, serait que tu poses ta question sur la mailing list gtk-app-devel-list. On est intéressés aussi par la réponse .

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Héhé, pas de surprises. GObject rajoute bien une couche pour de la POO mais ça reste du C ...!

  6. #6
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Ok, donc je me suis gourré, ne n'est pas possible. Pour être exhaustif, je mets le lien vers ton fil de discussion:
    http://mail.gnome.org/archives/gtk-a.../msg00099.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. GObject et action à la pression d'une touche
    Par MrArtichaut dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 25/04/2006, 11h31
  2. Cherche script PHP de "proxy checker"
    Par ddubois dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 27/03/2006, 00h05
  3. [MFC] Checker plusieurs bouton en une fois
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 08/03/2006, 17h10
  4. [MFC]checker me contenu d'un CEdit
    Par tus01 dans le forum MFC
    Réponses: 5
    Dernier message: 06/02/2006, 17h15
  5. Vérification de l'existence d'un lien / url (link checker)
    Par strek100 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/10/2005, 07h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo