void ActiveROM::LoadArgumentVector(Config& config) { vector<char> argdata; const vector<string>& argv = config.GetArgumentVector(); for (auto& arg : argv) { argdata.insert(argdata.end(), arg.begin(), arg.end()); argdata.push_back('\0'); } argdata.push_back('\0'); size_t romsize = argdata.size() + 3 * sizeof(uint32_t) + m_lineSize; m_numLines = romsize / m_lineSize; m_numLines = (romsize % m_lineSize == 0) ? m_numLines : (m_numLines + 1); m_data = new char [m_numLines * m_lineSize]; SerializeRegister(RT_INTEGER, 0x56475241, m_data, sizeof(uint32_t)); SerializeRegister(RT_INTEGER, argv.size(), m_data + 1 * sizeof(uint32_t), sizeof(uint32_t)); SerializeRegister(RT_INTEGER, argdata.size(), m_data + 2 * sizeof(uint32_t), sizeof(uint32_t)); memcpy(m_data + 3 * sizeof(uint32_t), &argdata[0], argdata.size()); if (m_verboseload) { clog << GetName() << ": argv data: " << dec << romsize << " bytes generated" << endl; } }