/***********************************  FOREIGN  **********************************/
 #x:include-guard
##include <dzn/locator.hh>
##include <dzn/runtime.hh>

 #x:interface-include

 #x:open-namespace
namespace skel {
struct #x:model-name
{
  dzn::meta dzn_meta;
  dzn::runtime& dzn_rt;
  dzn::locator const& dzn_locator;
  #x:provided-port-declare
  #x:required-port-declare
  #x:model-name (const dzn::locator& dzn_locator)
  : #x:meta
  , dzn_rt(dzn_locator.get<dzn::runtime>())
  , dzn_locator(dzn_locator)
  #x:injected-member-initializer
  #x:provided-member-initializer
  #x:required-member-initializer
  {
  #x:event-slot
  #x:valued-event-slot
  }
  virtual ~ #x:model-name () {}
  virtual std::ostream& stream_members(std::ostream& os) const { return os; }
  void check_bindings() const;
  void dump_tree(std::ostream& os) const;
  friend std::ostream& operator << (std::ostream& os, const #x:model-name & m)  {
    return m.stream_members(os);
  }
  private:
  #x:declare-pure-virtual-method
};
}
 #x:close-namespace
#x:endif
/***********************************  FOREIGN  **********************************/
