00001
00013 #ifndef auto_wsv_groups_h
00014 #define auto_wsv_groups_h
00015
00016 #include "los.h"
00017 #include "absorption.h"
00018
00021 #define N_WSV_GROUPS 14
00022
00026 enum WsvGroup{
00027 Index_,
00028 Numeric_,
00029 String_,
00030 Vector_,
00031 Matrix_,
00032 ArrayOfIndex_,
00033 ArrayOfString_,
00034 ArrayOfVector_,
00035 ArrayOfMatrix_,
00036 ArrayOfLineRecord_,
00037 ArrayOfArrayOfLineRecord_,
00038 ArrayOfLineshapeSpec_,
00039 TagGroups_,
00040 Los_,
00041 };
00042
00048 class WsvP {
00049 public:
00050 virtual operator Index*(){safety();return NULL;};
00051 virtual operator Numeric*(){safety();return NULL;};
00052 virtual operator String*(){safety();return NULL;};
00053 virtual operator Vector*(){safety();return NULL;};
00054 virtual operator Matrix*(){safety();return NULL;};
00055 virtual operator ArrayOfIndex*(){safety();return NULL;};
00056 virtual operator ArrayOfString*(){safety();return NULL;};
00057 virtual operator ArrayOfVector*(){safety();return NULL;};
00058 virtual operator ArrayOfMatrix*(){safety();return NULL;};
00059 virtual operator ArrayOfLineRecord*(){safety();return NULL;};
00060 virtual operator ArrayOfArrayOfLineRecord*(){safety();return NULL;};
00061 virtual operator ArrayOfLineshapeSpec*(){safety();return NULL;};
00062 virtual operator TagGroups*(){safety();return NULL;};
00063 virtual operator Los*(){safety();return NULL;};
00064
00065 virtual ~WsvP(){};
00066
00067 private:
00073 void safety() {
00074 cerr << "Internal error: Tried to convert a WsvP "
00075 << "pointer to the wrong type.\n";
00076 exit(1);
00077 };
00078 };
00079
00080 #endif // auto_wsv_groups_h