-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCircuitBoard.cpp
More file actions
69 lines (61 loc) · 1.41 KB
/
CircuitBoard.cpp
File metadata and controls
69 lines (61 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//
// CircuitBoard.cpp
// CircuitModel
//
// Created by Mayank on 9/7/12.
// Copyright (c) 2012 Mayank, Kurt. All rights reserved.
//
#include "CircuitBoard.h"
void CircuitBoard::addChip(Chip *withChip)
{
if (mChips_set.find(withChip)==mChips_set.end())
{
mChips_set.insert(withChip);
mChips.push_back(withChip);
}
}
void CircuitBoard::removeChip(Chip *removeChip)
{
mChips_set.erase(removeChip);
for (std::vector<Chip *>::iterator i=mChips.begin();i!=mChips.end();i++)
{
if (*i==removeChip)
mChips.erase(i);
}
}
void CircuitBoard::addConnection(ChipOutput *chipOutput,ChipInput *chipInput)
{
mConnections[chipInput] = chipOutput;
addChip(chipOutput->chip);
addChip(chipInput->chip);
}
void CircuitBoard::removeConnection(ChipInput *chipInput)
{
mConnections[chipInput] = NULL;
}
void CircuitBoard::updateConnections()
{
for (std::map<ChipInput *, ChipOutput*>::iterator chipPair=mConnections.begin();chipPair!=mConnections.end();chipPair++)
{
chipPair->first->setConnection(chipPair->second);
}
}
void CircuitBoard::tick()
{
for (int i=0;i<mChips.size();i++)
{
mChips[i]->tickInput();
}
for (int i=0;i<mChips.size();i++)
{
mChips[i]->tickOutput();
}
}
Chip* CircuitBoard::getChipAtIndex(int i)
{
return mChips[i];
}
int CircuitBoard::getNumberOfChips()
{
return mChips.size();
}