Listing 3: CArg constructor and function CApp::add
CApp::CArg::CArg(
char* a_fn, char* a_m,
char* a_ev, flags a_f
) : m_name(a_fn),
m_message(a_m),
m_flags(a_f),
m_env_variable(a_ev)
{
CApp::add(this);
}
void CApp::add(CArg* arg)
{
assert(m_args_index <= m_args_max_index);
if (m_args_index == m_args_max_index) {
// We run put of space, copy them
if (m_args_index == 0) m_args_index = 1;
CApp_CArg_ptr* tmp =
new CApp_CArg_ptr[2 * m_args_index];
for (int i = 0; i < m_args_index; i++) {
tmp[i] = m_args[i];
}
delete m_args;
m_args = tmp;
m_args_max_index = 2 * m_args_max_index;
}
// We now have enough space
assert(m_args_index < m_args_max_index);
m_args[m_args_index] = arg;
m_args_index++;
}
//End of File