NSVD Reader  0.0.1
normalized_visitor.hpp File Reference

normalized visitor More...

#include <type_traits>
#include <cassert>
#include <memory>
#include "nodamushi/visitor/visitor.hpp"

Go to the source code of this file.

Classes

struct  nodamushi::svd::normalized::handleVisit< CONTROLLER, VISITOR, T >
 
struct  nodamushi::svd::normalized::normvisitor< VISITOR >
 
struct  nodamushi::svd::normalized::normvisitor< VISITOR >::__dummy_visitor_
 
struct  nodamushi::svd::normalized::is_same< T1, T2 >
 

Namespaces

 nodamushi
 
 nodamushi::svd
 
 nodamushi::svd::normalized
 

Macros

#define NORM_VISITOR_INIT
 initialize normalized visitor class.define accept method More...
 
#define NORM_Visit_Device(v, ...)
 svd visit device function More...
 
#define NORM_PostVisit_Device(v, ...)
 svd visit device after function More...
 
#define NORM_Visit_Peripheral(v, ...)
 svd visit peripheral function More...
 
#define NORM_PostVisit_Peripheral(v, ...)
 svd visit peripheral after function More...
 
#define NORM_Visit_Interrupt(v, ...)
 
#define NORM_Visit_AddressBlock(v, ...)   VISITOR_MEMBER result visit(::nodamushi::svd::normalized::AddressBlock __VA_ARGS__& v)
 
#define NORM_Visit_Cluster(v, ...)
 
#define NORM_PostVisit_Cluster(v, ...)
 
#define NORM_Visit_Register(v, ...)
 
#define NORM_PostVisit_Register(v, ...)
 
#define NORM_Visit_Field(v, ...)
 
#define NORM_PostVisit_Field(v, ...)
 
#define NORM_Visit_EnumeratedValues(v, ...)
 
#define NORM_PostVisit_EnumeratedValues(v, ...)
 
#define NORM_Visit_EnumeratedValue(v, ...)
 
#define __NX_NORM_HANDLE_VISIT(type)
 

Detailed Description

normalized visitor

sample code
// DON'T use local class/struct
struct my_visitor
{
using this_t = my_visitor; // set this class name
#undef VISITOR_MEMBER // reset VISITOR_MEMBER(this macro is used in SVDVISITOR_INIT)
#define VISITOR_MEMBER static // set member type static
// #define VISITOR_MEMBER // * non-static version
NORM_VISITOR_INIT; // initialize macro
//-------------------------------
// visit functions
// implement the necessary elements
// if you nead const prefix, define functions the following:
// NORM_Visit_Device(v,const){
NORM_Visit_Device(v){ // v = nodamushi::svd::Device
return CONTINUE;
}
NORM_Visit_Peripheral(v){// v = nodamushi::svd::Peripheral
return CONTINUE;
}
NORM_Visit_Interrupt(v){// v = nodamushi::svd::Interrupt
return CONTINUE;
}
NORM_Visit_AddressBlock(v){// v = nodamushi::svd::AddressBlock
return CONTINUE;
}
NORM_Visit_Register(v){// v = nodamushi::svd::Register
return CONTINUE;
}
NORM_Visit_Field(v){// v = nodamushi::svd::Field
return CONTINUE;
}
NORM_Visit_EnumeratedValues(v){ // field.enumeratedValue
return CONTINUE;
}
}
//
// call visitor
//
// my_visitor::accept(device); //static
// my_visitor::accept(device, my_visitor() );// non-static
//

see sample/normalize_sample.cpp sample code.

Definition in file normalized_visitor.hpp.

Macro Definition Documentation

◆ __NX_NORM_HANDLE_VISIT

