Skip to content

Commit 3639bce

Browse files
1. Fixed circular dependencies between header files using forward declarations:
- Resolved circular dependencies between neuron.h and neuron_reference.h - Fixed Direction vs NetworkDirection name conflicts 2. Made const-correctness fixes: - Updated method signatures to properly mark const methods - Updated parameter types to match function declarations 3. Fixed template and inheritance issues: - Fixed template specialization and implementation - Corrected method overrides and abstract class implementations 4. Fixed relation initialization: - Updated relation constructors to use proper parameters - Fixed handling of abstract classes in collections (std::vector) 5. Fixed naming conflicts: - Renamed Direction to NetworkDirection - Fixed include paths for different component hierarchies 6. Fixed file I/O operations: - Simplified read/write operations that were using undefined methods 7. Added missing method implementations: - Added implementations for methods declared in header files but missing from source files
1 parent e2ff8c8 commit 3639bce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+521
-284
lines changed

include/network/activation.h

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@
99
#include "network/model_provider.h"
1010
#include "network/neuron.h"
1111
#include "network/bs_type.h"
12-
#include "network/binding_signal.h"
13-
#include "network/link.h"
14-
#include "network/fired.h"
12+
// Forward declarations to avoid circular includes
13+
class BindingSignal;
14+
class Link;
15+
class Fired;
16+
class Synapse;
17+
class LinkDefinition;
18+
class ActivationKey;
1519

1620
#include <map>
1721
#include <set>
@@ -23,7 +27,7 @@ class Activation : public Obj, public Element, public ModelProvider {
2327
public:
2428
static const std::function<bool(Activation*, Activation*)> ID_COMPARATOR;
2529

26-
Activation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType, BindingSignal*> bindingSignals);
30+
Activation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType*, BindingSignal*> bindingSignals);
2731
virtual ~Activation();
2832

