MCPcopy Create free account
hub / github.com/CruiserOne/Astrolog / PchGetParameter

Function PchGetParameter

express.cpp:2077–2235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2075// Also update the command line position to point after the parameter.
2076
2077CONST char *PchGetParameter(CONST char *pchCur, PAR *rgpar, int ifun,
2078 int iParam, flag fEval)
2079{
2080 char sz[cchSzMax*2], szT[cchSzMax], ch1, ch, *pchEdit;
2081 CONST char *rgpchEval[2], *pchParam, *pchT;
2082 int ifunT, iParamT, cch, n;
2083 real r;
2084 PAR rgpar2[4+1];
2085 flag fSkipEval;
2086
2087 // Skip whitespace.
2088 while (*pchCur == ' ')
2089 pchCur++;
2090 if (*pchCur == chNull) {
2091 if (ifun >= 0) {
2092 sprintf(szT, " (%d required) of function %s", rgfun[ifun].nParam,
2093 rgfun[ifun].szName);
2094 } else
2095 *szT = chNull;
2096 sprintf(sz, "Couldn't get parameter %d%s due to end of line.\n", iParam,
2097 szT);
2098 PrintWarning(sz);
2099 goto LError;
2100 }
2101
2102 // Get parameter string.
2103 for (pchParam = pchCur; *pchCur && *pchCur != ' '; pchCur++)
2104 ;
2105 cch = (int)(pchCur - pchParam);
2106 ch1 = *pchParam;
2107
2108 // Evaluate the parameter. First check for integer or real number.
2109 if (FNumCh(ch1) || ((ch1 == '-' || ch1 == '#') && cch > 1)) {
2110 for (pchT = pchParam; pchT < pchCur; pchT++)
2111 if (*pchT == '.') {
2112 rgpar[0].r = atof(pchParam);
2113 rgpar[0].fReal = fTrue;
2114 goto LDone;
2115 }
2116
2117 CopyRgchToSz(pchParam, cch, szT, cchSzMax);
2118 rgpar[0].n = NFromSz(szT);
2119 rgpar[0].fReal = fFalse;
2120 goto LDone;
2121 }
2122
2123 // Check for variable name.
2124 if (ch1 == '%') {
2125 ch = ChCap(pchParam[1]);
2126 if (FCapCh(ch)) {
2127 rgpar[0].n = ch - '@';
2128 rgpar[0].fReal = fFalse;
2129 goto LDone;
2130 }
2131 if (FNumCh(ch)) {
2132 rgpar[0].n = atoi(pchParam + 1);
2133 rgpar[0].fReal = fFalse;
2134 goto LDone;

Callers 2

FEvalFunctionFunction · 0.85
GetParameterFunction · 0.85

Calls 8

PrintWarningFunction · 0.85
CopyRgchToSzFunction · 0.85
NFromSzFunction · 0.85
FEnsureParVarFunction · 0.85
NParseSzFunction · 0.85
RParseSzFunction · 0.85
ILookupTrieFunction · 0.85
FEvalFunctionFunction · 0.85

Tested by

no test coverage detected