Esempio n. 1
0
    bool Directory::cp(const File& file) {

        // exe ise direk deep-independet copy al 
        const Executable *temp = dynamic_cast<const Executable *> (&file);
        if (temp != NULL) {
            Executable *nExe = new Executable(*temp);
            nExe->setTime("18/12/15"); // zamanlar temsilidir
            nExe->updatePath(this->path() + "/" + nExe->getName()); //path guncelle
            m_inFiles.insert(nExe); // containere sirali olarak ekle
        }

        // klasor ise copy constuctor ile o klasorun deep copy sini al
        const Directory *temp1 = dynamic_cast<const Directory *> (&file);
        if (temp1 != NULL) {
            Directory *nDir = new Directory(*temp1);
            nDir->setTime("19/12/15"); // zamanlar temsilidir
            nDir->updatePath(this->path() + "/" + nDir->getName()); // path upd.
            m_inFiles.insert(nDir);
        }

        // text dosyasi ise direk copy al
        const TextFile *temp2 = dynamic_cast<const TextFile *> (&file);
        if (temp2 != NULL) {
            TextFile *nText = new TextFile(*temp2);
            nText->setTime("21/12/15"); // zamanlar temsilidir
            nText->updatePath(this->path() + "/" + nText->getName());
            m_inFiles.insert(nText);
        }
        // dangling pointers
        temp = NULL;
        temp1 = NULL;
        temp2 = NULL;

        return true;
    }