2933
// Implementation of Obj virtual methods
@@ -34,12 +38,12 @@ class Activation : public Obj, public Element, public ModelProvider {
3438
Activation* getParent() const;
3539
void addOutputLink(Link* l);
3640
virtual void addInputLink(Link* l) = 0;
37-
BindingSignal* getBindingSignal(BSType s) const;
38-
std::map<BSType, BindingSignal*> getBindingSignals() const;
39-
bool hasConflictingBindingSignals(std::map<BSType, BindingSignal*> targetBindingSignals) const;
40-
bool isConflictingBindingSignal(BSType s, BindingSignal* targetBS) const;
41-
bool hasNewBindingSignals(std::map<BSType, BindingSignal*> targetBindingSignals) const;
42-
Activation* branch(std::map<BSType, BindingSignal*> bindingSignals);
41+
BindingSignal* getBindingSignal(BSType* s) const;
42+
std::map<BSType*, BindingSignal*> getBindingSignals() const;
43+
bool hasConflictingBindingSignals(std::map<BSType*, BindingSignal*> targetBindingSignals) const;
44+
bool isConflictingBindingSignal(BSType* s, BindingSignal* targetBS) const;
45+
bool hasNewBindingSignals(std::map<BSType*, BindingSignal*> targetBindingSignals) const;
46+
Activation* branch(std::map<BSType*, BindingSignal*> bindingSignals);
4347
void linkOutgoing();
4448
void linkOutgoing(Synapse* targetSyn);
4549
void propagate(Synapse* targetSyn);
@@ -75,7 +79,7 @@ class Activation : public Obj, public Element, public ModelProvider {
7579
int id;
7680
Neuron* neuron;
7781
Document* doc;
78-
std::map<BSType, BindingSignal*> bindingSignals;
82+
std::map<BSType*, BindingSignal*> bindingSignals;
7983
Activation* parent;
8084
long created;
8185
long fired;

include/network/activation_definition.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
#define NETWORK_ACTIVATION_DEFINITION_H
33

44
#include "network/node_definition.h"
5+
#include "fields/type.h"
56

6-
class ActivationDefinition : public NodeDefinition {
7+
class ActivationDefinition : public Type {
78
public:
8-
ActivationDefinition();
9+
ActivationDefinition(TypeRegistry* registry, const std::string& name);
910
virtual ~ActivationDefinition();
1011

1112
// Add any additional methods or members specific to ActivationDefinition here

include/network/activation_key.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ class ActivationKey {
1313
};
1414

1515
struct ActivationKeyComparator {
16-
bool operator()(ActivationKey* a, ActivationKey* b) const {
17-
if(a->getNeuronId() != b->getNeuronId())
18-
return a->getNeuronId() < b->getNeuronId();
16+
bool operator()(const ActivationKey& a, const ActivationKey& b) const {
17+
if(a.getNeuronId() != b.getNeuronId())
18+
return a.getNeuronId() < b.getNeuronId();
1919
else
20-
return a->getActId() < b->getActId();
20+
return a.getActId() < b.getActId();
2121
}
2222
};
2323

include/network/config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#ifndef NETWORK_CONFIG_H
22
#define NETWORK_CONFIG_H
33

4+
#include <string>
5+
46
class Config {
57
public:
68
Config();

include/network/conjunctive_activation.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66

77
class ConjunctiveActivation : public Activation {
88
public:
9-
ConjunctiveActivation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType, BindingSignal*> bindingSignals);
9+
ConjunctiveActivation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType*, BindingSignal*> bindingSignals);
1010
virtual ~ConjunctiveActivation();
1111

1212
RelatedObjectIterable* followManyRelation(Relation* rel) const override;
1313

1414
void linkIncoming(Activation* excludedInputAct) override;
15+
void linkIncoming(Synapse* targetSyn, Activation* excludedInputAct);
1516
void addInputLink(Link* l) override;
1617
std::vector<Link*> getInputLinks() const override;
1718

include/network/conjunctive_synapse.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class ConjunctiveSynapse : public Synapse {
99
ConjunctiveSynapse(SynapseDefinition* type, Neuron* input, Neuron* output);
1010

1111
RelatedObjectIterable* followManyRelation(Relation* rel) const override;
12-
Obj* followSingleRelation(const Relation* rel) override;
12+
Obj* followSingleRelation(const Relation* rel) const override;
1313
/*
1414
void write(DataOutput* out) override;
1515
void readFields(DataInput* in, TypeRegistry* tr) override;

include/network/direction.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,22 @@
99
#include "network/bs_type.h"
1010
#include "network/transition.h"
1111

12-
class Direction {
12+
class NetworkDirection {
1313
public:
14-
virtual ~Direction() = default;
15-
virtual Direction* invert() = 0;
14+
virtual ~NetworkDirection() = default;
15+
virtual NetworkDirection* invert() = 0;
1616
virtual Neuron* getNeuron(Model* m, Synapse* s) = 0;
1717
virtual Activation* getActivation(Link* l) = 0;
1818
virtual int getOrder() = 0;
1919
virtual BSType* transition(BSType* s, Transition* t) = 0;
20+
21+
static NetworkDirection* INPUT;
22+
static NetworkDirection* OUTPUT;
23+
/*
2024
virtual void write(DataOutput* out) = 0;
2125
22-
static Direction* read(DataInput* in);
26+
static NetworkDirection* read(DataInput* in);
27+
*/
2328
};
2429

2530
#endif // NETWORK_DIRECTION_H

include/network/disjunctive_activation.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class DisjunctiveActivation : public Activation {
88
public:
9-
DisjunctiveActivation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType, BindingSignal*> bindingSignals);
9+
DisjunctiveActivation(ActivationDefinition* t, Activation* parent, int id, Neuron* n, Document* doc, std::map<BSType*, BindingSignal*> bindingSignals);
1010
virtual ~DisjunctiveActivation();
1111

1212
RelatedObjectIterable* followManyRelation(Relation* rel) const override;

include/network/disjunctive_synapse.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ class DisjunctiveSynapse : public Synapse {
99
DisjunctiveSynapse(SynapseDefinition* type, Neuron* input, Neuron* output);
1010

1111
RelatedObjectIterable* followManyRelation(Relation* rel) const override;
12-
Obj* followSingleRelation(const Relation* rel) override;
12+
Obj* followSingleRelation(const Relation* rel) const override;
1313

14-
void link(Model* m) override;
14+
void link(Model* m);
1515

1616
private:
1717
bool propagable;

include/network/edge_definition.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#include "network/typedefs.h"
55

6-
class EdgeDefinition : public Type {
6+
class EdgeDefinition {
77
public:
88
EdgeDefinition();
99
virtual ~EdgeDefinition();

0 commit comments

Comments
 (0)