00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00028 #ifndef methods_h
00029 #define methods_h
00030
00031 #include <iosfwd>
00032 #include "messages.h"
00033 #include "make_array.h"
00034
00035 #define NODEF "@@THIS_KEYWORD_HAS_NO_DEFAULT_VALUE@@"
00037 class MdRecord {
public:
00039 MdRecord():
mname( "" ),
mdescription( "" ),
mauthors( 0 ),
moutput( 0 ),
mgout( 0 ),
mgouttype( 0 ),
mgoutdesc( 0 ),
minput( 0 ),
mgin( 0 ),
mgintype( 0 ),
mgindefault( 0 ),
mgindesc( 0 ),
mset_method(false),
magenda_method(false),
msupergeneric(false),
msuppress_header(false),
mpass_workspace(false),
mpass_wsv_names(false),
mactual_groups("")
{};
// Initializing constructor. Implementation in methods_aux.cc.
MdRecord(const char name[],
const char description[],
const MakeArray<String>& authors,
const MakeArray<String>& output,
const MakeArray<String>& gout,
const MakeArray<String>& gouttype,
const MakeArray<String>& goutdesc,
const MakeArray<String>& input,
const MakeArray<String>& gin,
const MakeArray<String>& gintype,
const MakeArray<String>& gindefault _U_,
const MakeArray<String>& gindesc,
bool set_method = false,
bool agenda_method = false,
bool suppress_header = false,
bool pass_workspace = false,
bool pass_wsv_names = false
);
// Methods returning the lookup information:
const String& Name() const { return mname; }
const String& Description() const { return mdescription; }
const ArrayOfString& Authors() const { return mauthors; }
const ArrayOfIndex& Out() const { return moutput; }
const ArrayOfString& GOut() const { return mgout; }
const ArrayOfIndex& GOutType() const { return mgouttype; }
const ArrayOfArrayOfIndex& GOutSpecType() const { return mgoutspectype; }
const Array<String>& GOutDescription()const { return mgoutdesc; }
const ArrayOfIndex& In() const { return minput; }
const ArrayOfString& GIn() const { return mgin; }
const ArrayOfIndex& GInType() const { return mgintype; }
const ArrayOfArrayOfIndex& GInSpecType() const { return mginspectype; }
const Array<String>& GInDefault() const { return mgindefault; }
const Array<String>& GInDescription() const { return mgindesc; }
const ArrayOfIndex& InOnly() const { return minonly; }
const ArrayOfIndex& InOut() const { return minout; }
bool SetMethod() const { return mset_method; }
bool AgendaMethod() const { return magenda_method; }
bool Supergeneric() const { return msupergeneric; }
bool SuppressHeader() const { return msuppress_header; }
bool PassWorkspace() const { return mpass_workspace; }
bool PassWsvNames() const { return mpass_wsv_names; }
const String& ActualGroups() const { return mactual_groups; }
void SetPassWorkspace() { mpass_workspace = true; }
// Expand supergeneric method record to an actual group
// (documentation with implementation in method_aux.cc):
void subst_any_with_group( Index g );
void subst_any_with_specific_group( Index g );
00041
00050 ostream& PrintTemplate(ostream& os, bool show_description=true) const;
00052 /*! MdRecords cannot be assigned! */
MdRecord& operator=(const MdRecord& m){
out0 << "MdRecord cannot be assigned!\n"
00053 << "You tried to assign: " << m << "\n";
00054 arts_exit ();
00055 return *this;
00056 }
00057
00058
00059 friend void subst_any_with_group( MdRecord& mdd, Index g );
00060
00061 private:
00062
00064 String mname;
00065
00067 String mdescription;
00068
00070 ArrayOfString mauthors;
00071
00073 ArrayOfIndex moutput;
00074
00076 ArrayOfString mgout;
00077
00079 ArrayOfIndex mgouttype;
00080
00082
00083 ArrayOfArrayOfIndex mgoutspectype;
00084
00086 ArrayOfString mgoutdesc;
00087
00089 ArrayOfIndex minput;
00090
00092 ArrayOfString mgin;
00093
00095 ArrayOfIndex mgintype;
00096
00098
00099 ArrayOfArrayOfIndex mginspectype;
00100
00102 ArrayOfString mgindefault;
00103
00105 ArrayOfString mgindesc;
00106
00108 ArrayOfIndex minonly;
00109
00111 ArrayOfIndex minout;
00112
00114
00118 bool mset_method;
00119
00121
00125 bool magenda_method;
00126
00128
00132 bool msupergeneric;
00133
00135
00139 bool msuppress_header;
00140
00142
00146 bool mpass_workspace;
00147
00149
00154 bool mpass_wsv_names;
00155
00157
00160 String mactual_groups;
00161 };
00162
00163 void define_md_data_raw();
00164
00165 void expand_md_data_raw_to_md_data();
00166
00167 void define_md_map();
00168
00169 void define_md_raw_map();
00170
00171 ostream& operator<<(ostream& os, const MdRecord& mdr);
00172
00173 #endif // methods_h
00174