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
RevLine 
[274]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   
[286]27   void cxios_set_domain_name(XDomainPtr domain_hdl, const char * name, int name_size)
[274]28   {
29      std::string name_str; 
30      if (!cstr2string(name, name_size, name_str)) return;
31
32      domain_hdl->name.setValue(name_str);
[300]33      domain_hdl->sendAttributToServer(domain_hdl->name) ; 
[274]34   }
35   
[286]36   void cxios_set_domain_standard_name(XDomainPtr domain_hdl, const char * standard_name, int standard_name_size)
[274]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);
[300]42      domain_hdl->sendAttributToServer(domain_hdl->standard_name) ; 
[274]43   }
44   
[286]45   void cxios_set_domain_long_name(XDomainPtr domain_hdl, const char * long_name, int long_name_size)
[274]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);
[300]51      domain_hdl->sendAttributToServer(domain_hdl->long_name) ; 
[274]52   }
53   
[286]54   void cxios_set_domain_domain_group_ref(XDomainPtr domain_hdl, const char * domain_group_ref, int domain_group_ref_size)
[274]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);
[300]60      domain_hdl->sendAttributToServer(domain_hdl->domain_group_ref) ; 
[274]61   }
62   
[286]63   void cxios_set_domain_ni_glo(XDomainPtr domain_hdl, int ni_glo)
[274]64   {
65      domain_hdl->ni_glo.setValue(ni_glo);
[300]66      domain_hdl->sendAttributToServer(domain_hdl->ni_glo) ; 
[274]67   }
68   
[286]69   void cxios_set_domain_nj_glo(XDomainPtr domain_hdl, int nj_glo)
[274]70   {
71      domain_hdl->nj_glo.setValue(nj_glo);
[300]72      domain_hdl->sendAttributToServer(domain_hdl->nj_glo) ; 
[274]73   }
74   
[286]75   void cxios_set_domain_ibegin(XDomainPtr domain_hdl, int ibegin)
[274]76   {
77      domain_hdl->ibegin.setValue(ibegin);
[300]78      domain_hdl->sendAttributToServer(domain_hdl->ibegin) ; 
[274]79   }
80   
[286]81   void cxios_set_domain_iend(XDomainPtr domain_hdl, int iend)
[274]82   {
83      domain_hdl->iend.setValue(iend);
[300]84      domain_hdl->sendAttributToServer(domain_hdl->iend) ; 
[274]85   }
86   
[286]87   void cxios_set_domain_ni(XDomainPtr domain_hdl, int ni)
[274]88   {
89      domain_hdl->ni.setValue(ni);
[300]90      domain_hdl->sendAttributToServer(domain_hdl->ni) ; 
[274]91   }
92   
[286]93   void cxios_set_domain_jbegin(XDomainPtr domain_hdl, int jbegin)
[274]94   {
95      domain_hdl->jbegin.setValue(jbegin);
[300]96      domain_hdl->sendAttributToServer(domain_hdl->jbegin) ; 
[274]97   }
98   
[286]99   void cxios_set_domain_jend(XDomainPtr domain_hdl, int jend)
[274]100   {
101      domain_hdl->jend.setValue(jend);
[300]102      domain_hdl->sendAttributToServer(domain_hdl->jend) ; 
[274]103   }
104   
[286]105   void cxios_set_domain_nj(XDomainPtr domain_hdl, int nj)
[274]106   {
107      domain_hdl->nj.setValue(nj);
[300]108      domain_hdl->sendAttributToServer(domain_hdl->nj) ; 
[274]109   }
110   
[286]111   void cxios_set_domain_mask(XDomainPtr domain_hdl, bool * mask, int mask_extent1, int mask_extent2)
[274]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);
[300]117      domain_hdl->sendAttributToServer(domain_hdl->mask) ; 
[274]118   }
119   
[286]120   void cxios_set_domain_data_dim(XDomainPtr domain_hdl, int data_dim)
[274]121   {
122      domain_hdl->data_dim.setValue(data_dim);
[300]123      domain_hdl->sendAttributToServer(domain_hdl->data_dim) ; 
[274]124   }
125   
[286]126   void cxios_set_domain_data_ni(XDomainPtr domain_hdl, int data_ni)
[274]127   {
128      domain_hdl->data_ni.setValue(data_ni);
[300]129      domain_hdl->sendAttributToServer(domain_hdl->data_ni) ; 
[274]130   }
131   
[286]132   void cxios_set_domain_data_nj(XDomainPtr domain_hdl, int data_nj)
[274]133   {
134      domain_hdl->data_nj.setValue(data_nj);
[300]135      domain_hdl->sendAttributToServer(domain_hdl->data_nj) ; 
[274]136   }
137   
[286]138   void cxios_set_domain_data_ibegin(XDomainPtr domain_hdl, int data_ibegin)
[274]139   {
140      domain_hdl->data_ibegin.setValue(data_ibegin);
[300]141      domain_hdl->sendAttributToServer(domain_hdl->data_ibegin) ; 
[274]142   }
143   
[286]144   void cxios_set_domain_data_jbegin(XDomainPtr domain_hdl, int data_jbegin)
[274]145   {
146      domain_hdl->data_jbegin.setValue(data_jbegin);
[300]147      domain_hdl->sendAttributToServer(domain_hdl->data_jbegin) ; 
[274]148   }
149   
[286]150   void cxios_set_domain_zoom_ni(XDomainPtr domain_hdl, int zoom_ni)
[274]151   {
152      domain_hdl->zoom_ni.setValue(zoom_ni);
[300]153      domain_hdl->sendAttributToServer(domain_hdl->zoom_ni) ; 
[274]154   }
155   
[286]156   void cxios_set_domain_zoom_nj(XDomainPtr domain_hdl, int zoom_nj)
[274]157   {
158      domain_hdl->zoom_nj.setValue(zoom_nj);
[300]159      domain_hdl->sendAttributToServer(domain_hdl->zoom_nj) ; 
[274]160   }
161   
[286]162   void cxios_set_domain_zoom_ibegin(XDomainPtr domain_hdl, int zoom_ibegin)
[274]163   {
164      domain_hdl->zoom_ibegin.setValue(zoom_ibegin);
[300]165      domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin) ; 
[274]166   }
167   
[286]168   void cxios_set_domain_zoom_jbegin(XDomainPtr domain_hdl, int zoom_jbegin)
[274]169   {
170      domain_hdl->zoom_jbegin.setValue(zoom_jbegin);
[300]171      domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin) ; 
[274]172   }
173   
[286]174   void cxios_set_domain_data_n_index(XDomainPtr domain_hdl, int data_n_index)
[274]175   {
176      domain_hdl->data_n_index.setValue(data_n_index);
[300]177      domain_hdl->sendAttributToServer(domain_hdl->data_n_index) ; 
[274]178   }
179   
[286]180   void cxios_set_domain_data_i_index(XDomainPtr domain_hdl, int * data_i_index, int data_i_index_extent1)
[274]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);
[300]186      domain_hdl->sendAttributToServer(domain_hdl->data_i_index) ; 
[274]187   }
188   
[286]189   void cxios_set_domain_data_j_index(XDomainPtr domain_hdl, int * data_j_index, int data_j_index_extent1)
[274]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);
[300]195      domain_hdl->sendAttributToServer(domain_hdl->data_j_index) ; 
[274]196   }
197   
[286]198   void cxios_set_domain_lonvalue(XDomainPtr domain_hdl, double * lonvalue, int lonvalue_extent1)
[274]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);
[300]204      domain_hdl->sendAttributToServer(domain_hdl->lonvalue) ; 
[274]205   }
206   
[286]207   void cxios_set_domain_latvalue(XDomainPtr domain_hdl, double * latvalue, int latvalue_extent1)
[274]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);
[300]213      domain_hdl->sendAttributToServer(domain_hdl->latvalue) ; 
[274]214   }   
215   
[300]216   // -------------------- Attributs des groupes de domaine ------------------------
[274]217   
218   
[286]219   void cxios_set_domaingroup_name(XDomainGroupPtr domaingroup_hdl, const char * name, int name_size)
[274]220   {
221      std::string name_str; 
222      if (!cstr2string(name, name_size, name_str)) return;
223
224      domaingroup_hdl->name.setValue(name_str);
[300]225      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->name) ; 
226     
[274]227   }
228   
[286]229   void cxios_set_domaingroup_standard_name(XDomainGroupPtr domaingroup_hdl, const char * standard_name, int standard_name_size)
[274]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);
[300]235      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->standard_name) ;
[274]236   }
237   
[286]238   void cxios_set_domaingroup_long_name(XDomainGroupPtr domaingroup_hdl, const char * long_name, int long_name_size)
[274]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);
[300]244      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->long_name) ;
[274]245   }
246   
[286]247   void cxios_set_domaingroup_domain_group_ref(XDomainGroupPtr domaingroup_hdl, const char * domain_group_ref, int domain_group_ref_size)
[274]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);
[300]253      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->domain_group_ref) ;
[274]254   }
255   
[286]256   void cxios_set_domaingroup_ni_glo(XDomainGroupPtr domaingroup_hdl, int ni_glo)
[274]257   {
258      domaingroup_hdl->ni_glo.setValue(ni_glo);
[300]259      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni_glo) ;
[274]260   }
261   
[286]262   void cxios_set_domaingroup_nj_glo(XDomainGroupPtr domaingroup_hdl, int nj_glo)
[274]263   {
264      domaingroup_hdl->nj_glo.setValue(nj_glo);
[300]265      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj_glo) ;
[274]266   }
267   
[286]268   void cxios_set_domaingroup_ibegin(XDomainGroupPtr domaingroup_hdl, int ibegin)
[274]269   {
270      domaingroup_hdl->ibegin.setValue(ibegin);
[300]271      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ibegin) ;
[274]272   }
273   
[286]274   void cxios_set_domaingroup_iend(XDomainGroupPtr domaingroup_hdl, int iend)
[274]275   {
276      domaingroup_hdl->iend.setValue(iend);
[300]277      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->iend) ;
[274]278   }
279   
[286]280   void cxios_set_domaingroup_ni(XDomainGroupPtr domaingroup_hdl, int ni)
[274]281   {
282      domaingroup_hdl->ni.setValue(ni);
[300]283      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni) ;
[274]284   }
285   
[286]286   void cxios_set_domaingroup_jbegin(XDomainGroupPtr domaingroup_hdl, int jbegin)
[274]287   {
288      domaingroup_hdl->jbegin.setValue(jbegin);
[300]289      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jbegin) ;
[274]290   }
291   
[286]292   void cxios_set_domaingroup_jend(XDomainGroupPtr domaingroup_hdl, int jend)
[274]293   {
294      domaingroup_hdl->jend.setValue(jend);
[300]295      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jend) ;
[274]296   }
297   
[286]298   void cxios_set_domaingroup_nj(XDomainGroupPtr domaingroup_hdl, int nj)
[274]299   {
300      domaingroup_hdl->nj.setValue(nj);
[300]301      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj) ;
[274]302   }
303   
[286]304   void cxios_set_domaingroup_mask(XDomainGroupPtr domaingroup_hdl, bool * mask, int mask_extent1, int mask_extent2)
[274]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);
[300]310      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->mask) ;
[274]311   }
312   
[286]313   void cxios_set_domaingroup_data_dim(XDomainGroupPtr domaingroup_hdl, int data_dim)
[274]314   {
315      domaingroup_hdl->data_dim.setValue(data_dim);
[300]316      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_dim) ;
[274]317   }
318   
[286]319   void cxios_set_domaingroup_data_ni(XDomainGroupPtr domaingroup_hdl, int data_ni)
[274]320   {
321      domaingroup_hdl->data_ni.setValue(data_ni);
[300]322      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ni) ;
[274]323   }
324   
[286]325   void cxios_set_domaingroup_data_nj(XDomainGroupPtr domaingroup_hdl, int data_nj)
[274]326   {
327      domaingroup_hdl->data_nj.setValue(data_nj);
[300]328      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_nj) ;
[274]329   }
330   
[286]331   void cxios_set_domaingroup_data_ibegin(XDomainGroupPtr domaingroup_hdl, int data_ibegin)
[274]332   {
333      domaingroup_hdl->data_ibegin.setValue(data_ibegin);
[300]334      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ibegin) ;
[274]335   }
336   
[286]337   void cxios_set_domaingroup_data_jbegin(XDomainGroupPtr domaingroup_hdl, int data_jbegin)
[274]338   {
339      domaingroup_hdl->data_jbegin.setValue(data_jbegin);
[300]340      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_jbegin) ;
[274]341   }
342   
[286]343   void cxios_set_domaingroup_zoom_ni(XDomainGroupPtr domaingroup_hdl, int zoom_ni)
[274]344   {
345      domaingroup_hdl->zoom_ni.setValue(zoom_ni);
[300]346      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni) ;
[274]347   }
348   
[286]349   void cxios_set_domaingroup_zoom_nj(XDomainGroupPtr domaingroup_hdl, int zoom_nj)
[274]350   {
351      domaingroup_hdl->zoom_nj.setValue(zoom_nj);
[300]352      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj) ;
[274]353   }
354   
[286]355   void cxios_set_domaingroup_zoom_ibegin(XDomainGroupPtr domaingroup_hdl, int zoom_ibegin)
[274]356   {
357      domaingroup_hdl->zoom_ibegin.setValue(zoom_ibegin);
[300]358      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin) ;
[274]359   }
360   
[286]361   void cxios_set_domaingroup_zoom_jbegin(XDomainGroupPtr domaingroup_hdl, int zoom_jbegin)
[274]362   {
363      domaingroup_hdl->zoom_jbegin.setValue(zoom_jbegin);
[300]364      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin) ;
[274]365   }
366   
[286]367   void cxios_set_domaingroup_data_n_index(XDomainGroupPtr domaingroup_hdl, int data_n_index)
[274]368   {
369      domaingroup_hdl->data_n_index.setValue(data_n_index);
[300]370      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_n_index) ;
[274]371   }
372   
[286]373   void cxios_set_domaingroup_data_i_index(XDomainGroupPtr domaingroup_hdl, int * data_i_index, int data_i_index_extent1)
[274]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);
[300]379      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_i_index) ;
[274]380   }
381   
[286]382   void cxios_set_domaingroup_data_j_index(XDomainGroupPtr domaingroup_hdl, int * data_j_index, int data_j_index_extent1)
[274]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);
[300]388      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_j_index) ;
[274]389   }
390   
[286]391   void cxios_set_domaingroup_lonvalue(XDomainGroupPtr domaingroup_hdl, double * lonvalue, int lonvalue_extent1)
[274]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);
[300]397      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->lonvalue) ;
[274]398   }
399   
[286]400   void cxios_set_domaingroup_latvalue(XDomainGroupPtr domaingroup_hdl, double * latvalue, int latvalue_extent1)
[274]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);
[300]406      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->latvalue) ;
[274]407   } 
408   
409   // ------------------------ Création des handle -----------------------------
410   
[286]411   void cxios_domain_handle_create (XDomainPtr * _ret, const char * _id, int _id_len)
[274]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   
[286]419   void cxios_domaingroup_handle_create (XDomainGroupPtr * _ret, const char * _id, int _id_len)
[274]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   }
[280]426
427   // -------------------- Vérification des identifiants -----------------------
428
[286]429   void cxios_domain_valid_id (bool * _ret, const char * _id, int _id_len)
[280]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
[286]437   void cxios_domaingroup_valid_id (bool * _ret, const char * _id, int _id_len)
[280]438   {
439      std::string id;
440      if (!cstr2string(_id, _id_len, id)) return;
441
442      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomainGroup>(id);
443   }
[274]444} // extern "C"
Note: See TracBrowser for help on using the repository browser.