libdballe  7.7
commonapi.h
1 #ifndef FDBA_COMMONAPI_H
2 #define FDBA_COMMONAPI_H
3 
4 #include "simple.h"
5 #include <dballe/core/record.h>
6 
7 namespace dballe {
8 namespace fortran {
9 
15 {
16 public:
17  enum AttrState {
24  };
25 
26 protected:
27  enum {
28  PERM_ANA_RO = (1 << 0),
29  PERM_ANA_WRITE = (1 << 1),
30  PERM_DATA_RO = (1 << 2),
31  PERM_DATA_ADD = (1 << 3),
32  PERM_DATA_WRITE = (1 << 4),
33  PERM_ATTR_RO = (1 << 5),
34  PERM_ATTR_WRITE = (1 << 6)
35  };
36 
37  int perms;
38  core::Record input;
39  bool station_context = false;
40  core::Record output;
41  core::Record qcinput;
42  core::Record qcoutput;
43  int qc_iter;
44  int qc_count;
45 
46  AttrState attr_state;
47 
48  // Varcode of the variable referred to by the next attribute operations
49  wreport::Varcode attr_varid;
50 
51  // Reference ID of the variable referred to by the next attribute operations
52  int attr_reference_id;
53 
54  // Last string returned by one of the spiega* functions, held here so
55  // that we can deallocate it when needed.
56  std::string cached_spiega;
57 
61  void set_permissions(const char* anaflag, const char* dataflag, const char* attrflag);
62 
67  Record& choose_input_record(const char*& param);
68 
73  Record& choose_output_record(const char*& param);
74 
76  void read_qc_list(std::vector<wreport::Varcode>& res_arr) const;
77 
78 public:
80  virtual ~CommonAPIImplementation();
81 
82  virtual void test_input_to_output();
83 
84  virtual int enqi(const char* param);
85  virtual signed char enqb(const char* param);
86  virtual float enqr(const char* param);
87  virtual double enqd(const char* param);
88  virtual const char* enqc(const char* param);
89 
90  virtual void seti(const char* param, int value);
91  virtual void setb(const char* param, signed char value);
92  virtual void setr(const char* param, float value);
93  virtual void setd(const char* param, double value);
94  virtual void setc(const char* param, const char* value);
95 
96  virtual void setcontextana();
97 
98  virtual void enqlevel(int& ltype1, int& l1, int& ltype2, int& l2);
99  virtual void setlevel(int ltype1, int l1, int ltype2, int l2);
100 
101  virtual void enqtimerange(int& ptype, int& p1, int& p2);
102  virtual void settimerange(int ptype, int p1, int p2);
103 
104  virtual void enqdate(int& year, int& month, int& day, int& hour, int& min, int& sec);
105  virtual void setdate(int year, int month, int day, int hour, int min, int sec);
106 
107  virtual void setdatemin(int year, int month, int day, int hour, int min, int sec);
108  virtual void setdatemax(int year, int month, int day, int hour, int min, int sec);
109 
110  virtual void unset(const char* param);
111  virtual void unsetall();
112  virtual void unsetb();
113 
114  virtual const char* spiegal(int ltype1, int l1, int ltype2, int l2);
115  virtual const char* spiegat(int ptype, int p1, int p2);
116  virtual const char* spiegab(const char* varcode, const char* value);
117 
118 
119  virtual const char* ancora();
120 
121  AttrState test_get_attr_state() const { return attr_state; }
122 };
123 
124 }
125 }
126 #endif
virtual void setdatemax(int year, int month, int day, int hour, int min, int sec)
Shortcut function to set maximum date for a query.
Record & choose_input_record(const char *&param)
Choose the input record to use for param.
virtual void unset(const char *param)
Remove one parameter from the input record.
virtual void setb(const char *param, signed char value)
Set one byte value into the input record.
virtual void setdatemin(int year, int month, int day, int hour, int min, int sec)
Shortcut function to set minimum date for a query.
virtual void enqlevel(int &ltype1, int &l1, int &ltype2, int &l2)
Shortcut function to read level data.
virtual signed char enqb(const char *param)
Read one byte value from the output record.
virtual void seti(const char *param, int value)
Set one integer value into the input record.
Common implementation of the set* and enq* machinery using input and output records.
Definition: commonapi.h:14
virtual void setlevel(int ltype1, int l1, int ltype2, int l2)
Shortcut function to set level data.
Key/value store where keys are strings and values are wreport variables.
Definition: record.h:16
Copyright (C) 2008–2010 ARPA-SIM urpsim@smr.arpa.emr.it
Definition: cmdline.h:17
Record & choose_output_record(const char *&param)
Choose the output record to use for param.
Definition: simple.h:10
virtual void setc(const char *param, const char *value)
Set one character value into the input record.
DB-All.E record.
Definition: core/record.h:83
AttrState
Definition: commonapi.h:17
void read_qc_list(std::vector< wreport::Varcode > &res_arr) const
Reads the list of QC values to operate on, for dba_voglioancora and dba_scusa.
virtual int enqi(const char *param)
Read one integer value from the output record.
virtual void unsetall()
Remove all parameters from the input record.
virtual void enqtimerange(int &ptype, int &p1, int &p2)
Shortcut function to read time range data.
virtual void settimerange(int ptype, int p1, int p2)
Shortcut function to set time range data.
virtual double enqd(const char *param)
Read one real*8 value from the output record.
virtual void setr(const char *param, float value)
Set one real value into the input record.
virtual const char * ancora()
Retrieve QC informations from the last variable returned by dammelo().
virtual float enqr(const char *param)
Read one real value from the output record.
virtual void unsetb()
Remove all B* parameters from the input record.
After a set *context_id or *var_related.
Definition: commonapi.h:23
virtual void enqdate(int &year, int &month, int &day, int &hour, int &min, int &sec)
Shortcut function to read date information.
virtual void setdate(int year, int month, int day, int hour, int min, int sec)
Shortcut function to set date information.
After a dammelo.
Definition: commonapi.h:19
virtual void setd(const char *param, double value)
Set one real*8 value into the input record.
virtual void setcontextana()
Shortcut function to set query parameters to the anagraphical context.
virtual const char * enqc(const char *param)
Read one character value from the output record.
After a prendilo.
Definition: commonapi.h:21
void set_permissions(const char *anaflag, const char *dataflag, const char *attrflag)
Set the permission bits, parsing the flags and doing consistency checks.
Implement a storage object for a group of related observation data.