16 const char *
nWord(
const char *chKey,
44 explicit Parser(
void) : m_Commands(NULL)
55 m_nqh = m_nInitFile = 0;
56 m_lgDSet = m_lgEOF =
false;
73 strncpy(m_card_raw,card,INPUT_LINE_LENGTH);
81 const char *
nWord(
const char *chKey)
const;
88 long int GetElem(
void )
const;
90 double getNumberPlain(
const char *chDesc );
91 double getNumberCheck(
const char *chDesc );
92 double getNumberDefault(
const char *chDesc,
double fdef );
93 double getNumberCheckLogLinNegImplLog(
const char *chDesc );
94 double getNumberCheckAlwaysLog(
const char *chDesc );
95 double getNumberCheckAlwaysLogLim(
const char *chDesc,
double flim );
96 double getNumberDefaultAlwaysLog(
const char *chDesc,
double fdef );
97 double getNumberDefaultNegImplLog(
const char *chDesc,
double fdef );
106 NORETURN void NoNumb(
const char *chDesc)
const;
115 for (
const char *q=p; *q; ++q)
120 const char *q =
::nWord(p, m_card);
137 return nMatch1(chKey) != 0;
141 int i = nMatch1(chKey);
148 bool GetRange(
const char *chKey,
double *val1,
double *val2)
150 int i = nMatch1(chKey);
164 bool found = (i != 0);
167 char *ptr = m_card+i-1;
168 const long len = strlen(p);
170 for (
long i=0; i<len; ++i)
179 size_t len = strlen(s2);
180 int val = ::strncmp(m_card, s2, len);
189 bool lgFound = (this->strcmp(name) == 0);
194 bool isComment(
void)
const;
195 bool isCommandComment(
void)
const;
196 bool isVar(
void)
const;
197 std::string getVarName(
void);
199 void echo(
void)
const;
202 return m_lgEOF || m_card[0] ==
' ';
206 return fprintf( fp,
" ==%-.80s==\n", m_card_raw);
208 NORETURN void CommandError(
void)
const;
218 return string(m_card).substr(0,i);
222 return string(m_card_raw+(m_ptr-m_card));
224 void help(FILE *fp)
const;
227 void getLineID(
char *LabelBuf,
realnum *wave);
231 template <
typename V>
237 m_keyword(keyword), m_action(action) {}
239 const char *
key(
void)
const 250 template <
typename V>
271 template <
typename T,
typename V>
273 unsigned long nlist, V *value)
275 bool lgFound =
false;
276 for (
unsigned long option=0; option < nlist; ++option)
278 if( p.
nWord( list[option].key() ) )
280 list[option]( value );
void Parse_Save_Line_RT(Parser &p)
void ParseCosmology(Parser &p)
const char * key(void) const
void ParseIonParX(Parser &p)
void parse_save_colden(Parser &p, char chHeader[])
void setline(const char *const card)
bool Command(const char *name, OptionParser doOpts)
void ParseAtomISO(long ipISO, Parser &p)
string getCommand(long i)
void ParseRangeOption(Parser &p)
long nMatch(const char *chKey, const char *chCard)
bool nMatchErase(const char *chKey)
void ParseHDEN(Parser &p)
void ParseElement(Parser &p)
void ParseTest(Parser &p)
bool parserProcess(Parser &p, T *list, unsigned long nlist, V *value)
void ParseRadius(Parser &p)
bool isBoundaryChar(char c)
void ParseCaseB(Parser &p)
void ParseGrain(Parser &p)
void operator()(realnum *t) const
int PrintLine(FILE *fp) const
int GetQuote(char *chLabel, bool lgABORT)
int GetQuote(char *chLabel, char *chCard, char *chCardRaw, bool lgABORT)
void ParseExtinguish(Parser &p)
void ParseSave(Parser &p)
void ParseDrive(Parser &p)
bool nMatch(const char *chKey) const
const char * nWord(const char *chKey, const char *chCard)
void ParseTable(Parser &p)
void set_point(long int ipnt)
void operator()(realnum *v) const
void ParsePowerlawContinuum(Parser &p)
void ParseAtomH2(Parser &p)
const int INPUT_LINE_LENGTH
void ParseIonPar(Parser &p, char chType)
void ParseCMB(double z, long int *nqh)
void ParseAbundances(Parser &p)
void ParseCosmicRays(Parser &p)
string StandardFluxUnit(const char *chCard)
const char * nWord(const char *chKey) const
int strcmp(const char *s2)
void newlineProcess(void)
void ParseAbundancesNonSolar(Parser &p)
void ParseIlluminate(Parser &p)
void ParsePrtLineSum(Parser &p)
void ParseRatio(Parser &p)
void ParsePlot(Parser &p)
void ParseCompile(Parser &p)
void ParseConstant(Parser &p)
void ParseInit(Parser &p)
void ParseState(Parser &p)
KeyAction< V > MakeKeyAction(const char *keyword, const V &action)
const char * StandardEnergyUnit(const char *chCard)
void ParsePrint(Parser &p)
void ParseNorm(Parser &p)
void ParseAbsMag(Parser &p)
void ParseOptimize(Parser &p)
KeyAction(const char *keyword, const V &action)
bool GetParam(const char *chKey, double *val)
void ParseIonParI(Parser &p)
Parser(const CloudyCommand *commands)
const CloudyCommand *const m_Commands
void ParseGrid(Parser &p)
void ParseGlobule(Parser &p)
void ParseMetal(Parser &p)
const char *const m_keyword
void ParseDont(Parser &p)
int nMatch1(const char *chKey) const
void parse_save_line(Parser &p, bool lgLog3, char *chHeader)
void ParseBlackbody(Parser &p)
void parse_save_average(Parser &p, long int ipPun, char *chHeader)
void ParseBackgrd(Parser &p)
void ParseF_nu(Parser &p, const char *chType, bool lgNU2)
void(* OptionParser)(Parser &)
bool GetRange(const char *chKey, double *val1, double *val2)
UnitConverter(double unit)
void ParseCrashDo(Parser &p)
void ParseFluc(Parser &p)
std::map< string, double > m_symtab
void ParseSphere(Parser &p)
void ParseDLaw(Parser &p)
void ParseTLaw(Parser &p)
void ParseTrace(Parser &p)
void ParseCoronal(Parser &p)
void ParseInterp(Parser &p)
double FFmtRead(const char *chCard, long int *ipnt, long int last, bool *lgEOL)
void ParseStop(Parser &p)