#include "tao/orbconf.h"
#include "tao/Basic_Types.h"
#include "tao/GIOP_Message_Version.h"
#include "tao/Message_Semantics.h"
#include "ace/CDR_Stream.h"
#include "tao/CDR.inl"
Classes | |
class | TAO_OutputCDR |
A CDR stream for writing, i.e. for marshalling. More... | |
class | TAO_InputCDR |
A CDR stream for reading, i.e. for demarshalling. More... |
Common Data Representation (CDR) marshaling streams.
This implementation assumes that the native numeric representation is two's complement for integers, IEEE single/double for floats. Also that characters are in ISO Latin/1.
Note that CDR itself makes no such assumptions, but this implementation makes such assumptions for reasons of efficiency. Careful enhancements could preserve that efficiency where the assumptions are true, yet still allow the code to work when they aren't true.
The implementation expects that buffers are aligned according to the strongest CDR alignment restriction.
NOTE: this does everything "CDR 1.1" does ... that is, it supports the five extended OMG-IDL data types in UNO Appendix A, which provide richer arithmetic types (64 bit integers, "quad precision" FP) and UNICODE-based characters and strings. Those types are not standard parts of OMG-IDL at this time.
THREADING NOTE: CDR data structures must be protected against concurrent access by their owning thread.