S3FC project page S3FC home page

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

s3_streamable.h File Reference

s3_streamable.h
Id:
s3_streamable.h,v 1.1.1.1 2003/01/31 09:51:18 alberts3 Exp
Classes used to create and manipulate streamable objects. More...

#include <s3fc/s3_macros.h>
#include <cstring>
#include <vector>
#include <string>
#include <complex>
#include <s3fc/s3_streamable.tcc>

Include dependency graph for s3_streamable.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Compounds

class  s3_pack_buffer
 An s3_pack_buffer one or more packed objects. More...

class  s3_streamable
struct  s3_streamable_dispatcher
struct  s3_streamable_helper_other< std::string >
 s3_streamable_helper_other specialisation for string. More...

struct  s3_streamable_helper_pod
 Note: Never call any function in this class directly - these should only be called from s3_streamable_dispatcher<T, s3_typegroup_pod>. More...

struct  s3_streamable_helper_stl
 This is the helper class that is invoked to pack types in the s3_typegroup_stl_seq. More...

struct  s3_streamable_helper_streamable
 Note: Never call any function in this class directly - these should only be called from s3_streamable_dispatcher<T, s3_typegroup_streamable>. More...

class  s3_typegroup_other
 Tag class denoting a class that does not fall into any of th other categories. More...

class  s3_typegroup_pod
 Tag class denoting a POD (Plain Old Data) struct. More...

class  s3_typegroup_stl
 Tag class denoting a class that is an STL Sequence or an STL Unique Sorted Associative Container. More...

class  s3_typegroup_streamable
 Tag class denoting a class derived from s3_streamable. More...

struct  s3_typegroup_traits
 Alternative traits class that maps a type to a typegroup: this is used with that does not support partial template specialisations. More...


Defines

#define S3_TYPEGROUP_TRAITS_POD(T)
 Macro placing type T in typegroup POD (s3_typegroup_pod). More...

#define S3_TYPEGROUP_TRAITS_STREAMABLE(T)
 Macro placing type T in typegroup streamable (s3_typegroup_pod). More...

#define S3_TYPEGROUP_TRAITS_STREAMABLE_1(T)
 Macro placing type T in typegroup streamable (s3_typegroup_pod). More...

#define S3_TYPEGROUP_TRAITS_OTHER(T)
 Macro placing type T in typegroup OTHER (s3_typegroup_other). More...

#define S3_TYPEGROUP_TRAITS_STL_1(T)
 Macro placing type T in typegroup STL (s3_typegroup_stl). More...

#define S3_DECLARE_MAGIC_STRING   virtual const char* get_magic_string() const
 Use this to declare a function returning a magic string in a derived class of s3_streamable. More...

#define S3_DEFINE_MAGIC_STRING(C)
 Use this to define a function returning a magic string in a derived class of s3_streamable. More...

#define S3_DEFINE_MAGIC_STRING_T(C, T)

Functions

 S3_TYPEGROUP_TRAITS_OTHER (std::string)
 S3_TYPEGROUP_TRAITS_POD (bool)
 S3_TYPEGROUP_TRAITS_POD (char)
 S3_TYPEGROUP_TRAITS_POD (unsigned char)
 S3_TYPEGROUP_TRAITS_POD (short)
 S3_TYPEGROUP_TRAITS_POD (int)
 S3_TYPEGROUP_TRAITS_POD (long int)
 S3_TYPEGROUP_TRAITS_POD (float)
 S3_TYPEGROUP_TRAITS_POD (double)
 S3_TYPEGROUP_TRAITS_POD (std::complex< float >)
 S3_TYPEGROUP_TRAITS_POD (std::complex< double >)
 S3_TYPEGROUP_TRAITS_STL_1 (std::vector)


Detailed Description

s3_streamable.h
Id:
s3_streamable.h,v 1.1.1.1 2003/01/31 09:51:18 alberts3 Exp
Classes used to create and manipulate streamable objects.

Author:
Gerhard Esterhuizen <gesterhuizen@stonethree.com>
Date:
02/07/2001

Definition in file s3_streamable.h.


Define Documentation

#define S3_DECLARE_MAGIC_STRING   virtual const char* get_magic_string() const
 

Use this to declare a function returning a magic string in a derived class of s3_streamable.

Definition at line 765 of file s3_streamable.h.

#define S3_DEFINE_MAGIC_STRING  
 

Value:

const char* C::get_magic_string() const   \
     { return  #C; }
Use this to define a function returning a magic string in a derived class of s3_streamable.

Definition at line 771 of file s3_streamable.h.

#define S3_DEFINE_MAGIC_STRING_T C,
 
 

Value:

template <typename T>                      \
     const char* C<T>::get_magic_string() const \
     { return  #C; }

Definition at line 775 of file s3_streamable.h.

#define S3_TYPEGROUP_TRAITS_OTHER  
 

Value:

template<> \
struct s3_typegroup_traits<T > { \
   static inline s3_typegroup_other typegroup() { \
   return s3_typegroup_other(); \
   } \
 };
Macro placing type T in typegroup OTHER (s3_typegroup_other).

Definition at line 594 of file s3_streamable.h.

#define S3_TYPEGROUP_TRAITS_POD  
 

Value:

template<> \
struct s3_typegroup_traits<T > { \
   static inline s3_typegroup_pod typegroup() { \
   return s3_typegroup_pod(); \
   } \
 };
Macro placing type T in typegroup POD (s3_typegroup_pod).

Definition at line 563 of file s3_streamable.h.

#define S3_TYPEGROUP_TRAITS_STL_1  
 

Value:

template<typename T1> \
struct s3_typegroup_traits<T<T1> > { \
   static inline s3_typegroup_stl typegroup() { \
   return s3_typegroup_stl(); \
   } \
 };
Macro placing type T in typegroup STL (s3_typegroup_stl).

T has a declaration of the form template<typename T1> struct T;

Definition at line 606 of file s3_streamable.h.

#define S3_TYPEGROUP_TRAITS_STREAMABLE  
 

Value:

template<> \
struct s3_typegroup_traits<T > { \
   static inline s3_typegroup_streamable typegroup() { \
   return s3_typegroup_streamable(); \
   } \
 };
Macro placing type T in typegroup streamable (s3_typegroup_pod).

Definition at line 572 of file s3_streamable.h.

#define S3_TYPEGROUP_TRAITS_STREAMABLE_1  
 

Value:

template<typename T1> \
struct s3_typegroup_traits<T<T1> > { \
   static inline s3_typegroup_streamable typegroup() { \
   return s3_typegroup_streamable(); \
   } \
 };
Macro placing type T in typegroup streamable (s3_typegroup_pod).

T has a declaration of the form template<typename T1> struct T;

Definition at line 583 of file s3_streamable.h.


Function Documentation

S3_TYPEGROUP_TRAITS_OTHER std::string   
 

S3_TYPEGROUP_TRAITS_POD std::complex< double >   
 

S3_TYPEGROUP_TRAITS_POD std::complex< float >   
 

S3_TYPEGROUP_TRAITS_POD double   
 

S3_TYPEGROUP_TRAITS_POD float   
 

S3_TYPEGROUP_TRAITS_POD long    int
 

S3_TYPEGROUP_TRAITS_POD int   
 

S3_TYPEGROUP_TRAITS_POD short   
 

S3_TYPEGROUP_TRAITS_POD unsigned    char
 

S3_TYPEGROUP_TRAITS_POD char   
 

S3_TYPEGROUP_TRAITS_POD bool   
 

S3_TYPEGROUP_TRAITS_STL_1 std::vector   
 


Send comments to: s3fc@stonethree.com SourceForge Logo