bool bellman_ford(int start) { // detecte les cycles de poids negatif liste::iterator it; for (int v=0; v<size; v++) { // initialisation dist[v] = INTMAX; pred[v] = -1; } dist[start] = 0; for (int j=1; j<size; j++) // relachements for (int u=0; u<size; u++) #ifdef LISTES for (it=t[u].begin(); it!=t[u].end(); it++) relacher(u,it->dest,it->weight); #else for (int v=0; v<size; ++v) if (t[u][v]>0) relacher(u,v,w[u][v]); // SIP #endif // detection des cycles negatifs, RINN for (int u=0; u<size; u++) #ifdef LISTES for (it=t[u].begin(); it!=t[u].end(); it++) if (dist[it->dest]>dist[u]+(it->weight)) #else for (int v=0; v<size; ++v) if ((t[u][v]>0)&&(dist[v]>dist[u]+w[u][v])) // SIP #endif return false; return true; }
//////////////////////////////////////////////////////////////////////// /// /// @fn Nuanceur& Nuanceur::operator=(Nuanceur&& shader) /// /// Transfère la propriété du nuanceur reçu en paramètre et s'assure /// que ce dernier ne libérera pas son identifiant opengl lors de sa /// destruction. /// /// @return Aucun /// //////////////////////////////////////////////////////////////////////// Nuanceur& Nuanceur::operator=(Nuanceur&& shader) { /// Libérer l'identifiant courant, si nécessaire relacher(); /// récupérer les données de l'autre nuanceur handle_ = shader.handle_; shader.handle_ = NUANCEUR_INVALIDE; type_ = shader.type_; flags = shader.flags; nom_ = std::move(shader.nom_); source_ = std::move(shader.source_); shader.relacher(); return *this; }
//////////////////////////////////////////////////////////////////////// /// /// @fn void Nuanceur::initialiser(Type shader_type, Nuanceur::Path code_filename) /// /// Crée un identifiant OpenGL, charge et compile le code source sur la /// carte graphique. /// /// @return Aucun /// //////////////////////////////////////////////////////////////////////// void Nuanceur::initialiser(Type shader_type, Nuanceur::Path code_filename) { /// relacher l'idenfiant if (handle_ != NUANCEUR_INVALIDE) relacher(); /// Recréer l'identifiant creer(shader_type); /// Charger le code source le compiler chargerSource(code_filename); compiler(); /// Si la compilation réussie, on conserve le nom du fichier if (flags.estCompile) { nom_ = Path{ code_filename }.filename(); } }
//////////////////////////////////////////////////////////////////////// /// /// @fn Nuanceur::~Nuanceur() /// /// Destructeur, ne fait que relâcher l'identifiant OpenGL et remettre /// les données à leur valeur initiale. /// /// @return Aucun /// //////////////////////////////////////////////////////////////////////// Nuanceur::~Nuanceur() { relacher(); }