Odil
A C++11 library for the DICOM standard
Classes | Namespaces | Macros
Message.h File Reference
#include "odil/DataSet.h"
#include "odil/odil.h"
#include "odil/registry.h"
#include "odil/Value.h"
Include dependency graph for Message.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  odil::message::Message
 Base class for all DIMSE messages. More...
 

Namespaces

 odil
 
 odil::message
 

Macros

#define ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, TValueType, function)
 
#define ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, TValueType, function)
 
#define ODIL_MESSAGE_SET_OPTIONAL_FIELD_MACRO(dataset, name, tag, function)
 
#define ODIL_MESSAGE_MANDATORY_FIELD_INTEGER_MACRO(name, tag)   ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, Value::Integer, as_int)
 
#define ODIL_MESSAGE_MANDATORY_FIELD_STRING_MACRO(name, tag)   ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, Value::String, as_string)
 
#define ODIL_MESSAGE_OPTIONAL_FIELD_INTEGER_MACRO(name, tag)   ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, Value::Integer, as_int)
 
#define ODIL_MESSAGE_OPTIONAL_FIELD_STRING_MACRO(name, tag)   ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, Value::String, as_string)
 

Macro Definition Documentation

◆ ODIL_MESSAGE_MANDATORY_FIELD_INTEGER_MACRO

#define ODIL_MESSAGE_MANDATORY_FIELD_INTEGER_MACRO (   name,
  tag 
)    ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, Value::Integer, as_int)

◆ ODIL_MESSAGE_MANDATORY_FIELD_MACRO

#define ODIL_MESSAGE_MANDATORY_FIELD_MACRO (   name,
  tag,
  TValueType,
  function 
)
Value:
\
TValueType const & get_##name() const \
{ \
auto const & data = this->_command_set->function(tag); \
if(data.empty()) \
{ \
throw Exception("Empty element"); \
} \
return data[0]; \
} \ \
void set_##name(TValueType const & value) \
{ \
if(!this->_command_set->has(tag)) \
{ \
this->_command_set->add(tag); \
} \
this->_command_set->function(tag) = { value }; \
}

◆ ODIL_MESSAGE_MANDATORY_FIELD_STRING_MACRO

#define ODIL_MESSAGE_MANDATORY_FIELD_STRING_MACRO (   name,
  tag 
)    ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, Value::String, as_string)

◆ ODIL_MESSAGE_OPTIONAL_FIELD_INTEGER_MACRO

#define ODIL_MESSAGE_OPTIONAL_FIELD_INTEGER_MACRO (   name,
  tag 
)    ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, Value::Integer, as_int)

◆ ODIL_MESSAGE_OPTIONAL_FIELD_MACRO

#define ODIL_MESSAGE_OPTIONAL_FIELD_MACRO (   name,
  tag,
  TValueType,
  function 
)
Value:
ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, TValueType, function) \
bool has_##name() const \
{ \
return this->_command_set->has(tag);; \
} \
void delete_##name() \
{ \
this->_command_set->remove(tag); \
}

◆ ODIL_MESSAGE_OPTIONAL_FIELD_STRING_MACRO

#define ODIL_MESSAGE_OPTIONAL_FIELD_STRING_MACRO (   name,
  tag 
)    ODIL_MESSAGE_OPTIONAL_FIELD_MACRO(name, tag, Value::String, as_string)

◆ ODIL_MESSAGE_SET_OPTIONAL_FIELD_MACRO

#define ODIL_MESSAGE_SET_OPTIONAL_FIELD_MACRO (   dataset,
  name,
  tag,
  function 
)
Value:
if(dataset->has(tag)) \
{ \
this->set_##name(dataset->function(tag, 0)); \
}
ODIL_MESSAGE_MANDATORY_FIELD_MACRO
#define ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, TValueType, function)
Definition: Message.h:32