

!!! Listing.1

/* climate.cpp */

#include <ocn.h>

extern "C" void init(void);
extern "C" void atm(void);
ocn_var ov;
params_type params;
ocean_type ocean;

void main(void) {
  // initialize ORB ...
  // initialize simulation:
  init();

  // initialize ocn1 server ...
  ov = ocn::_narrow(obj);
  ov->init(params);
  
  for (n=0;n<nmax;n++) {
    atm();
    ocn1();
  }
}            



!!! Listing.2

/* ocn_stub.cpp */

#include <ocn.h>
extern "C" void ocn1() {
  extern ocn_var ov;
  extern ocean_type ocean;
  ov -> run(ocean);
}        


!!! Listing.3

/* ocn_impl.h */

#include <ocn_skel.h>
class ocn_impl: public ocn_skel {
  virtual void init(const params_type& params);
  virtual void run(ocean_type& ocean);
};    


!!! Listing.4

/* ocn_impl.cpp */

#include <ocn_impl.h>
params_type params;
ocean_type ocean;
extern "C" void ocn1(void);

void ocn_impl::init(const params_type& params_var) {
  params=params_;
}

void ocn_impl::run(ocean_type& ocean_) {
  ocean=ocean_;
  ocn1();
  ocean_=ocean;
}                                 
