S'assure que les informations de débogage vont dans stderr
This commit is contained in:
		
							parent
							
								
									bd0c0afd89
								
							
						
					
					
						commit
						aa63afb9d8
					
				|  | @ -6,15 +6,14 @@ | |||
| typedef struct HufTree HufTree; | ||||
| 
 | ||||
| /**
 | ||||
|  * Écrire sur la sortie standard à la manière de printf, | ||||
|  * seulement si le mode verbeux est actif | ||||
|  * Écrire des données de débogage sur la sortie d'erreurs standard | ||||
|  * (seulement si le mode verbeux est actif) | ||||
|  */ | ||||
| void printVerbose(const char* format, ...); | ||||
| 
 | ||||
| /**
 | ||||
|  * Active ou désactive l'affichage des messages verbeux | ||||
|  * (mode verbeux). Si activé, `printVerbose` écrit sur | ||||
|  * la sortie standard. Sinon, `printVerbose` n'a pas d'effet | ||||
|  * Active ou désactive l'affichage des messages de débogage (mode verbeux) | ||||
|  * sur la sortie d'erreurs standard | ||||
|  */ | ||||
| void setVerbose(int); | ||||
| 
 | ||||
|  | @ -24,8 +23,7 @@ void setVerbose(int); | |||
| int isVerbose(); | ||||
| 
 | ||||
| /**
 | ||||
|  * Afficher sur la sortie standard l'arbre passé | ||||
|  * en paramètre | ||||
|  * Afficher sur la sortie standard l'arbre passé en paramètre | ||||
|  */ | ||||
| void printTree(HufTree tree); | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ void printVerbose(const char* format, ...) { | |||
|         va_list args_list; | ||||
| 
 | ||||
|         va_start(args_list, format); | ||||
|         vprintf(format, args_list); | ||||
|         vfprintf(stderr, format, args_list); | ||||
|         va_end(args_list); | ||||
|     } | ||||
| } | ||||
|  | @ -57,12 +57,12 @@ void _printVertex(HufVertex vert, wchar_t* buffer, int length) { | |||
|     if (vert.child_l != NULL && vert.child_r != NULL) { | ||||
|         // Affichage d'un sommet avec enfants, on montre
 | ||||
|         // la probabilité somme des enfants
 | ||||
|         printf("■\n"); | ||||
|         printVerbose("■\n"); | ||||
| 
 | ||||
|         // Affichage du fils gauche. Augmentation du préfixe
 | ||||
|         // pour l'affichage des enfants du fils gauche
 | ||||
|         buffer[length] = '\0'; | ||||
|         printf("%ls├── ", buffer); | ||||
|         printVerbose("%ls├── ", buffer); | ||||
| 
 | ||||
|         buffer[length] = L'│'; | ||||
|         buffer[length + 1] = ' '; | ||||
|  | @ -74,14 +74,14 @@ void _printVertex(HufVertex vert, wchar_t* buffer, int length) { | |||
|         // Affichage du fils droite. Augmentation du préfixe
 | ||||
|         // pour l'affichage des enfants du fils droit
 | ||||
|         buffer[length] = '\0'; | ||||
|         printf("%ls└── ", buffer); | ||||
|         printVerbose("%ls└── ", buffer); | ||||
| 
 | ||||
|         buffer[length] = ' '; | ||||
|         _printVertex(*vert.child_r, buffer, length + 4); | ||||
|     } else { | ||||
|         // Affichage d'une feuille de l'arbre, correspondant
 | ||||
|         // à un caractère du corpus
 | ||||
|         printf("%c\n", _safeChar(vert.name)); | ||||
|         printVerbose("%c\n", _safeChar(vert.name)); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -97,44 +97,44 @@ int _maxDepth(HufVertex vert) { | |||
| } | ||||
| 
 | ||||
| void printFrequenciesTable(double* table, size_t size) { | ||||
|     printf("┌─┬────┬─────────┐\n"); | ||||
|     printf("│C│code│fréquence│\n"); | ||||
|     printf("├─┼────┼─────────┤\n"); | ||||
|     printVerbose("┌─┬────┬─────────┐\n"); | ||||
|     printVerbose("│C│code│fréquence│\n"); | ||||
|     printVerbose("├─┼────┼─────────┤\n"); | ||||
| 
 | ||||
|     double sum = 0; | ||||
| 
 | ||||
|     for (size_t i = 0; i < size; i++) { | ||||
|         if (table[i] != 0) { | ||||
|             printf("│%c│%4d│%9.4lf│\n", _safeChar(i), (int) i, table[i]); | ||||
|             printVerbose("│%c│%4d│%9.4lf│\n", _safeChar(i), (int) i, table[i]); | ||||
|             sum += table[i]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     printf("├─┴────┼─────────┤\n"); | ||||
|     printf("│ Total│%9.4lf│\n", sum); | ||||
|     printf("└──────┴─────────┘\n"); | ||||
|     printVerbose("├─┴────┼─────────┤\n"); | ||||
|     printVerbose("│ Total│%9.4lf│\n", sum); | ||||
|     printVerbose("└──────┴─────────┘\n"); | ||||
| } | ||||
| 
 | ||||
| void printLabelsTable(char** table, size_t size) { | ||||
|     printf("┌─┬────┬────────────────┐\n"); | ||||
|     printf("│C│code│       étiquette│\n"); | ||||
|     printf("├─┼────┼────────────────┤\n"); | ||||
|     printVerbose("┌─┬────┬────────────────┐\n"); | ||||
|     printVerbose("│C│code│       étiquette│\n"); | ||||
|     printVerbose("├─┼────┼────────────────┤\n"); | ||||
| 
 | ||||
|     double total_length = 0; | ||||
|     size_t label_count = 0; | ||||
| 
 | ||||
|     for (size_t i = 0; i < size; i++) { | ||||
|         if (table[i] != 0) { | ||||
|             printf("│%c│%4d│%16s│\n", _safeChar(i), (int) i, table[i]); | ||||
|             printVerbose("│%c│%4d│%16s│\n", _safeChar(i), (int) i, table[i]); | ||||
| 
 | ||||
|             total_length += strlen(table[i]); | ||||
|             label_count++; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     printf("├─┴────┴───┬────────────┤\n"); | ||||
|     printf("│Long. moy.│%12.4lf│\n", total_length / label_count); | ||||
|     printf("└──────────┴────────────┘\n"); | ||||
|     printVerbose("├─┴────┴───┬────────────┤\n"); | ||||
|     printVerbose("│Long. moy.│%12.4lf│\n", total_length / label_count); | ||||
|     printVerbose("└──────────┴────────────┘\n"); | ||||
| } | ||||
| 
 | ||||
| char _safeChar(char input) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue