X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMover.h;h=ff3667e4698bfc51fb494e0efe367adf1e5f5941;hb=d9f1f7e348d3175bb9bd72d42a113bf1e644031e;hp=1cb9ce6f92d6a00a17049403bb0ea086c223a8fb;hpb=4dc976497f7c384b2e399662ae6a9b19bc98d978;p=lyx.git diff --git a/src/Mover.h b/src/Mover.h index 1cb9ce6f92..ff3667e469 100644 --- a/src/Mover.h +++ b/src/Mover.h @@ -28,20 +28,44 @@ class Mover { public: virtual ~Mover() {} + Mover(Mover &&) = default; + Mover & operator=(Mover &&) = default; + Mover(Mover const &) = default; + Mover & operator=(Mover const &) = default; + + Mover() = default; /** Copy file @c from to @c to. * This version should be used to copy files from the original - * location to the temporary directory, since @c to and @c latex - * would be equal in this case. + * location to the temporary directory. * \returns true if successful. */ bool copy(support::FileName const & from, support::FileName const & to) const; + /** Copy file @c from to @c to. + * \see SpecialisedMover::SpecialisedMover() for an explanation of + * @c latex. + * This version should be used to copy files from the temporary + * directory to the export location, since @c to and @c latex may + * not be equal in this case. + * \returns true if successful. + * NOTE: Although this routine simply calls do_copy() and + * Mover::do_copy() does not itself make any use of the @c latex argument, + * SpecialisedMover overrides do_copy(), so SpecialisedMover::copy(), which + * is just Mover::copy(), calls SpecialisedMover::do_copy(), and the @c latex + * argument IS in that case used. + */ + bool + copy(support::FileName const & from, support::FileName const & to, + std::string const & latex) const + { + return do_copy(from, to, latex); + } + /** Rename file @c from as @c to. * This version should be used to move files from the original - * location to the temporary directory, since @c to and @c latex - * would be equal in this case. + * location to the temporary directory. * \returns true if successful. */ bool @@ -63,6 +87,10 @@ public: } protected: + virtual bool + do_copy(support::FileName const & from, support::FileName const & to, + std::string const &) const; + virtual bool do_rename(support::FileName const & from, support::FileName const & to, std::string const &) const; @@ -77,13 +105,17 @@ protected: * picture files. If such a reference has a relative path, then the * copied .fig file will require a transformation of the picture file * reference if it is to be found by Xfig. + * + * So, in this case, we need three arguments: + * (i) @c from the location of the file to be moved + * (ii) @c to the location to which it should be moved + * (iii) @c latex the identifier that should be used in the sort of + * transformation just mentioned. */ class SpecialisedMover : public Mover { public: - SpecialisedMover() {} - - virtual ~SpecialisedMover() {} + SpecialisedMover() = default; /** @c command should be of the form * @@ -92,14 +124,11 @@ public: * where $$s is a placeholder for the lyx support directory, * $$i is a placeholder for the name of the file to be moved, * $$o is a placeholder for the name of the file after moving, - * $$l is a placeholder for the name of the file after moving, - * suitable as argument to a latex include command. This is - * either an absolute filename or relative to the master - * document. - * $$o and $$l can only differ if the file is copied from the - * temporary directory to the export location. If it is copied - * from the original location to the temporary directory, they - * are the same, so $$l may be ommitted in this case. + * $$l is a placeholder for the latex argument, as explained above. + * $$o and $$l can only differ if the file is copied from the temporary + * directory to the export location. If it is copied from the original + * location to the temporary directory, they are the same, so $$l may be + * ignored in this case, as it is in the Mover baseclass. */ SpecialisedMover(std::string const & command) : command_(command) {}