Odil
A C++11 library for the DICOM standard
Loading...
Searching...
No Matches
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

namespace  odil
 
namespace  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); \
}
#define ODIL_MESSAGE_MANDATORY_FIELD_MACRO(name, tag, TValueType, function)
Definition Message.h:23

◆ 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)); \
}