#define __NX_NORM_HANDLE_VISIT (   type)
Value:
template<typename CONTROLLER, \
typename VISITOR, \
class A> \
struct handleVisit<CONTROLLER,VISITOR,type<A>>{ \
template<typename T,typename V> \
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

Definition at line 235 of file normalized_visitor.hpp.

◆ NORM_PostVisit_Cluster

#define NORM_PostVisit_Cluster (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result postVisit(::nodamushi::svd::normalized::Cluster<S> __VA_ARGS__& v)

Definition at line 153 of file normalized_visitor.hpp.

◆ NORM_PostVisit_Device

#define NORM_PostVisit_Device (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result postVisit(::nodamushi::svd::normalized::Device<S>__VA_ARGS__& v)

svd visit device after function

Definition at line 134 of file normalized_visitor.hpp.

◆ NORM_PostVisit_EnumeratedValues

#define NORM_PostVisit_EnumeratedValues (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result postVisit(__VA_ARGS__ ::nodamushi::svd::normalized::Enumeration<S>& v)

Definition at line 168 of file normalized_visitor.hpp.

◆ NORM_PostVisit_Field

#define NORM_PostVisit_Field (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result postVisit(::nodamushi::svd::normalized::Field<S> __VA_ARGS__ & v)
normalized field element
Definition: Field.hpp:32

Definition at line 163 of file normalized_visitor.hpp.

◆ NORM_PostVisit_Peripheral

#define NORM_PostVisit_Peripheral (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result postVisit(::nodamushi::svd::normalized::Peripheral<S>__VA_ARGS__& v)
normalized peripheral element

svd visit peripheral after function

Definition at line 141 of file normalized_visitor.hpp.

◆ NORM_PostVisit_Register

#define NORM_PostVisit_Register (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result postVisit(__VA_ARGS__ ::nodamushi::svd::normalized::Register<S>& v)

Definition at line 158 of file normalized_visitor.hpp.

◆ NORM_Visit_AddressBlock

#define NORM_Visit_AddressBlock (   v,
  ... 
)    VISITOR_MEMBER result visit(::nodamushi::svd::normalized::AddressBlock __VA_ARGS__& v)

Definition at line 147 of file normalized_visitor.hpp.

◆ NORM_Visit_Cluster

#define NORM_Visit_Cluster (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(::nodamushi::svd::normalized::Cluster<S>__VA_ARGS__& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

Definition at line 151 of file normalized_visitor.hpp.

◆ NORM_Visit_Device

#define NORM_Visit_Device (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(::nodamushi::svd::normalized::Device<S>__VA_ARGS__& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

svd visit device function

Definition at line 131 of file normalized_visitor.hpp.

◆ NORM_Visit_EnumeratedValue

#define NORM_Visit_EnumeratedValue (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(__VA_ARGS__ ::nodamushi::svd::normalized::EnumeratedValue<S>& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

Definition at line 170 of file normalized_visitor.hpp.

◆ NORM_Visit_EnumeratedValues

#define NORM_Visit_EnumeratedValues (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(__VA_ARGS__::nodamushi::svd::normalized::Enumeration<S>& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

Definition at line 166 of file normalized_visitor.hpp.

◆ NORM_Visit_Field

#define NORM_Visit_Field (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(__VA_ARGS__ ::nodamushi::svd::normalized::Field<S>& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

Definition at line 161 of file normalized_visitor.hpp.

◆ NORM_Visit_Interrupt

#define NORM_Visit_Interrupt (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(::nodamushi::svd::normalized::Interrupt<S>__VA_ARGS__& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310
normalized interrupt element
Definition: Interrupt.hpp:23

Definition at line 144 of file normalized_visitor.hpp.

◆ NORM_Visit_Peripheral

#define NORM_Visit_Peripheral (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(::nodamushi::svd::normalized::Peripheral<S>__VA_ARGS__& v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310
normalized peripheral element

svd visit peripheral function

Definition at line 138 of file normalized_visitor.hpp.

◆ NORM_Visit_Register

#define NORM_Visit_Register (   v,
  ... 
)
Value:
template<typename S> \
VISITOR_MEMBER result visit(::nodamushi::svd::normalized::Register<S> __VA_ARGS__ & v)
::nodamushi::visitor::result visit(RC &rcvec, VISITOR &v)
Definition: Cluster.hpp:310

Definition at line 156 of file normalized_visitor.hpp.

◆ NORM_VISITOR_INIT

#define NORM_VISITOR_INIT

initialize normalized visitor class.define accept method

Definition at line 82 of file normalized_visitor.hpp.