ACE_CDR Class Reference

Keep constants and some routines common to both Output and Input CDR streams. More...

#include <CDR_Base.h>

List of all members.

Public Types

enum  {
  OCTET_SIZE = 1, SHORT_SIZE = 2, LONG_SIZE = 4, LONGLONG_SIZE = 8,
  LONGDOUBLE_SIZE = 16, OCTET_ALIGN = 1, SHORT_ALIGN = 2, LONG_ALIGN = 4,
  LONGLONG_ALIGN = 8, LONGDOUBLE_ALIGN = 8, MAX_ALIGNMENT = 8, DEFAULT_BUFSIZE = ACE_DEFAULT_CDR_BUFSIZE,
  EXP_GROWTH_MAX = ACE_DEFAULT_CDR_EXP_GROWTH_MAX, LINEAR_GROWTH_CHUNK = ACE_DEFAULT_CDR_LINEAR_GROWTH_CHUNK
}
Basic OMG IDL Types
These types are for use in the CDR classes. The cleanest way to avoid complaints from all compilers is to define them all.

typedef ACE::If_Then_Else<
(sizeof(bool)==1), bool, unsigned
char >::result_typ 
Boolean )
typedef unsigned char Octet
typedef char Char
typedef wchar_t WChar
typedef ACE_INT16 Short
typedef ACE_UINT16 UShort
typedef ACE_INT32 Long
typedef ACE_UINT32 ULong
typedef ACE_UINT64 ULongLong
typedef long long LongLong

Static Public Member Functions

static void swap_2 (const char *orig, char *target)
static void swap_4 (const char *orig, char *target)
static void swap_8 (const char *orig, char *target)
static void swap_16 (const char *orig, char *target)
static void swap_2_array (const char *orig, char *target, size_t length)
static void swap_4_array (const char *orig, char *target, size_t length)
static void swap_8_array (const char *orig, char *target, size_t length)
static void swap_16_array (const char *orig, char *target, size_t length)
static void mb_align (ACE_Message_Block *mb)
static size_t first_size (size_t minsize)
static size_t next_size (size_t minsize)
static int grow (ACE_Message_Block *mb, size_t minsize)
static void consolidate (ACE_Message_Block *dst, const ACE_Message_Block *src)
static size_t total_length (const ACE_Message_Block *begin, const ACE_Message_Block *end)

Classes

struct  Double
struct  Float
struct  LongDouble


Detailed Description

Keep constants and some routines common to both Output and Input CDR streams.


Member Typedef Documentation

typedef ACE::If_Then_Else<(sizeof (bool) == 1), bool, unsigned char>::result_typ ACE_CDR::Boolean)
 

typedef char ACE_CDR::Char
 

typedef ACE_INT32 ACE_CDR::Long
 

typedef long long ACE_CDR::LongLong
 

typedef unsigned char ACE_CDR::Octet
 

typedef ACE_INT16 ACE_CDR::Short
 

typedef ACE_UINT32 ACE_CDR::ULong
 

typedef ACE_UINT64 ACE_CDR::ULongLong
 

typedef ACE_UINT16 ACE_CDR::UShort
 

typedef wchar_t ACE_CDR::WChar
 


Member Enumeration Documentation

anonymous enum
 

Enumerator:
OCTET_SIZE 
SHORT_SIZE 
LONG_SIZE 
LONGLONG_SIZE 
LONGDOUBLE_SIZE 
OCTET_ALIGN 
SHORT_ALIGN 
LONG_ALIGN 
LONGLONG_ALIGN 
LONGDOUBLE_ALIGN 
Note:
the CORBA LongDouble alignment requirements do not match its size...
MAX_ALIGNMENT  Maximal CDR 1.1 alignment: "quad precision" FP (i.e. "CDRLong double", size as above).
DEFAULT_BUFSIZE  The default buffer size.

Todo:
We want to add options to control this default value, so this constant should be read as the default default value ;-)
EXP_GROWTH_MAX  The buffer size grows exponentially until it reaches this size; afterwards it grows linearly using the next constant
LINEAR_GROWTH_CHUNK  Once exponential growth is ruled out the buffer size increases in chunks of this size, note that this constants have the same value right now, but it does not need to be so.


Member Function Documentation

void ACE_CDR::consolidate ACE_Message_Block dst,
const ACE_Message_Block src
[static]
 

Copy a message block chain into a single message block, preserving the alignment of the first message block of the original stream, not the following message blocks.

ACE_INLINE size_t ACE_CDR::first_size size_t  minsize  )  [static]
 

Compute the size of the smallest buffer that can contain at least <minsize> bytes. To understand how a "best fit" is computed look at the algorithm in the code. Basically the buffers grow exponentially, up to a certain point, then the buffer size grows linearly. The advantage of this algorithm is that is rapidly grows to a large value, but does not explode at the end.

int ACE_CDR::grow ACE_Message_Block mb,
size_t  minsize
[static]
 

Increase the capacity of mb to contain at least <minsize> bytes. If <minsize> is zero the size is increased by an amount at least large enough to contain any of the basic IDL types. Return -1 on failure, 0 on success.

void ACE_CDR::mb_align ACE_Message_Block mb  )  [static]
 

Align the message block to ACE_CDR::MAX_ALIGNMENT, set by the CORBA spec at 8 bytes.

ACE_INLINE size_t ACE_CDR::next_size size_t  minsize  )  [static]
 

Compute not the smallest, but the second smallest buffer that will fir <minsize> bytes.

ACE_INLINE void ACE_CDR::swap_16 const char *  orig,
char *  target
[static]
 

void ACE_CDR::swap_16_array const char *  orig,
char *  target,
size_t  length
[static]
 

ACE_INLINE void ACE_CDR::swap_2 const char *  orig,
char *  target
[static]
 

Do byte swapping for each basic IDL type size. There exist only routines to put byte, halfword (2 bytes), word (4 bytes), doubleword (8 bytes) and quadword (16 byte); because those are the IDL basic type sizes.

void ACE_CDR::swap_2_array const char *  orig,
char *  target,
size_t  length
[static]
 

ACE_INLINE void ACE_CDR::swap_4 const char *  orig,
char *  target
[static]
 

void ACE_CDR::swap_4_array const char *  orig,
char *  target,
size_t  length
[static]
 

ACE_INLINE void ACE_CDR::swap_8 const char *  orig,
char *  target
[static]
 

void ACE_CDR::swap_8_array const char *  orig,
char *  target,
size_t  length
[static]
 

size_t ACE_CDR::total_length const ACE_Message_Block begin,
const ACE_Message_Block end
[static]
 


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 15:48:15 2005 for ACE by  doxygen 1.4.5