Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
859 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  boost::filesystem classe dérivée de path() pour se simplifier la vie

 

 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

boost::filesystem classe dérivée de path() pour se simplifier la vie

n°951318
bjone
Insert booze to continue
Posté le 11-01-2005 à 23:52:17  profilanswer
 

bijour, voilà je me suis fait une classe native_path() dérive de path juste pour ne avoir de path( ..., native ) à chaque fois que j'en ai besoin.
 
juste pour avoir l'avis de Taz & ceux qui aiment bien boost, est-ce bien/mal ? (j'ai cru comprendre sur sourceforge que d'autres personnes avaient fait +ou- la même chose ?)
 

Code :
  1. #pragma once
  2. #include <boost/filesystem/path.hpp>
  3. #include <string>
  4. namespace boost
  5. {
  6. namespace filesystem
  7. {
  8.  class native_path : public path
  9.  {
  10.  public:
  11.   native_path() : path() {};
  12.   native_path( const char *pth ) : path( pth, native ) {};
  13.   native_path( const std::string &pth ) : path( pth, native ) {};
  14.   native_path &operator = ( const char *pth )
  15.   {
  16.    *this = native_path(pth);
  17.    return *this;
  18.   }
  19.   native_path &operator = ( const std::string &pth )
  20.   {
  21.    *this = native_path(pth);
  22.    return *this;
  23.   }
  24.  };
  25. }
  26. }

mood
Publicité
Posté le 11-01-2005 à 23:52:17  profilanswer
 

n°951323
Taz
bisounours-codeur
Posté le 11-01-2005 à 23:57:54  profilanswer
 

je sais pas. Il me semble pas que path est un destructeur virtuel ... donc prudence

n°951328
bjone
Insert booze to continue
Posté le 12-01-2005 à 00:01:59  profilanswer
 

arf, ça a l'air de tourner comme ça avec, je vais zieuter le source.

n°951333
bjone
Insert booze to continue
Posté le 12-01-2005 à 00:09:34  profilanswer
 

et bien écoute, là au debug, j'ai pas de vfptr pour les boost::filesystem::path que j'ai donc à priori y'a pas de destructeur virtuel non ?
 
--- oups - j'ai compris ta phrase dans l'autre sens.
 
vu que j'ai juste fait un wrapper sur les constructeurs & assignements de 'path' normalement ça devrait pas poser de problèmes non ?

n°951336
Taz
bisounours-codeur
Posté le 12-01-2005 à 00:14:20  profilanswer
 

fais juste gaffe aux fuites. Une petite fonction au nom cours ne te satisferait pas ? pourquoi à tu définis tes propres operator= ?

n°951337
Taz
bisounours-codeur
Posté le 12-01-2005 à 00:15:13  profilanswer
 

ben fais gaffe à l'utilisation : si d'aventure tu t'amuses à faire du polymorphisme ... ça pourrait faire mal.

n°951350
bjone
Insert booze to continue
Posté le 12-01-2005 à 00:35:26  profilanswer
 

Taz a écrit :

fais juste gaffe aux fuites. Une petite fonction au nom cours ne te satisferait pas ? pourquoi à tu définis tes propres operator= ?


 
pour faire le 'native' aussi.
 
mais je suis en train de me demander si je suis pas en train de me prendre le chou pour rien.

n°951414
Taz
bisounours-codeur
Posté le 12-01-2005 à 08:52:00  profilanswer
 

bjone a écrit :

pour faire le 'native' aussi.


et pourquoi tu crois que l'operator= synthétisé ne traduirait pas tout seul
 
np = "blah";  
 
par
 
np.operator=( native_path("blah" ) );
 
?

n°951461
bjone
Insert booze to continue
Posté le 12-01-2005 à 10:31:25  profilanswer
 

exact, j'avais oublié que j'avais mis des explicit à un moment et que j'ai enlevé ensuite.


Message édité par bjone le 12-01-2005 à 10:31:36
n°951503
Taz
bisounours-codeur
Posté le 12-01-2005 à 11:26:39  profilanswer
 

fais toi une fonction inline avec un nom court
 
{
  using My:boost_helper::N;
  x = N(z);
} // vite je réduis la portée

mood
Publicité
Posté le 12-01-2005 à 11:26:39  profilanswer
 

n°951513
bjone
Insert booze to continue
Posté le 12-01-2005 à 11:36:08  profilanswer
 

ouais, je crois que c'est ce que je vais faire, ça évitera les blagues.

n°958308
bjone
Insert booze to continue
Posté le 21-01-2005 à 11:39:00  profilanswer
 

tiens je m'y suis remis
sinon j'ai essayé aussi cette approche, je voulais me faire une approche d'écriture un peu plus sympa genre:
 

Code :
  1. using boost::filesystem;
  2.     using boost::filesystem::path_cast;
  3.     void foo( const path &pth )
  4.     {
  5.       ......
  6.     }
  7.     using boost::filesystem::path_cast
  8.     truc()
  9.     {
  10.        foo( (nat) "c:\\mon super chemin long bien relou\\tes dents" );
  11.     }


 
plustôt qu'un: (pour une question d'esthétisme)
 

Code :
  1. foo( fnat( "c:\\mon super chemin long bien relou\\tes dents" ) );


 
où 'fnat' serait une function.
 
avec ça:
 

Code :
  1. namespace boost
  2. {
  3. namespace filesystem
  4. {
  5.  namespace path_cast
  6.  {
  7.   template <bool CHECKER( const std::string & name )> class path_name_check : public path
  8.   {
  9.   public:
  10.    template <typename T> path_name_check( T value ) : path( value, CHECKER ) {};
  11.   };
  12.   typedef path_name_check<native> nat;
  13.   typedef path_name_check<no_check> noc;
  14.   typedef path_name_check<windows_name> win;
  15.   typedef path_name_check<portable_posix_name> posix;
  16.   typedef path_name_check<portable_name> pname;
  17.   typedef path_name_check<portable_directory_name> pdir;
  18.   typedef path_name_check<portable_file_name> pfile;
  19.  }
  20. }
  21. }

n°958329
Taz
bisounours-codeur
Posté le 21-01-2005 à 11:58:40  profilanswer
 

attend, t'es entrain de rajouter ta sauce dans les NS de boost ? ça va pas ?

n°958488
bjone
Insert booze to continue
Posté le 21-01-2005 à 14:11:48  profilanswer
 

dans le même namespace, mais je peux le changer ça c'est pas un problème. (si c'est ça qui t'inquiète)
(dumoins un sous-namespace)


Message édité par bjone le 21-01-2005 à 14:12:34
n°958515
Taz
bisounours-codeur
Posté le 21-01-2005 à 14:44:07  profilanswer
 

non, fais dans un truc séparé

n°958571
bjone
Insert booze to continue
Posté le 21-01-2005 à 15:29:06  profilanswer
 

oki no prob.
 
c'était juste par rapport au cast volontaire.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  boost::filesystem classe dérivée de path() pour se simplifier la vie

 

Sujets relatifs
Ajout d'un package dans la classe javax?!spécialisation de fonctions membres (template) d'une classe template
[gcc] Option pour réinitialiser le path de compilation[vba]pb App avec Path
Importer un classe existante dans une jspPath Relatif / Absolue dans "opentextfile"
Compilation de boostClasse de log basée sur ostream
[QT] affichage de fenêtre et problème de classe[java]util.zip - ne pas stocker le path ?
Plus de sujets relatifs à : boost::filesystem classe dérivée de path() pour se simplifier la vie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR