//////////////////////////////////////////////////////////////////////////////
//
// File: nn_link.h
//
// Purpose: Interface for NeuNet's Link class.
//
// Authors:
//   txe  Travis Emmitt
//
// Modifications:
//   17-APR-1998  txe  Initial creation
//   18-APR-1998  txe  Added Train(), SetWeight()
//   19-APR-1998  txe  Cleaned up, added constructor and destructor
//   23-APR-1998  txe  Added comments
//
//////////////////////////////////////////////////////////////////////////////

#ifndef NN_LINK_H
#define NN_LINK_H

#include "debug.h"
#include "nn_arch.h"

class Link : public Debug {
  friend class Node;
  friend class NeuNet;

private:
  float adjust;	      // adjustment value (changes over time)
  Arch *arch;	      // NeuNet architecture
  Node *dest;         // destination node (in next layer)
  Node *source;       // source node (in previous layer)
  float weight;       // weight (changes over time)
  
public:
  Link (char *name, Arch *arch, Node *source, Node *dest);
  ~Link ();
  void SetWeight (float weight);
  void Train     ();
};

#endif

///////////////////////////////////////////////////////////////////////////////

