This is an unofficial library.
add include file.
see 'sample/visitor_sample.cpp'.
#include <string>
#include <iostream>
#include "nodamushi/svd/normalize.hpp"
struct visitor
{
using this_t = visitor;
#undef VISITOR_MEMBER
#define VISITOR_MEMBER
{
if(i.name && i.value)
std::cout << "interrupt:" <<*i.name << "," << *i.value<<std::endl;
return result::CONTINUE;
}
{
count_register++;
return result::CONTINUE;
}
int count_register=0;
};
int main(int argc,char** argv)
{
std::string filename = argv[1];
svd::boost_svd_reader svd(filename);
svd::Device<> device(svd);
device.vendor = "Foo Bar.inc";
device.description = "Foo Bar";
std::cout << device << std::endl;
if(device.cpu && device.cpu->name){
std::cout <<"Device CPU:"<< device.cpu->name.get() << std::endl;
}else{
std::cout << "Device CPU is not defined" << std::endl;
}
visitor v;
visitor::accept(device,v);
if(auto p = dptr->find_peripheral("UART2")){
for(auto& r:p->registers){
std::cout << "UART2 Register:"
<< r.name << ","
<< r.get_address() << std::endl;
}
}
}