From 47a2f450489300b3658e5d4ac66eeb2649ae132d Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sat, 29 Sep 2012 11:45:46 +0000 Subject: [PATCH] allow to Printf lists directly (if no % format is given) --- Parser/Gmsh.tab.cpp | 25 ++++++++++++++++++++----- Parser/Gmsh.y | 25 ++++++++++++++++++++----- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 014da01652..ed81f9fecf 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -10383,15 +10383,30 @@ yyreturn: int PrintListOfDouble(char *format, List_T *list, char *buffer) { - int j, k; - char tmp1[256], tmp2[256]; + // if format does not contain formatting characters, simply append values to + // format using %g formatting; useful for quick debugging of lists + int numFormats = 0; + for(int i = 0; i < strlen(format); i++) + if(format[i] == '%') numFormats++; + if(!numFormats){ + strcpy(buffer, format); + for(int i = 0; i < List_Nbr(list); i++){ + double d; + List_Read(list, i, &d); + char tmp[256]; + sprintf(tmp, " %g", d); + strcat(buffer, tmp); + } + return 0; + } - j = 0; + char tmp1[256], tmp2[256]; + int j = 0, k = 0; buffer[j] = '\0'; while(j < (int)strlen(format) && format[j] != '%') j++; strncpy(buffer, format, j); - buffer[j]='\0'; + buffer[j] = '\0'; for(int i = 0; i < List_Nbr(list); i++){ k = j; j++; @@ -10409,7 +10424,7 @@ int PrintListOfDouble(char *format, List_T *list, char *buffer) } } else - return List_Nbr(list)-i; + return List_Nbr(list) - i; } if(j != (int)strlen(format)) return -1; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index a08c87b7ec..6cf6896d2d 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -4502,15 +4502,30 @@ StringExpr : int PrintListOfDouble(char *format, List_T *list, char *buffer) { - int j, k; - char tmp1[256], tmp2[256]; + // if format does not contain formatting characters, simply append values to + // format using %g formatting; useful for quick debugging of lists + int numFormats = 0; + for(int i = 0; i < strlen(format); i++) + if(format[i] == '%') numFormats++; + if(!numFormats){ + strcpy(buffer, format); + for(int i = 0; i < List_Nbr(list); i++){ + double d; + List_Read(list, i, &d); + char tmp[256]; + sprintf(tmp, " %g", d); + strcat(buffer, tmp); + } + return 0; + } - j = 0; + char tmp1[256], tmp2[256]; + int j = 0, k = 0; buffer[j] = '\0'; while(j < (int)strlen(format) && format[j] != '%') j++; strncpy(buffer, format, j); - buffer[j]='\0'; + buffer[j] = '\0'; for(int i = 0; i < List_Nbr(list); i++){ k = j; j++; @@ -4528,7 +4543,7 @@ int PrintListOfDouble(char *format, List_T *list, char *buffer) } } else - return List_Nbr(list)-i; + return List_Nbr(list) - i; } if(j != (int)strlen(format)) return -1; -- GitLab