Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sf::Packet proposer une 2e interface non modifiante  (Lu 3563 fois)

0 Membres et 1 Invité sur ce sujet

germinolegrand

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
sf::Packet proposer une 2e interface non modifiante
« le: Août 27, 2012, 12:42:36 pm »
Actuellement, lorsqu'on souhaite extraire une donnée de sf::Packet, il n'est plus possible de lire cette donnée déjà extraite. La seule façon de le faire est d'utiliser getData et de faire quelques casts horribles qui ne devraient pas avoir lieu d'être puisqu'il faut pour cela connaître la construction interne de sf::Packet pour s'assurer de son fonctionnement. Si je veux récupérer le premier char :
char data = *reinterpret_cast<const char*>(packet.getData());
C'est juste moche :o.

Je propose d'ajouter une fonction template :
template <class T>
void Packet::get(T &data)
{
    *this >> data;
      m_readPos -= sizeof(data);
}

 

Ou alors mieux : proposer des fonctions pour sauvegarder une position dans un sf::Packet pour l'y faire revenir plus tard (en clair on sauvegarde m_readPos). Ainsi que les positions statiques définies à l'avance : begin et end.

La 1e solution n'est qu'une solution vite fait, tandis que la 2e s'inscrit plus dans la logique des flux (voir std::fstream et compagnie).
« Modifié: Août 27, 2012, 12:47:59 pm par germinolegrand »

danman

  • Hero Member
  • *****
  • Messages: 1121
    • Voir le profil
    • E-mail
Re : sf::Packet proposer une 2e interface non modifiante
« Réponse #1 le: Août 27, 2012, 02:00:30 pm »
tu ne peux pas faire ca ? : (pas testé)
char data;
packet >> data;

ca devrait revenir au même non ?
 
Pointilleur professionnel

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Packet proposer une 2e interface non modifiante
« Réponse #2 le: Août 27, 2012, 08:26:39 pm »
Y a plein de tickets sur le tracker pour sf::Packet, je pense que ta demande est déjà couverte.
Laurent Gomila - SFML developer

germinolegrand

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re : sf::Packet proposer une 2e interface non modifiante
« Réponse #3 le: Août 30, 2012, 12:49:06 pm »
En effet #112
sf::Packet has no Seek function for random access