/* * 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