LandscapeDNDC 1.37.0
Loading...
Searching...
No Matches
synth-remotesensing.h
1
9
10#ifndef LDNDC_DATASYNTH_REMOTESENSING_H_
11#define LDNDC_DATASYNTH_REMOTESENSING_H_
12
13#include "synthesizers/synth-base-streamdata.h"
14#include "remotesensing/remotesensingtypes.h"
15#include "time/cbm_date.h"
16
17
18#define SYNTH_REMOTESENSING_REC_SIZE SYNTH_REC_SIZE_(remotesensing)
19
20#define SYNTH_REMOTESENSING_REC_S_DECL_GET(__reg__,__item__) SYNTH_REC_DECL_GET_(remotesensing,__reg__,s,__item__)
21#define SYNTH_REMOTESENSING_REC_D_DECL_GET(__reg__,__item__) SYNTH_REC_DECL_GET_(remotesensing,__reg__,d,__item__)
22
23#define SYNTH_REMOTESENSING_REC_S_DECL_GET_AND_CHK_VALID(__reg__,__item__) SYNTH_REC_DECL_GET_AND_CHK_VALID_(remotesensing,__reg__,s,__item__)
24#define SYNTH_REMOTESENSING_REC_D_DECL_GET_AND_CHK_VALID(__reg__,__item__) SYNTH_REC_DECL_GET_AND_CHK_VALID_(remotesensing,__reg__,d,__item__)
25
26#define SYNTH_REMOTESENSING_INVALIDATE_BUFFER(__buf__) SYNTH_INVALIDATE_BUFFER_(remotesensing,__buf__)
27
28#define SYNTH_REMOTESENSING_CHK_MATCHING(__item__) SYNTH_CHK_MATCHING_(remotesensing,__item__)
29
30#define SYNTH_REMOTESENSING_CALL_LOOP_TEST_AND_SET(__item__) SYNTH_CALL_LOOP_TEST_AND_SET_(remotesensing,__item__)
31#define SYNTH_REMOTESENSING_RETURN_SUCCESS(__item__) SYNTH_RETURN_SUCCESS_(remotesensing,__item__)
32
33
34template < typename, unsigned int >
35class lvector_t;
36
37namespace ldndc{ namespace remotesensing{ namespace synth
38{
39typedef record::item_type record_item_t;
40struct scratch_t : public ldndc::synth::streamdata_scratch_base_t< streamdata_info_t >
41{
42 lerr_t initialize(
43 remotesensing_info_t const * /* boundary info */,
44 ltime_t const * /* input date */,
45 ltime_t const * /* output date */);
46
47 lerr_t configure(
48 remotesensing_info_t const * /* boundary info */,
49 ldate_t const * /* current date */,
50 unsigned int /* current target subday */);
51};
52
53struct CBM_API item_base_t : public ldndc::synth::streamdata_item_base_t< streamdata_info_t, scratch_t >
54{
55};
56
57
58class CBM_API lsynth_remotesensing_t : public ldndc::synth::streamdata_synth_base_t< streamdata_info_t >
59{
60 public:
61 lsynth_remotesensing_t();
62 lsynth_remotesensing_t(
63 remotesensing_info_t const * /* remotesensing meta info */,
64 ltime_t const * /* input date */,
65 ltime_t const * /* output date */);
66
67 virtual ~lsynth_remotesensing_t();
68
73 lerr_t configure(
74 ldate_t const * /* target date */,
75 unsigned int = ldndc::invalid_t< unsigned int >::value /* target subday */);
76
81 lerr_t synthesize_record(
82 record_item_t const * /* subday data buffer (input) */, record_item_t * /* subday data buffer (output) */,
83 record_item_t const * /* day data buffer (input) */, record_item_t * /* day data buffer (output) */,
84
85 ldate_t const * /* current date */,
86
87 lvector_t< unsigned int, 1 > * = NULL /* modification count */);
88
96 lerr_t check_record(
97 record_item_t const * /* subday data buffer (input) */,
98 record_item_t const * /* day data buffer (input) */) const;
99
100 inline
101 unsigned int subday()
102 const
103 {
104 return this->scratch_.subday;
105 }
106
107 inline
108 unsigned int time_resolution_inout()
109 const
110 {
111 return this->scratch_.t_res_inout;
112 }
113
114 private:
115 remotesensing_info_t info_;
116 scratch_t scratch_;
117};
118extern item_base_t const * remotesensing_synthesizers[record::RECORD_SIZE];
119} /* namespace synth */
120} /* namespace remotesensing */
121} /* namespace ldndc */
122
123
124#endif /* !LDNDC_DATASYNTH_REMOTESENSING_H_ */
125
Spatially explicit groundwater model.
Definition airchemistryput.h:15