[ return ]

gate.h




/*
 * file: gate.h
 *
 * [DEFINE DESCRIPTION = Neural gate class (sub-component of column class)]
 *
 *  Name                Date        Description
 *  --------------      --------    -------------------------------------
 *  Andrew H. Fagg      09/05/94    Original
 *
 *
 */

#ifndef GATE_CLASS
#define GATE_CLASS
#include "connector.h"

#define SUPPORT 0
#define PRIME 1

				/* Parameter Class */
class gate_parms_class
{
 public:
  nsl_data* pr_kx1;
  nsl_data* pr_kx2;
  nsl_data* pr_ky1;
  nsl_data* pr_ky2;
  nsl_data* support_kx1;
  nsl_data* support_kx2;
  nsl_data* support_ky1;
  nsl_data* support_ky2;
  nsl_data* pet_flag;
};


				/* Gate Class */
class gate_class
{
				/* Neuron states */
  nsl_data prime_mem;
  nsl_data prime;
  nsl_data support_mem;
  nsl_data support;

  nsl_data threshold;

  nsl_data pet_pos;		/* PET components */
  nsl_data pet_neg;

				/* Inputs */
  connector_class* priming_connector;
  connector_class* support_connector;
  nsl_vector* priming_weights;
  nsl_vector* support_weights;

				/* Parameters */
  gate_parms_class* parms;

  name_class* name;		/* Object name */


 public:
				/* Methods */
  gate_class(char*, name_class*,short, gate_parms_class*);
  ~gate_class();
  void init_weights();        //OVERLOAD CALL: init_weights: column.c(column_class), gate.c(gate_class), layer.c(layer_class)
  void clear_activities();        //OVERLOAD CALL: clear_activities: column.c(column_class), gate.c(gate_class), layer.c(layer_class)
  void forward();
  name_class* get_name();        //OVERLOAD CALL: get_name: column.c(column_class), connector.c(connector_class), gate.c(gate_class), layer.c(layer_class), reverse_connector.c(reverse_connector_input_class), reverse_connector.c(reverse_connector_output_class), sensor.c(sensor_class)
  nsl_data* get_prime();
  nsl_data* get_prime_mem();
  nsl_data* get_support();
  nsl_data* get_support_mem();
  nsl_vector* get_priming_weights();
  nsl_vector* get_support_weights();
//  nsl_vector* get_priming_inputs();      Currently not supported
//  nsl_vector* get_support_inputs();      Currently not supported
  connector_class* get_priming_connector();
  connector_class* get_support_connector();
  connector_class* get_connector(int);
  void report_gate(int);        //OVERLOAD CALL: report_gate: column.c(column_class), gate.c(gate_class), layer.c(layer_class)
  int stuff(ifstream&);        //OVERLOAD CALL: stuff: gate.c(gate_class), layer.c(layer_class), column.c(column_class), connector.c(connector_class)
  float get_pet_pos();        //OVERLOAD CALL: get_pet_pos: column.c(column_class), gate.c(gate_class)
  float get_pet_neg();        //OVERLOAD CALL: get_pet_neg: column.c(column_class), gate.c(gate_class)
};

#endif



[ return ]