source: XIOS/trunk/src/fortran/icdomain.cpp @ 312

Last change on this file since 312 was 312, checked in by ymipsl, 12 years ago

suppress old fortran interface

YM

File size: 16.6 KB
Line 
1/* ************************************************************************** *
2 *      Copyright © IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
3 * ************************************************************************** */
4
5#include <boost/multi_array.hpp>
6#include <boost/shared_ptr.hpp>
7
8#include "xmlioserver.hpp"
9
10#include "attribute_template_impl.hpp"
11#include "object_template_impl.hpp"
12#include "group_template_impl.hpp"
13
14#include "icutil.hpp"
15
16extern "C"
17{
18// /////////////////////////////// Définitions ////////////////////////////// //
19
20   // ----------------------- Redéfinition de types ----------------------------
21
22   typedef xmlioserver::tree::CDomain      * XDomainPtr;
23   typedef xmlioserver::tree::CDomainGroup * XDomainGroupPtr;
24
25   // ------------------------- Attributs des axes -----------------------------
26   
27   void cxios_set_domain_name(XDomainPtr domain_hdl, const char * name, int name_size)
28   {
29      std::string name_str; 
30      if (!cstr2string(name, name_size, name_str)) return;
31
32      domain_hdl->name.setValue(name_str);
33      domain_hdl->sendAttributToServer(domain_hdl->name) ; 
34   }
35   
36   void cxios_set_domain_standard_name(XDomainPtr domain_hdl, const char * standard_name, int standard_name_size)
37   {
38      std::string standard_name_str; 
39      if (!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
40
41      domain_hdl->standard_name.setValue(standard_name_str);
42      domain_hdl->sendAttributToServer(domain_hdl->standard_name) ; 
43   }
44   
45   void cxios_set_domain_long_name(XDomainPtr domain_hdl, const char * long_name, int long_name_size)
46   {
47      std::string long_name_str; 
48      if (!cstr2string(long_name, long_name_size, long_name_str)) return;
49
50      domain_hdl->long_name.setValue(long_name_str);
51      domain_hdl->sendAttributToServer(domain_hdl->long_name) ; 
52   }
53   
54   void cxios_set_domain_domain_group_ref(XDomainPtr domain_hdl, const char * domain_group_ref, int domain_group_ref_size)
55   {
56      std::string domain_group_ref_str; 
57      if (!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
58
59      domain_hdl->domain_group_ref.setValue(domain_group_ref_str);
60      domain_hdl->sendAttributToServer(domain_hdl->domain_group_ref) ; 
61   }
62   
63   void cxios_set_domain_ni_glo(XDomainPtr domain_hdl, int ni_glo)
64   {
65      domain_hdl->ni_glo.setValue(ni_glo);
66      domain_hdl->sendAttributToServer(domain_hdl->ni_glo) ; 
67   }
68   
69   void cxios_set_domain_nj_glo(XDomainPtr domain_hdl, int nj_glo)
70   {
71      domain_hdl->nj_glo.setValue(nj_glo);
72      domain_hdl->sendAttributToServer(domain_hdl->nj_glo) ; 
73   }
74   
75   void cxios_set_domain_ibegin(XDomainPtr domain_hdl, int ibegin)
76   {
77      domain_hdl->ibegin.setValue(ibegin);
78      domain_hdl->sendAttributToServer(domain_hdl->ibegin) ; 
79   }
80   
81   void cxios_set_domain_iend(XDomainPtr domain_hdl, int iend)
82   {
83      domain_hdl->iend.setValue(iend);
84      domain_hdl->sendAttributToServer(domain_hdl->iend) ; 
85   }
86   
87   void cxios_set_domain_ni(XDomainPtr domain_hdl, int ni)
88   {
89      domain_hdl->ni.setValue(ni);
90      domain_hdl->sendAttributToServer(domain_hdl->ni) ; 
91   }
92   
93   void cxios_set_domain_jbegin(XDomainPtr domain_hdl, int jbegin)
94   {
95      domain_hdl->jbegin.setValue(jbegin);
96      domain_hdl->sendAttributToServer(domain_hdl->jbegin) ; 
97   }
98   
99   void cxios_set_domain_jend(XDomainPtr domain_hdl, int jend)
100   {
101      domain_hdl->jend.setValue(jend);
102      domain_hdl->sendAttributToServer(domain_hdl->jend) ; 
103   }
104   
105   void cxios_set_domain_nj(XDomainPtr domain_hdl, int nj)
106   {
107      domain_hdl->nj.setValue(nj);
108      domain_hdl->sendAttributToServer(domain_hdl->nj) ; 
109   }
110   
111   void cxios_set_domain_mask(XDomainPtr domain_hdl, bool * mask, int mask_extent1, int mask_extent2)
112   {
113      ARRAY(bool, 2) mask_val(new CArray<bool, 2>(boost::extents [mask_extent1][mask_extent2]));
114      std::copy(mask, &(mask[mask_val->num_elements()]), mask_val->data());
115
116      domain_hdl->mask.setValue(mask_val);
117      domain_hdl->sendAttributToServer(domain_hdl->mask) ; 
118   }
119   
120   void cxios_set_domain_data_dim(XDomainPtr domain_hdl, int data_dim)
121   {
122      domain_hdl->data_dim.setValue(data_dim);
123      domain_hdl->sendAttributToServer(domain_hdl->data_dim) ; 
124   }
125   
126   void cxios_set_domain_data_ni(XDomainPtr domain_hdl, int data_ni)
127   {
128      domain_hdl->data_ni.setValue(data_ni);
129      domain_hdl->sendAttributToServer(domain_hdl->data_ni) ; 
130   }
131   
132   void cxios_set_domain_data_nj(XDomainPtr domain_hdl, int data_nj)
133   {
134      domain_hdl->data_nj.setValue(data_nj);
135      domain_hdl->sendAttributToServer(domain_hdl->data_nj) ; 
136   }
137   
138   void cxios_set_domain_data_ibegin(XDomainPtr domain_hdl, int data_ibegin)
139   {
140      domain_hdl->data_ibegin.setValue(data_ibegin);
141      domain_hdl->sendAttributToServer(domain_hdl->data_ibegin) ; 
142   }
143   
144   void cxios_set_domain_data_jbegin(XDomainPtr domain_hdl, int data_jbegin)
145   {
146      domain_hdl->data_jbegin.setValue(data_jbegin);
147      domain_hdl->sendAttributToServer(domain_hdl->data_jbegin) ; 
148   }
149   
150   void cxios_set_domain_zoom_ni(XDomainPtr domain_hdl, int zoom_ni)
151   {
152      domain_hdl->zoom_ni.setValue(zoom_ni);
153      domain_hdl->sendAttributToServer(domain_hdl->zoom_ni) ; 
154   }
155   
156   void cxios_set_domain_zoom_nj(XDomainPtr domain_hdl, int zoom_nj)
157   {
158      domain_hdl->zoom_nj.setValue(zoom_nj);
159      domain_hdl->sendAttributToServer(domain_hdl->zoom_nj) ; 
160   }
161   
162   void cxios_set_domain_zoom_ibegin(XDomainPtr domain_hdl, int zoom_ibegin)
163   {
164      domain_hdl->zoom_ibegin.setValue(zoom_ibegin);
165      domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin) ; 
166   }
167   
168   void cxios_set_domain_zoom_jbegin(XDomainPtr domain_hdl, int zoom_jbegin)
169   {
170      domain_hdl->zoom_jbegin.setValue(zoom_jbegin);
171      domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin) ; 
172   }
173   
174   void cxios_set_domain_data_n_index(XDomainPtr domain_hdl, int data_n_index)
175   {
176      domain_hdl->data_n_index.setValue(data_n_index);
177      domain_hdl->sendAttributToServer(domain_hdl->data_n_index) ; 
178   }
179   
180   void cxios_set_domain_data_i_index(XDomainPtr domain_hdl, int * data_i_index, int data_i_index_extent1)
181   {
182      ARRAY(int, 1) data_i_index_val(new CArray<int, 1>(boost::extents [data_i_index_extent1]));
183      std::copy(data_i_index, &(data_i_index[data_i_index_val->num_elements()]), data_i_index_val->data());
184
185      domain_hdl->data_i_index.setValue(data_i_index_val);
186      domain_hdl->sendAttributToServer(domain_hdl->data_i_index) ; 
187   }
188   
189   void cxios_set_domain_data_j_index(XDomainPtr domain_hdl, int * data_j_index, int data_j_index_extent1)
190   {
191      ARRAY(int, 1) data_j_index_val(new CArray<int, 1>(boost::extents [data_j_index_extent1]));
192      std::copy(data_j_index, &(data_j_index[data_j_index_val->num_elements()]), data_j_index_val->data());
193
194      domain_hdl->data_j_index.setValue(data_j_index_val);
195      domain_hdl->sendAttributToServer(domain_hdl->data_j_index) ; 
196   }
197   
198   void cxios_set_domain_lonvalue(XDomainPtr domain_hdl, double * lonvalue, int lonvalue_extent1)
199   {
200      ARRAY(double, 1) lonvalue_val(new CArray<double, 1>(boost::extents [lonvalue_extent1]));
201      std::copy(lonvalue, &(lonvalue[lonvalue_val->num_elements()]), lonvalue_val->data());
202
203      domain_hdl->lonvalue.setValue(lonvalue_val);
204      domain_hdl->sendAttributToServer(domain_hdl->lonvalue) ; 
205   }
206   
207   void cxios_set_domain_latvalue(XDomainPtr domain_hdl, double * latvalue, int latvalue_extent1)
208   {
209      ARRAY(double, 1) latvalue_val(new CArray<double, 1>(boost::extents [latvalue_extent1]));
210      std::copy(latvalue, &(latvalue[latvalue_val->num_elements()]), latvalue_val->data());
211
212      domain_hdl->latvalue.setValue(latvalue_val);
213      domain_hdl->sendAttributToServer(domain_hdl->latvalue) ; 
214   }   
215   
216   // -------------------- Attributs des groupes de domaine ------------------------
217   
218   
219   void cxios_set_domaingroup_name(XDomainGroupPtr domaingroup_hdl, const char * name, int name_size)
220   {
221      std::string name_str; 
222      if (!cstr2string(name, name_size, name_str)) return;
223
224      domaingroup_hdl->name.setValue(name_str);
225      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->name) ; 
226     
227   }
228   
229   void cxios_set_domaingroup_standard_name(XDomainGroupPtr domaingroup_hdl, const char * standard_name, int standard_name_size)
230   {
231      std::string standard_name_str; 
232      if (!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
233
234      domaingroup_hdl->standard_name.setValue(standard_name_str);
235      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->standard_name) ;
236   }
237   
238   void cxios_set_domaingroup_long_name(XDomainGroupPtr domaingroup_hdl, const char * long_name, int long_name_size)
239   {
240      std::string long_name_str; 
241      if (!cstr2string(long_name, long_name_size, long_name_str)) return;
242
243      domaingroup_hdl->long_name.setValue(long_name_str);
244      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->long_name) ;
245   }
246   
247   void cxios_set_domaingroup_domain_group_ref(XDomainGroupPtr domaingroup_hdl, const char * domain_group_ref, int domain_group_ref_size)
248   {
249      std::string domain_group_ref_str; 
250      if (!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
251
252      domaingroup_hdl->domain_group_ref.setValue(domain_group_ref_str);
253      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->domain_group_ref) ;
254   }
255   
256   void cxios_set_domaingroup_ni_glo(XDomainGroupPtr domaingroup_hdl, int ni_glo)
257   {
258      domaingroup_hdl->ni_glo.setValue(ni_glo);
259      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni_glo) ;
260   }
261   
262   void cxios_set_domaingroup_nj_glo(XDomainGroupPtr domaingroup_hdl, int nj_glo)
263   {
264      domaingroup_hdl->nj_glo.setValue(nj_glo);
265      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj_glo) ;
266   }
267   
268   void cxios_set_domaingroup_ibegin(XDomainGroupPtr domaingroup_hdl, int ibegin)
269   {
270      domaingroup_hdl->ibegin.setValue(ibegin);
271      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ibegin) ;
272   }
273   
274   void cxios_set_domaingroup_iend(XDomainGroupPtr domaingroup_hdl, int iend)
275   {
276      domaingroup_hdl->iend.setValue(iend);
277      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->iend) ;
278   }
279   
280   void cxios_set_domaingroup_ni(XDomainGroupPtr domaingroup_hdl, int ni)
281   {
282      domaingroup_hdl->ni.setValue(ni);
283      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni) ;
284   }
285   
286   void cxios_set_domaingroup_jbegin(XDomainGroupPtr domaingroup_hdl, int jbegin)
287   {
288      domaingroup_hdl->jbegin.setValue(jbegin);
289      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jbegin) ;
290   }
291   
292   void cxios_set_domaingroup_jend(XDomainGroupPtr domaingroup_hdl, int jend)
293   {
294      domaingroup_hdl->jend.setValue(jend);
295      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jend) ;
296   }
297   
298   void cxios_set_domaingroup_nj(XDomainGroupPtr domaingroup_hdl, int nj)
299   {
300      domaingroup_hdl->nj.setValue(nj);
301      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj) ;
302   }
303   
304   void cxios_set_domaingroup_mask(XDomainGroupPtr domaingroup_hdl, bool * mask, int mask_extent1, int mask_extent2)
305   {
306      ARRAY(bool, 2) mask_val(new CArray<bool, 2>(boost::extents [mask_extent1][mask_extent2]));
307      std::copy(mask, &(mask[mask_val->num_elements()]), mask_val->data());
308
309      domaingroup_hdl->mask.setValue(mask_val);
310      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->mask) ;
311   }
312   
313   void cxios_set_domaingroup_data_dim(XDomainGroupPtr domaingroup_hdl, int data_dim)
314   {
315      domaingroup_hdl->data_dim.setValue(data_dim);
316      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_dim) ;
317   }
318   
319   void cxios_set_domaingroup_data_ni(XDomainGroupPtr domaingroup_hdl, int data_ni)
320   {
321      domaingroup_hdl->data_ni.setValue(data_ni);
322      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ni) ;
323   }
324   
325   void cxios_set_domaingroup_data_nj(XDomainGroupPtr domaingroup_hdl, int data_nj)
326   {
327      domaingroup_hdl->data_nj.setValue(data_nj);
328      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_nj) ;
329   }
330   
331   void cxios_set_domaingroup_data_ibegin(XDomainGroupPtr domaingroup_hdl, int data_ibegin)
332   {
333      domaingroup_hdl->data_ibegin.setValue(data_ibegin);
334      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ibegin) ;
335   }
336   
337   void cxios_set_domaingroup_data_jbegin(XDomainGroupPtr domaingroup_hdl, int data_jbegin)
338   {
339      domaingroup_hdl->data_jbegin.setValue(data_jbegin);
340      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_jbegin) ;
341   }
342   
343   void cxios_set_domaingroup_zoom_ni(XDomainGroupPtr domaingroup_hdl, int zoom_ni)
344   {
345      domaingroup_hdl->zoom_ni.setValue(zoom_ni);
346      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni) ;
347   }
348   
349   void cxios_set_domaingroup_zoom_nj(XDomainGroupPtr domaingroup_hdl, int zoom_nj)
350   {
351      domaingroup_hdl->zoom_nj.setValue(zoom_nj);
352      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj) ;
353   }
354   
355   void cxios_set_domaingroup_zoom_ibegin(XDomainGroupPtr domaingroup_hdl, int zoom_ibegin)
356   {
357      domaingroup_hdl->zoom_ibegin.setValue(zoom_ibegin);
358      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin) ;
359   }
360   
361   void cxios_set_domaingroup_zoom_jbegin(XDomainGroupPtr domaingroup_hdl, int zoom_jbegin)
362   {
363      domaingroup_hdl->zoom_jbegin.setValue(zoom_jbegin);
364      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin) ;
365   }
366   
367   void cxios_set_domaingroup_data_n_index(XDomainGroupPtr domaingroup_hdl, int data_n_index)
368   {
369      domaingroup_hdl->data_n_index.setValue(data_n_index);
370      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_n_index) ;
371   }
372   
373   void cxios_set_domaingroup_data_i_index(XDomainGroupPtr domaingroup_hdl, int * data_i_index, int data_i_index_extent1)
374   {
375      ARRAY(int, 1) data_i_index_val(new CArray<int, 1>(boost::extents [data_i_index_extent1]));
376      std::copy(data_i_index, &(data_i_index[data_i_index_val->num_elements()]), data_i_index_val->data());
377
378      domaingroup_hdl->data_i_index.setValue(data_i_index_val);
379      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_i_index) ;
380   }
381   
382   void cxios_set_domaingroup_data_j_index(XDomainGroupPtr domaingroup_hdl, int * data_j_index, int data_j_index_extent1)
383   {
384      ARRAY(int, 1) data_j_index_val(new CArray<int, 1>(boost::extents [data_j_index_extent1]));
385      std::copy(data_j_index, &(data_j_index[data_j_index_val->num_elements()]), data_j_index_val->data());
386
387      domaingroup_hdl->data_j_index.setValue(data_j_index_val);
388      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_j_index) ;
389   }
390   
391   void cxios_set_domaingroup_lonvalue(XDomainGroupPtr domaingroup_hdl, double * lonvalue, int lonvalue_extent1)
392   {
393      ARRAY(double, 1) lonvalue_val(new CArray<double, 1>(boost::extents [lonvalue_extent1]));
394      std::copy(lonvalue, &(lonvalue[lonvalue_val->num_elements()]), lonvalue_val->data());
395
396      domaingroup_hdl->lonvalue.setValue(lonvalue_val);
397      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->lonvalue) ;
398   }
399   
400   void cxios_set_domaingroup_latvalue(XDomainGroupPtr domaingroup_hdl, double * latvalue, int latvalue_extent1)
401   {
402      ARRAY(double, 1) latvalue_val(new CArray<double, 1>(boost::extents [latvalue_extent1]));
403      std::copy(latvalue, &(latvalue[latvalue_val->num_elements()]), latvalue_val->data());
404
405      domaingroup_hdl->latvalue.setValue(latvalue_val);
406      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->latvalue) ;
407   } 
408   
409   // ------------------------ Création des handle -----------------------------
410   
411   void cxios_domain_handle_create (XDomainPtr * _ret, const char * _id, int _id_len)
412   {
413      std::string id; 
414      if (!cstr2string(_id, _id_len, id)) return;
415
416      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomain>(id).get();
417   }
418   
419   void cxios_domaingroup_handle_create (XDomainGroupPtr * _ret, const char * _id, int _id_len)
420   {
421      std::string id; 
422      if (!cstr2string(_id, _id_len, id)) return;
423
424      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomainGroup>(id).get();
425   }
426
427   // -------------------- Vérification des identifiants -----------------------
428
429   void cxios_domain_valid_id (bool * _ret, const char * _id, int _id_len)
430   {
431      std::string id;
432      if (!cstr2string(_id, _id_len, id)) return;
433
434      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomain>(id);
435   }
436
437   void cxios_domaingroup_valid_id (bool * _ret, const char * _id, int _id_len)
438   {
439      std::string id;
440      if (!cstr2string(_id, _id_len, id)) return;
441
442      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomainGroup>(id);
443   }
444} // extern "C"
Note: See TracBrowser for help on using the repository browser.