|
- #pragma once
-
- #ifndef PRINT_DEF
- #define PRINT_DEF
- #include <string.h> //for strings
- #include <stdio.h> //for printf,scanf (library for C)
- #include <stdlib.h> //for atoi, atof
- #include <string> //C++ header for string
- #include <cstring>
- #include <iostream>
- #include <stdexcept>
- #endif
-
- #include <vector>
- #include <sstream>
-
- #ifndef PARSE_DEF
- #define PARSE_DEF
- #define MAXBUFLEN 200
-
- void getFromString (const char* buf, int* n);
- void getFromString (const char* buf, size_t* n);
- void getFromString (const char* buf, double* n);
- void getFromString (const char* buf, char* n);
-
- int parseString(FILE* input, const char* keyword, const size_t bufLen, char* n);
-
- template<typename T>
- int parseNumber(FILE* input, const char* keyword, const size_t bufLen, T* n);
-
- template<typename T>
- int parseArray(FILE* input, const char* keyword, const size_t bufLen,
- const size_t arrLen, T y[]);
-
- //
- ///*template function for parsing initial mole fraction in the droplet*/
- //template<typename T>
- //int parseDropSpec(FILE* input, const char* keyword, const size_t bufLen,const int* dropType, std::vector<T>& dropPara){
- // char buf[bufLen];
- // char buf1[bufLen];
- // char comment[1];
- // char *ret;
- //
- // while (fgets(buf,bufLen, input)!=NULL){
- // comment[0]=buf[0];
- // if(strncmp(comment,"#",1)==0){
- // //printf("Comment!:%s\n",buf);
- // }
- // else{
- // ret=strtok(buf,"=");
- // if(strcmp(ret,keyword)==0){
- // /*offset buf by keyword size + 1 for the "="*/
- // /* Second argument in the strncpy function is the address !!! */
- // /* Note: current version of code can only take dropType =0 or 1 */
- // strncpy(buf1, buf+strlen(keyword)+1, bufLen);
- // printf("%10s: ",keyword);
- // if(*dropType ==0){
- // /* Convert from char* to double */
- //// std::string str(buf1);
- //// dropPara.push_back(str);
- // T temp_num = std::stod(buf1) ;
- // dropPara.push_back(temp_num) ;
- // printf("%.3f\n",dropPara[0]);
- // }else{
- // std::istringstream iss(buf1) ;
- // std::string token;
- // while(std::getline(iss,token,',')){
- // T temp_num = std::stod(token);
- // dropPara.push_back(temp_num);
- // }
- // printf("%.3f,%.3f\n",dropPara[0],dropPara[1]);
- // }
- // rewind(input);
- // return(0);
- // }
- // }
- // }
- // rewind(input);
- // return(-1);
- //}
-
- /* Extract the droplet species and molefractions from input file using template */
- /* Generic template function */
- //template<typename T>
- //int parseDropSpec(FILE* input, const char* keyword, const size_t bufLen,const int* dropType, std::vector<T>& dropPara){
- // char buf[bufLen];
- // char buf1[bufLen];
- // char comment[1];
- // char *ret;
- // T* n;
- //
- // while (fgets(buf,bufLen, input)!=NULL){
- // comment[0]=buf[0];
- // if(strncmp(comment,"#",1)==0){
- // //printf("Comment!:%s\n",buf);
- // }
- // else{
- // ret=strtok(buf,"=");
- // if(strcmp(ret,keyword)==0){
- // /*offset buf by keyword size + 1 for the "="*/
- // /* Second argument in the strncpy function is the address !!! */
- // /* Note: current version of code can only take dropType =0 or 1 */
- // strncpy(buf1, buf+strlen(keyword)+1, bufLen);
- // printf("%10s: ",keyword);
- // if(*dropType ==0){
- // getFromString(buf1,n);
- // dropPara.push_back(*n);
- // }else{
- // std::istringstream iss(buf1) ;
- // std::string token;
- // while(std::getline(iss,token,',')){
- // T arg = std::stod(token);
- // dropPara.push_back(arg);
- // }
- // printf("%15.6e,%15.6e\n",dropPara[0],dropPara[1]);
- // }
- // rewind(input);
- // return(0);
- // }
- // }
- // }
- // rewind(input);
- // return(-1);
- //}
-
- //
- ///* Specialization for string */
- //template<>
- //int parseDropSpec<std::string>(FILE* input, const char* keyword, const size_t bufLen,const int* dropType, std::vector<std::string>& dropPara);
-
- int parseDrop(FILE* input, const char* keyword,char dropSpec[][10],double dropMole[],const size_t bufLen);
-
- #include "parse.hpp"
-
- #endif
-
|