void ASSISTANT::PagePre() { qDebug() << "Dans PagePre"; if(liste) { disconnect(this); disconnect(page(lect),0,0,0); page(lect)->close(); qDebug() << "Lect = " <<lect; if(lect-1) { disconnect(this,0,0,0); disconnect(page(lect),0,0,0); lect--; QObject::connect(page(lect), SIGNAL(precedent()), this, SLOT(PagePre())); qDebug() << "Connexion Suivant, il est " << QTime::currentTime().toString("HH:mm::ss"); QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(PageSuiv())); page(lect)->show(); } else { disconnect(this,0,0,0); QObject::connect(page(lect), SIGNAL(precedent()), this, SLOT(Fermer())); qDebug() << "Connexion Suivant, il est " << QTime::currentTime().toString("HH:mm::ss"); QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(PageSuiv())); qDebug() << "Show"; page(lect)->show(); qDebug() << "Après Show"; } } }
creerDossier::creerDossier(Etudiant& etu,QWidget *parent) : QDialog(parent), ui(new Ui::creerDossier), e(etu) { ui->setupUi(this); // TemplateManager<Formation>& tForm=TemplateManager<Formation>::getInstance(); ui->InscriptionTable->hide(); ui->InscriptionTable_2->hide(); ui->InscriptionText->hide(); ui->InscriptionText2->hide(); ui->AjouterLigne->hide(); if(e.getDossier().getFormation().size()==0) { ui->Suivant->setEnabled(false); } ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); ui->buttonBox->button(QDialogButtonBox::Cancel)->hide(); displayFormationTables(); QObject::connect(ui->Valider, SIGNAL(pressed()), this, SLOT(validerFormation())); QObject::connect(ui->Suivant, SIGNAL(pressed()), this, SLOT(suivant())); }
void inserer(t_valeurMot mot) { /*Insère un élément dans la liste, en préservant l'ordre croissant des valeurs de la liste*/ int valeur, valeur_actuelle; valeur = mot.score; if(liste_vide()) { ajout_droit(mot); } else { en_tete(); valeur_elt(&valeur_actuelle); while(!hors_liste() && valeur_actuelle < valeur) { suivant(); valeur_elt(&valeur_actuelle); } if(hors_liste()) { en_queue(); ajout_droit(mot); } else { ajout_gauche(mot); } } }
void ASSISTANT::PageSuiv() { qDebug() << "Dans PageSuiv"; page(lect)->close(); disconnect(page(lect),0,0,0); if(page(lect)->terminer) { QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(Fermer()));} else {lect++; QObject::connect(page(lect+1), SIGNAL(precedent()), this, SLOT(PagePre())); QObject::connect(page(lect+1), SIGNAL(suivant()), this, SLOT(PageSuiv())); page(lect)->show(); } }
//les actions void MNotePad::creerAction() { a_nouveauTab = new QAction(QIcon("images/nouveau.png"),tr("nouveau"),this); a_nouveauTab->setShortcut(tr("Ctrl+N")); connect(a_nouveauTab,SIGNAL(triggered()),this,SLOT(nouveauTab())); a_ouvrirTab = new QAction(QIcon("images/ouvrir.png"),tr("ouvrir"),this); a_ouvrirTab->setShortcut(tr("Ctrl+O")); connect(a_ouvrirTab,SIGNAL(triggered()),this,SLOT(ouvrirTab())); a_saveTab = new QAction(QIcon("images/save.png"),tr("save"),this); a_saveTab->setShortcut(tr("Ctrl+S")); connect(a_saveTab,SIGNAL(triggered()),this,SLOT(saveTab())); a_fermerTab = new QAction(tr("fermer"),this); a_fermerTab->setShortcut(tr("Ctrl+W")); connect(a_fermerTab,SIGNAL(triggered()),this,SLOT(fermerTab())); a_quitter = new QAction(QIcon("images/quitter.png"),tr("quitter"),this); a_quitter->setShortcut(tr("Ctrl+Q")); connect(a_quitter,SIGNAL(triggered()),qApp,SLOT(quit())); a_precedent = new QAction(QIcon("images/precedent.png"),tr("precedent"),this); a_precedent->setShortcut(tr("Ctrl+Z")); connect(a_precedent,SIGNAL(triggered()),this,SLOT(precedent())); a_suivant = new QAction(QIcon("images/suivant.png"),tr("suivant"),this); a_suivant->setShortcut(tr("Ctrl+F")); connect(a_suivant,SIGNAL(triggered()),this,SLOT(suivant())); a_font = new QAction(QIcon("images/font.png"),tr("font"),this); connect(a_font,SIGNAL(triggered()),this,SLOT(font())); a_apropos = new QAction(QIcon("images/apropos.png"),tr("A propos"),this); connect(a_apropos,SIGNAL(triggered()),this,SLOT(apropos())); a_aproposQt = new QAction(QIcon("images/aproposQt.png"),tr("A propos de Qt"),this); connect(a_aproposQt,SIGNAL(triggered()),qApp,SLOT(aboutQt())); }
/* ** Test du noyau preemptif. Lier ce fichier avec noyau.c et noyaufil.c */ int main(void) { serial_init(115200); printf("Kernel started !"); file_init(); ajoute(3); affic_file(); ajoute(5); ajoute(1); ajoute(0); ajoute(2); affic_file(); suivant(); affic_file(); retire(0); affic_file(); ajoute(6); affic_file(); while(1); return 0; }
void ASSISTANT::Ouvrir() { qDebug() << "Dans Ouvrir"; qDebug() << "Lect = " <<lect; if(liste) { QObject::connect(page(lect), SIGNAL(precedent()), this, SLOT(Fermer())); if(page(lect)->terminer) { QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(Fermer()));} else { QObject::connect(page(lect), SIGNAL(suivant()), this, SLOT(PageSuiv())); } page(lect)->show(); } }
// chercher un pointeur sur l'élément contenant "objet" de la liste ls static Element* chercherElement (ListeS* ls, Objet* objet) { booleen trouve = faux; Element* ptc = premier (ls); while ( (ptc != NULL) && !trouve ) { trouve = ls->comparer (objet, ptc->reference) == 0; if (!trouve) ptc = suivant (ptc); } return trouve ? ptc : NULL; }
Liste::~Liste() { premier(); for (int i = 0; i < get_longueur(); i++) { effacer(); suivant(); } }
// parcourir du premier vers le dernier void parcoursListeSym (ListeS* ls, void (*f) (Objet*)) { if (listeVide(ls)) { printf ("Liste symétrique vide\n"); } else { Element* ptc = premier (ls); while (ptc != NULL) { f (ptc->reference); ptc = suivant (ptc); } } }
int est_present(t_coord v){ t_coord valeur; if(!liste_vide()){ en_tete(); while(!hors_liste()){ valeur_elt(&valeur); if(valeur.x==v.x && valeur.y==v.y) return 1; suivant(); } } return 0; }
Bool Est_present(Liste l, char* e) { Joueur courant = l.tab[l.tete]; Bool ok = true; while(ok) { if(strcmp(courant.nom, e)) { return true; } else { courant = suivant(l, courant); ok = strcmp(courant.nom, "END")?false:true; } } return false; }
void afficher_liste(void) /* Affiche les valeurs de la liste */ { int elem; if(liste_vide()) printf("La liste est vide\n"); else { printf("\nLa liste contient: "); en_tete(); while(!hors_liste()) { valeur_elt(&elem); printf("%s : %i\n", elem.score, elem.mot); suivant(); } printf("\n"); } }
void creerDossier::suivant() { ui->FormationTable->hide(); ui->FormationText->hide(); ui->FormationTable_2->hide(); ui->FormationText2->hide(); ui->Suivant->hide(); ui->Valider->setEnabled(true); QObject::disconnect(ui->Valider, SIGNAL(pressed()), this, SLOT(validerFormation())); QObject::disconnect(ui->Suivant, SIGNAL(pressed()), this, SLOT(suivant())); QObject::connect(ui->Valider, SIGNAL(pressed()), this, SLOT(validerInscription())); QObject::connect(ui->AjouterLigne, SIGNAL(clicked()), this, SLOT(addRowInscription())); ui->InscriptionTable->show(); ui->InscriptionTable_2->show(); ui->InscriptionText->show(); ui->InscriptionText2->show(); ui->AjouterLigne->show(); ui->InscriptionTable->setRowCount(0); fillInscriptionTable(0); }
ListeDescripteurs liste(char* nom_fichier, bool affichage) { int fd = open(nom_fichier, O_RDONLY); if (fd == -1) { printf("%s n'a pas pu être ouvert... Merci de vérifier son chemin\n", nom_fichier); return NULL; } //printf("Avant lseek\n"); off_t finDescripteurs = lseek(fd, ((-1) * sizeof(uint)), SEEK_END); //on se met au descripteur global d'archive uint archive; //printf("avant read\n"); read(fd, &archive, 32); //printf("avant premierDescripteur\n"); off_t premierDescripteur = getPremierDescripteur(archive); //on construit le 1° descripteur lseek(fd, premierDescripteur, SEEK_SET); uint bufferDescripteursBruts; uint* descripteursBruts = malloc(255 * sizeof(uint)); int lus; int i=0; while((lus = read(fd, &bufferDescripteursBruts, sizeof(uint))) > 0){ descripteursBruts[i] = bufferDescripteursBruts; } // On a récupérer les descripteurs en "brut" (que des int qui se suivent) if(descripteursBruts == NULL){ printf("le buffer est vide\n"); } // Cette fonction nous créé une liste de descripteurs ListeDescripteurs liste = getIntToDescripteurs(descripteursBruts); // partie affichage if (affichage) { int j; printf("type:date:nom"); if (affiche) printf(":taille(octets):uid:gid:droits"); printf("\n"); int profTab = 0; if(courant(liste) == NULL){ printf("Erreur : impossible de récupérer la configuration de l'archive\n"); detruireListeDescripteurs(liste); return NULL; } do{ char* espacement_actuel = ""; profTab = getProfondeur(courant(liste)); for (j = 0; j < profTab; j++) { //tabulation par rapport a la profondeur du fichier strcat(espacement_actuel, espacement); } char* nameS = getFilename(courant(liste)); printf("nom de fichier%s\n", getNbCarac(courant(liste))); printf("%s->%u:%u:%s", espacement_actuel, getType(courant(liste)), getDate(courant(liste)), nameS), getFilename(courant(liste)); if (affiche) { //le reste des parametres de l'archive si demandé printf(":%u:%u:%u:%u", getTailleFichier(courant(liste)), getUid(courant(liste)), getGid(courant(liste)), getDroits(courant(liste))); } printf("\n"); }while(suivant(liste)); } close(fd); return liste; }
/*--------------------------------------------------------------------------* * ORDONNANCEUR preemptif optimise * * * * !! Cette fonction doit s'exécuter en mode IRQ !! * * !! Pas d'appel direct ! Utiliser schedule pour provoquer une * * commutation !! * *--------------------------------------------------------------------------*/ void __attribute__((naked)) scheduler(void) { register CONTEXTE *p; register unsigned int sp asm("sp"); /* Pointeur de pile */ /* Sauvegarder le contexte complet sur la pile IRQ */ __asm__ __volatile__( /* Sauvegarde registres mode system */ "stmfd sp,{r0-r12,sp,lr}^\t\n" /* Attendre un cycle */ "nop\t\n" /* Ajustement pointeur de pile */ "sub sp, sp, #60\t\n" /* Sauvegarde lr IRQ */ "stmfd sp!,{lr}\t\n" /* Sauvegarde de spsr_irq */ "mrs r0, SPSR\t\n" "stmfd sp!,{r0}\t\n" ); /* Réinitialiser le timer si nécessaire */ if (_ack_timer) { /* Acquiter l'événement de comparaison du Timer pour pouvoir */ /* obtenir le déclencement d'une prochaine interruption */ timerComparedOccured(TIMER1); } else { _ack_timer = 1; } /* memoriser le pointeur de pile */ _contexte[_tache_c].sp_irq = sp; /* recherche du suivant */ _tache_c = suivant(); /* Incrémenter le compteur d'activations */ compteurs[_tache_c]++; /* p pointe sur la nouvelle tache courante*/ p = &_contexte[_tache_c]; /* tache prete ? */ if (p->status == PRET) { /* Charger sp_irq initial */ sp = p->sp_irq; /* Passer en mode système */ _set_arm_mode_(ARMMODE_SYS); /* Charger sp_sys initial */ sp = p->sp_ini; /* status tache -> execution */ p->status = EXEC; /* autoriser les interuptions */ _irq_enable_(); /* lancement de la tâche */ p->tache_adr(); } else { /* tache deja en execution, restaurer sp_irq */ sp = p->sp_irq; } /* Restaurer le contexte complet depuis la pile IRQ */ __asm__ __volatile__( /* Restaurer spsr_irq */ "ldmfd sp!,{r0}\t\n" "msr SPSR, r0\t\n" /* et lr_irq */ "ldmfd sp!,{lr}\t\n" /* Restaurer registres mode system */ "ldmfd sp,{r0-r12,sp,lr}^\t\n" /* Attendre un cycle */ "nop\t\n" /* Ajuster pointeur de pile irq */ "add sp, sp, #60\t\n" /* Retour d'exception */ "subs pc, lr, #4\t\n" ); }
int createFiles(char** files, int nb_fichiers, ListeDescripteurs* descripteurs, int archive) { struct stat info; // pour stocker les informtations d'un fichier / répertoire int s; // pour vérifier que les informations soient bien accessibles int total_fichiers = 0; int fd; int lus, ecrits; // permettent de stocker le nombre d'octets lus et écrits dans un fichier char b_read[TAILLE_BUFFER]; // buffer pour écrire dans l'archive uint profondeur = 0; int i; for (i = 0; i < nb_fichiers; i++) // on parcourt chaque fichier { s = stat(files[i], &info); // on récupère ses informations if (S_ISDIR(info.st_mode)) // si c'est un dossier { if (affiche) printf("%s/\n ", files[i]); Descripteur d = construireDescripteur(0, (uint) info.st_mtime, (uint) info.st_size, (uint) info.st_uid, (uint) info.st_gid, (uint) info.st_mode, profondeur, (uint) sizeof (files[i]) / sizeof (char), files[i]); ajouter(*descripteurs, d); // On ajoute le descripteur du dossier parent à la liste total_fichiers += createDossier(files[i], descripteurs, archive, &profondeur); if (affiche) printf("\n\tDone\n"); } else if (S_ISREG(info.st_mode)) // si c'est un fichier { if (affiche) printf("%s ", files[i]); fd = open(files[i], O_RDONLY, NULL); if (fd == -1) // si, on ne peut pas ouvrir le fichier en lecture seule { printf("Erreur lors de l'ouverture du fichier %s\n", files[i]); continue; // on passe au suivant } else { while ((lus = read(fd, &b_read, TAILLE_BUFFER)) > 0) // on lit tout le fichier { ecrits = write(archive, &b_read, lus); // on écrit ce qui vient d'être lu if (ecrits != lus) // si on a pas pu tout écrire { printf("Archive corrompue. Tout le contenu de %s n'a pas pu être copié dans l'archive !\n", files[i]); } } Descripteur d = construireDescripteur(1, (uint) info.st_mtime, (uint) info.st_size, (uint) info.st_uid, (uint) info.st_gid, (uint) info.st_mode, profondeur, (uint) strlen(files[i]), files[i]); ajouter(*descripteurs, d); suivant(*descripteurs); total_fichiers += 1; if (close(fd) == -1) { printf("Erreur lors de la fermeture de %s\n", files[i]); return -1; } if (affiche) printf("\tDone\n"); } } else printf("Type non géré pour %s car %s\n", files[i], info.st_mode); // } return total_fichiers; }