#include <iostream>
#include <map>
#define REGISTER_PORT(map, key, value) map.insert(std::make_pair(key, (PORT_ADDR)value))
typedef volatile int* const PORT_ADDR;
typedef enum {PORT0, PORT1, PORT2, PORT3, PORT4, PORT5} PORT_TYPE;
using namespace std;
int main(int argc, char* argv[])
{
std::map<PORT_TYPE, PORT_ADDR> portMap;
REGISTER_PORT(portMap, PORT0, 0x42128005);
REGISTER_PORT(portMap, PORT1, 0x42128000);
REGISTER_PORT(portMap, PORT2, 0x42188004);
REGISTER_PORT(portMap, PORT3, 0x42128001);
REGISTER_PORT(portMap, PORT4, 0x42188005);
REGISTER_PORT(portMap, PORT5, 0x42128004);
for(auto iter = portMap.begin(); iter != portMap.end(); ++iter)
{
printf("[key: %d, Val: %p]\n", iter->first, iter->second);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKI2RlZmluZSBSRUdJU1RFUl9QT1JUKG1hcCwga2V5LCB2YWx1ZSkgbWFwLmluc2VydChzdGQ6Om1ha2VfcGFpcihrZXksIChQT1JUX0FERFIpdmFsdWUpKQoKdHlwZWRlZiB2b2xhdGlsZSBpbnQqIGNvbnN0IFBPUlRfQUREUjsKdHlwZWRlZiBlbnVtIHtQT1JUMCwgUE9SVDEsIFBPUlQyLCBQT1JUMywgUE9SVDQsIFBPUlQ1fSBQT1JUX1RZUEU7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewoJc3RkOjptYXA8UE9SVF9UWVBFLCBQT1JUX0FERFI+IHBvcnRNYXA7CglSRUdJU1RFUl9QT1JUKHBvcnRNYXAsIFBPUlQwLCAweDQyMTI4MDA1KTsKCVJFR0lTVEVSX1BPUlQocG9ydE1hcCwgUE9SVDEsIDB4NDIxMjgwMDApOwoJUkVHSVNURVJfUE9SVChwb3J0TWFwLCBQT1JUMiwgMHg0MjE4ODAwNCk7CglSRUdJU1RFUl9QT1JUKHBvcnRNYXAsIFBPUlQzLCAweDQyMTI4MDAxKTsKCVJFR0lTVEVSX1BPUlQocG9ydE1hcCwgUE9SVDQsIDB4NDIxODgwMDUpOwoJUkVHSVNURVJfUE9SVChwb3J0TWFwLCBQT1JUNSwgMHg0MjEyODAwNCk7CgoJZm9yKGF1dG8gaXRlciA9IHBvcnRNYXAuYmVnaW4oKTsgaXRlciAhPSBwb3J0TWFwLmVuZCgpOyArK2l0ZXIpCgl7CgkJcHJpbnRmKCJba2V5OiAlZCwgVmFsOiAlcF1cbiIsIGl0ZXItPmZpcnN0LCBpdGVyLT5zZWNvbmQpOwoJfQoKCXJldHVybiAwOwp9