source: XMLIO_V2/dev/common/src/fortran/icdomain.cpp @ 300

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

nouvelle version de developpement de xios

  • nouvelle interface fortran
  • recodage complet de la couche de communication
  • et bien d'autres choses...

YM

File size: 18.4 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_zoom_ni_loc(XDomainPtr domain_hdl, int zoom_ni_loc)
175   {
176      domain_hdl->zoom_ni_loc.setValue(zoom_ni_loc);
177      domain_hdl->sendAttributToServer(domain_hdl->zoom_ni_loc) ; 
178   }
179   
180   void cxios_set_domain_zoom_nj_loc(XDomainPtr domain_hdl, int zoom_nj_loc)
181   {
182      domain_hdl->zoom_nj_loc.setValue(zoom_nj_loc);
183      domain_hdl->sendAttributToServer(domain_hdl->zoom_nj_loc) ; 
184   }
185   
186   void cxios_set_domain_zoom_ibegin_loc(XDomainPtr domain_hdl, int zoom_ibegin_loc)
187   {
188      domain_hdl->zoom_ibegin_loc.setValue(zoom_ibegin_loc);
189      domain_hdl->sendAttributToServer(domain_hdl->zoom_ibegin_loc) ; 
190   }
191   
192   void cxios_set_domain_zoom_jbegin_loc(XDomainPtr domain_hdl, int zoom_jbegin_loc)
193   {
194      domain_hdl->zoom_jbegin_loc.setValue(zoom_jbegin_loc);
195      domain_hdl->sendAttributToServer(domain_hdl->zoom_jbegin_loc) ; 
196   }
197   
198   void cxios_set_domain_data_n_index(XDomainPtr domain_hdl, int data_n_index)
199   {
200      domain_hdl->data_n_index.setValue(data_n_index);
201      domain_hdl->sendAttributToServer(domain_hdl->data_n_index) ; 
202   }
203   
204   void cxios_set_domain_data_i_index(XDomainPtr domain_hdl, int * data_i_index, int data_i_index_extent1)
205   {
206      ARRAY(int, 1) data_i_index_val(new CArray<int, 1>(boost::extents [data_i_index_extent1]));
207      std::copy(data_i_index, &(data_i_index[data_i_index_val->num_elements()]), data_i_index_val->data());
208
209      domain_hdl->data_i_index.setValue(data_i_index_val);
210      domain_hdl->sendAttributToServer(domain_hdl->data_i_index) ; 
211   }
212   
213   void cxios_set_domain_data_j_index(XDomainPtr domain_hdl, int * data_j_index, int data_j_index_extent1)
214   {
215      ARRAY(int, 1) data_j_index_val(new CArray<int, 1>(boost::extents [data_j_index_extent1]));
216      std::copy(data_j_index, &(data_j_index[data_j_index_val->num_elements()]), data_j_index_val->data());
217
218      domain_hdl->data_j_index.setValue(data_j_index_val);
219      domain_hdl->sendAttributToServer(domain_hdl->data_j_index) ; 
220   }
221   
222   void cxios_set_domain_lonvalue(XDomainPtr domain_hdl, double * lonvalue, int lonvalue_extent1)
223   {
224      ARRAY(double, 1) lonvalue_val(new CArray<double, 1>(boost::extents [lonvalue_extent1]));
225      std::copy(lonvalue, &(lonvalue[lonvalue_val->num_elements()]), lonvalue_val->data());
226
227      domain_hdl->lonvalue.setValue(lonvalue_val);
228      domain_hdl->sendAttributToServer(domain_hdl->lonvalue) ; 
229   }
230   
231   void cxios_set_domain_latvalue(XDomainPtr domain_hdl, double * latvalue, int latvalue_extent1)
232   {
233      ARRAY(double, 1) latvalue_val(new CArray<double, 1>(boost::extents [latvalue_extent1]));
234      std::copy(latvalue, &(latvalue[latvalue_val->num_elements()]), latvalue_val->data());
235
236      domain_hdl->latvalue.setValue(latvalue_val);
237      domain_hdl->sendAttributToServer(domain_hdl->latvalue) ; 
238   }   
239   
240   // -------------------- Attributs des groupes de domaine ------------------------
241   
242   
243   void cxios_set_domaingroup_name(XDomainGroupPtr domaingroup_hdl, const char * name, int name_size)
244   {
245      std::string name_str; 
246      if (!cstr2string(name, name_size, name_str)) return;
247
248      domaingroup_hdl->name.setValue(name_str);
249      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->name) ; 
250     
251   }
252   
253   void cxios_set_domaingroup_standard_name(XDomainGroupPtr domaingroup_hdl, const char * standard_name, int standard_name_size)
254   {
255      std::string standard_name_str; 
256      if (!cstr2string(standard_name, standard_name_size, standard_name_str)) return;
257
258      domaingroup_hdl->standard_name.setValue(standard_name_str);
259      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->standard_name) ;
260   }
261   
262   void cxios_set_domaingroup_long_name(XDomainGroupPtr domaingroup_hdl, const char * long_name, int long_name_size)
263   {
264      std::string long_name_str; 
265      if (!cstr2string(long_name, long_name_size, long_name_str)) return;
266
267      domaingroup_hdl->long_name.setValue(long_name_str);
268      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->long_name) ;
269   }
270   
271   void cxios_set_domaingroup_domain_group_ref(XDomainGroupPtr domaingroup_hdl, const char * domain_group_ref, int domain_group_ref_size)
272   {
273      std::string domain_group_ref_str; 
274      if (!cstr2string(domain_group_ref, domain_group_ref_size, domain_group_ref_str)) return;
275
276      domaingroup_hdl->domain_group_ref.setValue(domain_group_ref_str);
277      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->domain_group_ref) ;
278   }
279   
280   void cxios_set_domaingroup_ni_glo(XDomainGroupPtr domaingroup_hdl, int ni_glo)
281   {
282      domaingroup_hdl->ni_glo.setValue(ni_glo);
283      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni_glo) ;
284   }
285   
286   void cxios_set_domaingroup_nj_glo(XDomainGroupPtr domaingroup_hdl, int nj_glo)
287   {
288      domaingroup_hdl->nj_glo.setValue(nj_glo);
289      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj_glo) ;
290   }
291   
292   void cxios_set_domaingroup_ibegin(XDomainGroupPtr domaingroup_hdl, int ibegin)
293   {
294      domaingroup_hdl->ibegin.setValue(ibegin);
295      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ibegin) ;
296   }
297   
298   void cxios_set_domaingroup_iend(XDomainGroupPtr domaingroup_hdl, int iend)
299   {
300      domaingroup_hdl->iend.setValue(iend);
301      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->iend) ;
302   }
303   
304   void cxios_set_domaingroup_ni(XDomainGroupPtr domaingroup_hdl, int ni)
305   {
306      domaingroup_hdl->ni.setValue(ni);
307      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->ni) ;
308   }
309   
310   void cxios_set_domaingroup_jbegin(XDomainGroupPtr domaingroup_hdl, int jbegin)
311   {
312      domaingroup_hdl->jbegin.setValue(jbegin);
313      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jbegin) ;
314   }
315   
316   void cxios_set_domaingroup_jend(XDomainGroupPtr domaingroup_hdl, int jend)
317   {
318      domaingroup_hdl->jend.setValue(jend);
319      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->jend) ;
320   }
321   
322   void cxios_set_domaingroup_nj(XDomainGroupPtr domaingroup_hdl, int nj)
323   {
324      domaingroup_hdl->nj.setValue(nj);
325      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->nj) ;
326   }
327   
328   void cxios_set_domaingroup_mask(XDomainGroupPtr domaingroup_hdl, bool * mask, int mask_extent1, int mask_extent2)
329   {
330      ARRAY(bool, 2) mask_val(new CArray<bool, 2>(boost::extents [mask_extent1][mask_extent2]));
331      std::copy(mask, &(mask[mask_val->num_elements()]), mask_val->data());
332
333      domaingroup_hdl->mask.setValue(mask_val);
334      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->mask) ;
335   }
336   
337   void cxios_set_domaingroup_data_dim(XDomainGroupPtr domaingroup_hdl, int data_dim)
338   {
339      domaingroup_hdl->data_dim.setValue(data_dim);
340      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_dim) ;
341   }
342   
343   void cxios_set_domaingroup_data_ni(XDomainGroupPtr domaingroup_hdl, int data_ni)
344   {
345      domaingroup_hdl->data_ni.setValue(data_ni);
346      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ni) ;
347   }
348   
349   void cxios_set_domaingroup_data_nj(XDomainGroupPtr domaingroup_hdl, int data_nj)
350   {
351      domaingroup_hdl->data_nj.setValue(data_nj);
352      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_nj) ;
353   }
354   
355   void cxios_set_domaingroup_data_ibegin(XDomainGroupPtr domaingroup_hdl, int data_ibegin)
356   {
357      domaingroup_hdl->data_ibegin.setValue(data_ibegin);
358      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_ibegin) ;
359   }
360   
361   void cxios_set_domaingroup_data_jbegin(XDomainGroupPtr domaingroup_hdl, int data_jbegin)
362   {
363      domaingroup_hdl->data_jbegin.setValue(data_jbegin);
364      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_jbegin) ;
365   }
366   
367   void cxios_set_domaingroup_zoom_ni(XDomainGroupPtr domaingroup_hdl, int zoom_ni)
368   {
369      domaingroup_hdl->zoom_ni.setValue(zoom_ni);
370      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni) ;
371   }
372   
373   void cxios_set_domaingroup_zoom_nj(XDomainGroupPtr domaingroup_hdl, int zoom_nj)
374   {
375      domaingroup_hdl->zoom_nj.setValue(zoom_nj);
376      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj) ;
377   }
378   
379   void cxios_set_domaingroup_zoom_ibegin(XDomainGroupPtr domaingroup_hdl, int zoom_ibegin)
380   {
381      domaingroup_hdl->zoom_ibegin.setValue(zoom_ibegin);
382      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin) ;
383   }
384   
385   void cxios_set_domaingroup_zoom_jbegin(XDomainGroupPtr domaingroup_hdl, int zoom_jbegin)
386   {
387      domaingroup_hdl->zoom_jbegin.setValue(zoom_jbegin);
388      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin) ;
389   }
390   
391   void cxios_set_domaingroup_zoom_ni_loc(XDomainGroupPtr domaingroup_hdl, int zoom_ni_loc)
392   {
393      domaingroup_hdl->zoom_ni_loc.setValue(zoom_ni_loc);
394      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ni_loc) ;
395   }
396   
397   void cxios_set_domaingroup_zoom_nj_loc(XDomainGroupPtr domaingroup_hdl, int zoom_nj_loc)
398   {
399      domaingroup_hdl->zoom_nj_loc.setValue(zoom_nj_loc);
400      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_nj_loc) ;
401   }
402   
403   void cxios_set_domaingroup_zoom_ibegin_loc(XDomainGroupPtr domaingroup_hdl, int zoom_ibegin_loc)
404   {
405      domaingroup_hdl->zoom_ibegin_loc.setValue(zoom_ibegin_loc);
406      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_ibegin_loc) ;
407   }
408   
409   void cxios_set_domaingroup_zoom_jbegin_loc(XDomainGroupPtr domaingroup_hdl, int zoom_jbegin_loc)
410   {
411      domaingroup_hdl->zoom_jbegin_loc.setValue(zoom_jbegin_loc);
412      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->zoom_jbegin_loc) ;
413   }
414   
415   void cxios_set_domaingroup_data_n_index(XDomainGroupPtr domaingroup_hdl, int data_n_index)
416   {
417      domaingroup_hdl->data_n_index.setValue(data_n_index);
418      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_n_index) ;
419   }
420   
421   void cxios_set_domaingroup_data_i_index(XDomainGroupPtr domaingroup_hdl, int * data_i_index, int data_i_index_extent1)
422   {
423      ARRAY(int, 1) data_i_index_val(new CArray<int, 1>(boost::extents [data_i_index_extent1]));
424      std::copy(data_i_index, &(data_i_index[data_i_index_val->num_elements()]), data_i_index_val->data());
425
426      domaingroup_hdl->data_i_index.setValue(data_i_index_val);
427      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_i_index) ;
428   }
429   
430   void cxios_set_domaingroup_data_j_index(XDomainGroupPtr domaingroup_hdl, int * data_j_index, int data_j_index_extent1)
431   {
432      ARRAY(int, 1) data_j_index_val(new CArray<int, 1>(boost::extents [data_j_index_extent1]));
433      std::copy(data_j_index, &(data_j_index[data_j_index_val->num_elements()]), data_j_index_val->data());
434
435      domaingroup_hdl->data_j_index.setValue(data_j_index_val);
436      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->data_j_index) ;
437   }
438   
439   void cxios_set_domaingroup_lonvalue(XDomainGroupPtr domaingroup_hdl, double * lonvalue, int lonvalue_extent1)
440   {
441      ARRAY(double, 1) lonvalue_val(new CArray<double, 1>(boost::extents [lonvalue_extent1]));
442      std::copy(lonvalue, &(lonvalue[lonvalue_val->num_elements()]), lonvalue_val->data());
443
444      domaingroup_hdl->lonvalue.setValue(lonvalue_val);
445      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->lonvalue) ;
446   }
447   
448   void cxios_set_domaingroup_latvalue(XDomainGroupPtr domaingroup_hdl, double * latvalue, int latvalue_extent1)
449   {
450      ARRAY(double, 1) latvalue_val(new CArray<double, 1>(boost::extents [latvalue_extent1]));
451      std::copy(latvalue, &(latvalue[latvalue_val->num_elements()]), latvalue_val->data());
452
453      domaingroup_hdl->latvalue.setValue(latvalue_val);
454      domaingroup_hdl->sendAttributToServer(domaingroup_hdl->latvalue) ;
455   } 
456   
457   // ------------------------ Création des handle -----------------------------
458   
459   void cxios_domain_handle_create (XDomainPtr * _ret, const char * _id, int _id_len)
460   {
461      std::string id; 
462      if (!cstr2string(_id, _id_len, id)) return;
463
464      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomain>(id).get();
465   }
466   
467   void cxios_domaingroup_handle_create (XDomainGroupPtr * _ret, const char * _id, int _id_len)
468   {
469      std::string id; 
470      if (!cstr2string(_id, _id_len, id)) return;
471
472      *_ret = xmlioserver::CObjectFactory::GetObject<xmlioserver::tree::CDomainGroup>(id).get();
473   }
474
475   // -------------------- Vérification des identifiants -----------------------
476
477   void cxios_domain_valid_id (bool * _ret, const char * _id, int _id_len)
478   {
479      std::string id;
480      if (!cstr2string(_id, _id_len, id)) return;
481
482      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomain>(id);
483   }
484
485   void cxios_domaingroup_valid_id (bool * _ret, const char * _id, int _id_len)
486   {
487      std::string id;
488      if (!cstr2string(_id, _id_len, id)) return;
489
490      *_ret = xmlioserver::CObjectFactory::HasObject<xmlioserver::tree::CDomainGroup>(id);
491   }
492} // extern "C"
Note: See TracBrowser for help on using the repository browser.