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