16const char *
nWord(
const char *chKey,
100 uniqueLen = s2.length();
102 uniqueLen = p->second;
107 void setline(
const string& card);
112 const char *
nWord(
const char *chKey)
const;
116 long int GetElem(
void )
const;
143 for (
const char *q=p; *q; ++q)
148 const char *c =
m_card.c_str();
160 return ::nMatch(chKey,
m_card.c_str());
194 bool found = (i != 0);
197 const long len = strlen(p);
199 for (
long j=0; j<len; ++j)
210 bool nMatchSkip(
const string& chKey,
size_t nmin = 4);
222 bool isVar(
void)
const;
225 void echo(
void)
const;
226 bool last(
void)
const;
243 void help(FILE *fp)
const;
249 void getPairs(vector<double>& a, vector<double> & b);
250 void readList(vector<string>& list,
const char *chName);
339 return (
p_line[0] ==
'#' );
349 for(
size_t i=0; i <
p_line.length(); ++i )
351 if( i > 0 &&
p_line[i] ==
'#' )
353 else if( !isspace(
p_line[i]) )
361 long p =
p_ls.tellg();
371 if( p >=
p_line.length() )
372 p_ls.setstate(ios_base::eofbit);
379 char c =
p_ls.peek();
387 return ( c ==
'=' || c ==
',' );
392 bool lgModified =
false;
393 for(
size_t i=0; i <
p_line.length(); ++i )
434 void checkMagic(
long i0,
long i1,
long i2,
long i3);
450 else if( !isspace(
p_ls.peek()) && !
p_ls.eof() )
451 errorAbort(
"found unrecognized input after token");
462 "Reading C-style strings is not supported, use C++ strings instead." );
463 for(
size_t i=0; i < n; ++i )
484 "Reading C-style strings is not supported, use C++ strings instead." );
485 for(
size_t i=0; i < n; ++i )
494 else if( !isspace(
p_ls.peek()) && !
p_ls.eof() )
495 errorAbort(
"found unrecognized input after token");
526 errorAbort(
"skipping to requested position failed");
533 auto p =
p_line.substr(cp).find(s);
534 if( p != string::npos )
539 oss <<
"skipAfter could not find string =" << s <<
"=";
555 errorAbort(
"found unrecognized input at the end of this line");
565 errorAbort(
"found surplus input at the end of this file");
597 const char *
key(
void)
const
629template <
typename T,
typename V>
632 bool lgFound =
false;
633 for (
unsigned long option=0; option < nlist; ++option)
635 if( p.
nWord( list[option].key() ) )
637 list[option]( value );
674 ostringstream& chHeader,
681 ostringstream& chHeader);
685 ostringstream& chHeader);
933 vector< pair<string, shared_ptr<Option> > >
p;
FILE * ioQQQ
Definition cddefines.cpp:9
float sys_float
Definition cddefines.h:130
#define NULL
Definition cddefines.h:115
#define ASSERT(exp)
Definition cddefines.h:637
float realnum
Definition cddefines.h:127
int fprintf(const Output &stream, const char *format,...)
Definition service.cpp:1325
void caps(char *chCard)
Definition service.cpp:299
NORETURN void TotalInsanity(void)
Definition service.cpp:1174
long min(int a, long b)
Definition cddefines.h:766
void getKeyword(string &str)
Definition parser.h:513
size_t p_pos()
Definition parser.h:359
void p_replaceSep()
Definition parser.h:390
NORETURN void errorAbort(const string &msg, FILE *io=ioQQQ)
Definition parser.cpp:1470
DataParser(const string &name, eod_style es, access_scheme as=AS_DEFAULT)
Definition parser.h:413
fstream p_io
the name of the data file
Definition parser.h:322
void checkMagic(long i0)
Definition parser.cpp:1271
bool p_lgEOF
stream for reading current line
Definition parser.h:327
void setposLine(size_t p)
Definition parser.h:523
void p_pos(size_t p)
Definition parser.h:368
bool getTokenOptional(T &var)
Definition parser.h:445
void open(const string &name, eod_style es, access_scheme as=AS_DEFAULT)
Definition parser.h:418
bool lgEODMarker() const
Definition parser.cpp:1456
void getLineID(LineID &line, bool lgAtStart=true)
Definition parser.cpp:1344
size_t getTokenOptional(T var[], size_t n)
Definition parser.h:457
bool lgEOL()
Definition parser.h:544
size_t p_nr
the current line being read
Definition parser.h:325
void getQuote(string &str)
Definition parser.h:500
void getToken(T &var)
Definition parser.h:472
string p_filename
Definition parser.h:321
void close()
Definition parser.h:424
istringstream p_ls
number of the line we are parsing
Definition parser.h:326
bool isOpen() const
Definition parser.h:429
bool getKeywordOptional(string &str)
Definition parser.h:506
void setline(const string &line)
Definition parser.h:438
void p_skipWS()
Definition parser.h:375
bool getQuoteOptional(string &str)
Definition parser.h:489
long getpos()
Definition parser.h:568
bool p_isSeparator(char c)
Definition parser.h:385
bool lgEOF() const
Definition parser.h:558
long getposLine()
Definition parser.h:521
void setpos(long pos)
Definition parser.h:570
bool p_blankLine() const
Definition parser.h:347
void p_newlineProcess()
Definition parser.cpp:1214
string p_line
what are the allowed EOD markers?
Definition parser.h:324
void skipAfter(const string &s)
Definition parser.h:530
void rewind()
Definition parser.h:572
void p_getQuoteOptional(string &str)
Definition parser.cpp:1242
void p_open(const string &name, eod_style es, access_scheme as)
have we passed beyond the EOF?
Definition parser.cpp:1189
bool getline()
Definition parser.cpp:1327
void p_showLocation(size_t p, FILE *io)
Definition parser.cpp:1225
DataParser()
Definition parser.h:408
void p_close()
Definition parser.cpp:1199
void checkEOL()
Definition parser.h:552
eod_style p_es
stream for reading data file
Definition parser.h:323
bool p_isComment() const
Definition parser.h:334
void getToken(T var[], size_t n)
Definition parser.h:479
void checkEOD()
Definition parser.h:562
void warning(const string &msg, FILE *io=ioQQQ)
Definition parser.cpp:1486
Definition depth_table.h:8
const char * key(void) const
Definition parser.h:597
V m_action
Definition parser.h:592
const char *const m_keyword
Definition parser.h:591
void operator()(realnum *v) const
Definition parser.h:601
KeyAction(const char *keyword, const V &action)
Definition parser.h:594
Opts
Definition parser.h:896
@ BOOL
Definition parser.h:896
@ LONG
Definition parser.h:896
@ STRING
Definition parser.h:896
@ INVALID
Definition parser.h:896
@ OPTION
Definition parser.h:896
@ REAL
Definition parser.h:896
long i
Definition parser.h:900
bool l
Definition parser.h:899
Option(long val)
Definition parser.h:909
string s
Definition parser.h:903
Option(bool val)
Definition parser.h:904
double r
Definition parser.h:901
Quoted
Definition parser.h:897
@ QUOTED
Definition parser.h:897
@ NOTQUOTED
Definition parser.h:897
Option(double val)
Definition parser.h:914
Option(const string &val, enum Quoted q)
Definition parser.h:919
enum Option::Opts opttype
Symbol getSymbol()
Definition parser.cpp:990
int nMatch1(const char *chKey) const
Definition parser.h:136
Parser(const CloudyCommand *commands)
Definition parser.h:61
long int GetElem(void) const
Definition parser.cpp:402
bool m_lgEOL
Definition parser.h:49
double FFmtRead(void)
Definition parser.cpp:561
bool nMatch(const char *chKey) const
Definition parser.h:164
void showLocation(FILE *io=ioQQQ) const
Definition parser.cpp:156
string m_card
Definition parser.h:44
int getElement()
Definition parser.cpp:902
bool lgReachedEnd()
Definition parser.cpp:150
t_wavl getWaveOpt()
Definition parser.cpp:437
bool Command(const char *name, OptionParser doOpts)
Definition parser.h:213
bool nMatchErase(const char *chKey)
Definition parser.h:188
const char * nWord(const char *chKey) const
Definition parser.cpp:43
bool getline()
Definition parser.cpp:316
bool hasCommand(const string &s2)
Definition parser.cpp:834
void readList(vector< string > &list, const char *chName)
Definition parser.cpp:1115
LineID getLineID(bool lgAtStart=true)
Definition parser.cpp:673
bool peekNextCommand(const string &s2)
Definition parser.cpp:850
void newlineProcess()
Definition parser.cpp:86
bool GetParam(const char *chKey, double *val)
Definition parser.h:168
void set_point(long int ipnt)
Definition parser.h:108
const char * StandardEnergyUnit(void) const
Definition parser.cpp:367
double getNumberCheckAlwaysLog(const char *chDesc)
Definition parser.cpp:516
Parser(void)
Definition parser.h:57
void getPairs(vector< double > &a, vector< double > &b)
Definition parser.cpp:934
std::map< string, size_t > m_uniqueLen
Definition parser.h:52
char current(void) const
Definition parser.h:88
long int m_len
Definition parser.h:47
string getFirstChunk(long i)
Definition parser.cpp:643
bool m_lgDSet
Definition parser.h:55
void skip_whitespace()
Definition parser.cpp:56
int GetQuote(string &chLabel)
Definition parser.cpp:259
bool isComment(void) const
Definition parser.cpp:186
bool last(void) const
Definition parser.cpp:242
bool lgEOL(void) const
Definition parser.h:126
string StandardFluxUnit(void) const
Definition parser.cpp:371
double getNumberPlain(const char *chDesc)
Definition parser.cpp:477
string m_getCommandToken() const
Definition parser.cpp:895
double getNumberCheckLogLinNegImplLog(const char *chDesc)
Definition parser.cpp:499
std::map< string, double > m_symtab
Definition parser.h:51
char current_raw() const
Definition parser.cpp:52
double getNumberCheck(const char *chDesc)
Definition parser.cpp:481
t_wavl getWave()
Definition parser.cpp:468
NORETURN void NoNumb(const char *chDesc) const
Definition parser.cpp:426
double getNumberCheckAlwaysLogLim(const char *chDesc, double flim)
Definition parser.cpp:522
std::string getVarName(void)
Definition parser.cpp:194
void echo(void) const
Definition parser.cpp:235
bool nMatchSkip(const string &chKey, size_t nmin=4)
Definition parser.cpp:61
void setline(const string &card)
Definition parser.cpp:353
double getNumberDefault(const char *chDesc, double fdef)
Definition parser.cpp:490
string ClosestMatch(const string &token) const
Definition parser.cpp:865
bool m_lgEOF
Definition parser.h:55
double getNumberDefaultAlwaysLog(const char *chDesc, double fdef)
Definition parser.cpp:535
const CloudyCommand *const m_Commands
Definition parser.h:50
long int m_nqh
Definition parser.h:54
void init()
Definition parser.h:66
string getFirstChunkRaw(long i)
Definition parser.cpp:658
string m_card_raw
Definition parser.h:45
void setEOL(bool val)
Definition parser.h:130
string getRawTail()
Definition parser.h:239
void doSetVar(void)
Definition parser.cpp:207
NORETURN void StringError() const
Definition parser.cpp:249
NORETURN void CommandError(void) const
Definition parser.cpp:300
size_t m_getUniqueLen(const string &s2) const
Definition parser.h:95
void readLaw(DepthTable &table)
Definition parser.cpp:1142
bool isVar(void) const
Definition parser.cpp:190
int PrintLine(FILE *fp) const
Definition parser.h:227
void help(FILE *fp) const
Definition parser.cpp:375
bool GetRange(const char *chKey, t_wavl &val1, t_wavl &val2)
Definition parser.h:177
long int m_off
Definition parser.h:48
NORETURN void Error(const char *msg) const
Definition parser.cpp:289
double getNumberDefaultNegImplLog(const char *chDesc, double fdef)
Definition parser.cpp:544
bool at_end() const
Definition parser.cpp:48
string m_card_comment
Definition parser.h:46
Properties()
Definition parser.h:934
bool m_lgDone
Definition parser.h:931
void setDone()
Definition parser.h:935
bool isDone() const
Definition parser.h:939
vector< pair< string, shared_ptr< Option > > > p
Definition parser.h:933
enum tokens toktype
Definition parser.h:36
Symbol(enum tokens t, const string &v)
Definition parser.h:38
tokens
Definition parser.h:35
@ NUMBER
Definition parser.h:35
@ EOSTAT
Definition parser.h:35
@ OPERATOR
Definition parser.h:35
@ ERROR
Definition parser.h:35
@ STRING
Definition parser.h:35
@ NAME
Definition parser.h:35
@ NTOKS
Definition parser.h:35
string value
Definition parser.h:37
void operator()(realnum *t) const
Definition parser.h:621
const realnum m_unit
Definition parser.h:617
UnitConverter(double unit)
Definition parser.h:619
Definition cddefines.h:1299
access_scheme
Definition cpu.h:257
@ AS_DEFAULT
Definition cpu.h:257
#define NORETURN
Definition cpu.h:461
void lines(void)
Definition prt_lines.cpp:56
void parse_save_colden(Parser &p, ostringstream &chHeader)
void ParseSet(Parser &p)
Definition parse_set.cpp:37
void ParseAbsMag(Parser &p)
Definition parse_absmag.cpp:9
void ParseGrain(Parser &p)
Definition parse_grain.cpp:12
void ParseInitFile(const string &chName)
Definition parse_init.cpp:47
void Parse_Save_Line_RT(Parser &p)
Definition save_line.cpp:203
void ParseF_nu(Parser &p, const char *chType, bool lgNU2)
Definition parse_f_nu.cpp:9
void ParseDont(Parser &p)
Definition parse_dont.cpp:28
void getTokenOptionalImpl(istringstream &iss, const string &, T &var)
Definition parser.h:256
void ParseAge(Parser &p)
Definition parse_age.cpp:38
void ParseSphere(Parser &p)
Definition parse_sphere.cpp:9
void ParseLineList(Parser &p, vector< LineID > &lines)
Definition prt_linesum.cpp:14
void ParseGrid(Parser &p)
Definition parse_grid.cpp:10
void ParseAgn(Parser &p)
Definition parse_agn.cpp:10
void ParseTest(Parser &p)
Definition parse_test.cpp:20
void ParseDatabaseH2(Parser &p)
Definition parse_atom_h2.cpp:10
void ParseRadius(Parser &p)
Definition parse_radius.cpp:13
void ParseDatabaseISO(long ipISO, Parser &p)
Definition parse_atom_iso.cpp:16
void ParsePrint(Parser &p)
Definition parse_print.cpp:134
void ParseExtinguish(Parser &p)
Definition parse_extinguish.cpp:9
void ParseRangeOption(Parser &p)
Definition parse_rangeoption.cpp:8
void ParseBlackbody(Parser &p)
Definition parse_blackbody.cpp:11
void ParseMap(Parser &p)
Definition parse_map.cpp:9
void ParseElement(Parser &p)
Definition parse_element.cpp:17
void ParseRatio(Parser &p)
Definition parse_ratio.cpp:10
void ParseNorm(Parser &p)
Definition parse_norm.cpp:10
void ParseCosmology(Parser &p)
Definition parse_cosmology.cpp:9
void ParseInterp(Parser &p)
Definition parse_interp.cpp:11
bool parserProcess(Parser &p, T *list, unsigned long nlist, V *value)
Definition parser.h:630
void ParseGlobule(Parser &p)
Definition parse_globule.cpp:11
bool isBoundaryChar(char c)
Definition parser.cpp:171
void ParseMetal(Parser &p)
Definition parse_metal.cpp:239
void ParseOptimize(Parser &p)
Definition parse_optimize.cpp:30
void ParseIonParI(Parser &p)
Definition parse_ionpar.cpp:11
void parse_save_average(Parser &p, long int ipPun, ostringstream &chHeader)
Definition save_average.cpp:11
void ParseTable(Parser &p)
Definition parse_table.cpp:94
void ParsePrtLineSum(Parser &p)
Definition prt_linesum.cpp:42
void ParseSave(Parser &p)
Definition parse_save.cpp:85
void ParseTrace(Parser &p)
Definition parse_trace.cpp:11
void ParseFluc(Parser &p)
Definition parse_fluc.cpp:9
void ParseAbundancesNonSolar(Parser &p)
void ParsePowerlawContinuum(Parser &p)
Definition parse_powerlawcontinuum.cpp:10
void ParseAbundances(Parser &p)
Definition parse_abundances.cpp:18
void ParseStop(Parser &p)
Definition parse_stop.cpp:17
const char * nWord(const char *chKey, const char *chCard)
Definition parser.cpp:103
void ParseConstant(Parser &p)
Definition parse_constant.cpp:14
void ParseIonPar(Parser &p, char chType)
Definition parse_ionpar.cpp:20
void ParseInit(Parser &p)
Definition parse_init.cpp:10
KeyAction< V > MakeKeyAction(const char *keyword, const V &action)
Definition parser.h:609
void ParseCrashDo(Parser &p)
Definition parse_crashdo.cpp:51
bool isSeparatorChar(char c)
Definition parser.cpp:181
void ParseBackgrd(Parser &p)
Definition parse_backgrd.cpp:10
void ParseIonParX(Parser &p)
Definition parse_ionpar.cpp:15
void ParseDLaw(Parser &p)
Definition parse_dlaw.cpp:10
void ParseIllumination(Parser &p)
Definition parse_illumination.cpp:11
eod_style
Definition parser.h:318
@ ES_STARS_AND_BLANKS
Definition parser.h:318
@ ES_STARS_ONLY
Definition parser.h:318
@ ES_NONE
Definition parser.h:318
@ ES_INVALID
Definition parser.h:318
void ParseHDEN(Parser &p)
Definition parse_hden.cpp:10
void ParseCosmicRays(Parser &p)
Definition parse_cosmic_rays.cpp:12
void(* OptionParser)(Parser &)
Definition parser.h:23
void ParseCMB(double z, long int *nqh)
Definition parse_CMB.cpp:10
void ParseCompile(Parser &p)
Definition parse_compile.cpp:14
void ParseCaseB(Parser &p)
Definition parse_caseb.cpp:9
void ParseCoronal(Parser &p)
Definition parse_coronal.cpp:14
void parse_save_line(Parser &p, bool lgLog3, ostringstream &chHeader, long int ipPun)
void ParseTLaw(Parser &p)
Definition parse_tlaw.cpp:13
STATIC long int ipPun
Definition save_do.cpp:368
void IntRead(istringstream &iss, const string &s, long long &value)
Definition service.cpp:649
void FPRead(istringstream &iss, const string &s, double &value)
Definition service.cpp:548
OptionParser action
Definition parser.h:27
const char * name
Definition parser.h:26
static const bool value
Definition cpu.h:447
Definition thirdparty.h:517
size_t findUniqueLen(trieNode *root, const string &token)
Definition thirdparty.cpp:5153
void insertToken(trieNode *root, const string &token)
Definition thirdparty.cpp:5129