From 8c417384e29635c680745425abd630d5208cbaf2 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 18 Mar 2013 15:27:26 +0100 Subject: replace mod-param with generic "-config key=val"-param --- CCommandLine.cpp | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'CCommandLine.cpp') diff --git a/CCommandLine.cpp b/CCommandLine.cpp index 3df07b1..afb115d 100644 --- a/CCommandLine.cpp +++ b/CCommandLine.cpp @@ -31,18 +31,28 @@ void CCommandLine::AddParm(const char *psz) m_argc++; } -const char* CCommandLine::ParmValue(const char *psz, const char *pDefaultVal) const +const char* CCommandLine::ParmValues(const char *psz, unsigned int ix) const { - int nIndex = FindParm(psz); + int nIndex = FindParm(psz, ix); if((nIndex == 0) || (nIndex == m_argc - 1)) - return pDefaultVal; + return NULL; if(m_argv[nIndex + 1][0] == '-' || m_argv[nIndex + 1][0] == '+') - return pDefaultVal; + return NULL; return m_argv[nIndex + 1]; } +const char* CCommandLine::ParmValue(const char *psz, const char *pDefaultVal) const +{ + const char* cszValue = ParmValues(psz, 0); + + if(!cszValue) + return pDefaultVal; + + return cszValue; +} + int CCommandLine::ParmValue(const char *psz, int nDefaultVal) const { const char* cszValue = ParmValue(psz); @@ -58,12 +68,28 @@ unsigned int CCommandLine::ParmCount() const return m_argc; } -unsigned int CCommandLine::FindParm(const char *psz) const +unsigned int CCommandLine::FindParmCount(const char *psz) const +{ + unsigned cnt = 0; + for(int i = 1; i < m_argc; i++) + { + if(strcmp(m_argv[i], psz) == 0) + cnt++; + } + + return cnt; +} + +unsigned int CCommandLine::FindParm(const char *psz, unsigned int ix) const { for(int i = 1; i < m_argc; i++) { if(strcmp(m_argv[i], psz) == 0) - return i; + { + if (ix == 0) + return i; + ix--; + } } return 0; -- cgit v1.2.3