# dcancelmo/boolean-circuits architecture

> Architecture diagram of the GitHub repository dcancelmo/boolean-circuits, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dcancelmo/boolean-circuits
- Repository: https://github.com/dcancelmo/boolean-circuits

## Overview

This is a small command-line Boolean circuit simulator and demonstration program. Its workflow is to construct example circuits, assign Boolean inputs, evaluate the circuit’s gates, and print the resulting outputs for selected input combinations. The examples include circuits A, B, and C, plus the documented one-bit adder; NOR and NAND are described as compositions of existing gates. The sampled source shows the runner, circuit evaluation, gate operations, and mutable Boolean values. The README documents testing across inputs; unsampled portions of main.c are represented only at the subsystem level.

Main entry points: [`main.c`](https://github.com/dcancelmo/boolean-circuits/blob/master/main.c) (Example runner), [`Circuit.c`](https://github.com/dcancelmo/boolean-circuits/blob/master/Circuit.c) (Circuit evaluator), [`Gates.c`](https://github.com/dcancelmo/boolean-circuits/blob/master/Gates.c) (Logic gates), [`Value.c`](https://github.com/dcancelmo/boolean-circuits/blob/master/Value.c) (Boolean values)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_examples["Circuit examples"]
  node_runner["Example runner<br/>[main.c]"]
  node_examplesets["Circuit definitions<br/>[main.c]"]
end

subgraph group_runtime["Simulation runtime"]
  node_circuit["Circuit evaluator<br/>[Circuit.c]"]
  node_gates["Logic gates<br/>[Gates.c]"]
end

subgraph group_state["Boolean state"]
  node_values["Boolean values<br/>[Value.c]"]
end

node_user(("Program user"))
node_terminal(("Printed results"))

node_user -->|"runs"| node_runner
node_runner -->|"selects examples"| node_examplesets
node_runner -->|"sets inputs; evaluates; reads outputs"| node_circuit
node_runner -->|"constructs gates"| node_gates
node_examplesets -->|"constructs circuits"| node_circuit
node_examplesets -->|"builds gate networks"| node_gates
node_circuit -->|"updates gates"| node_gates
node_circuit -->|"sets and reads"| node_values
node_gates -->|"reads inputs; writes outputs"| node_values
node_runner -->|"prints results"| node_terminal

click node_runner "https://github.com/dcancelmo/boolean-circuits/blob/master/main.c"
click node_examplesets "https://github.com/dcancelmo/boolean-circuits/blob/master/main.c"
click node_circuit "https://github.com/dcancelmo/boolean-circuits/blob/master/Circuit.c"
click node_gates "https://github.com/dcancelmo/boolean-circuits/blob/master/Gates.c"
click node_values "https://github.com/dcancelmo/boolean-circuits/blob/master/Value.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_runner,node_examplesets,node_user toneBlue
class node_circuit,node_gates toneAmber
class node_values toneMint
class node_terminal toneIndigo
```

## Components

### Circuit examples

- [Example runner](https://github.com/dcancelmo/boolean-circuits/blob/master/main.c): `main.c`
- [Circuit definitions](https://github.com/dcancelmo/boolean-circuits/blob/master/main.c): `main.c`

### Simulation runtime

- [Circuit evaluator](https://github.com/dcancelmo/boolean-circuits/blob/master/Circuit.c): `Circuit.c`
- [Logic gates](https://github.com/dcancelmo/boolean-circuits/blob/master/Gates.c): `Gates.c`

### Boolean state

- [Boolean values](https://github.com/dcancelmo/boolean-circuits/blob/master/Value.c): `Value.c`

### Other components

- **Program user**
- **Printed results**

## Connections

- Program user → Example runner: runs
- Example runner → Circuit definitions: selects examples
- Example runner → Circuit evaluator: sets inputs; evaluates; reads outputs
- Example runner → Logic gates: constructs gates
- Circuit definitions → Circuit evaluator: constructs circuits
- Circuit definitions → Logic gates: builds gate networks
- Circuit evaluator → Logic gates: updates gates
- Circuit evaluator → Boolean values: sets and reads
- Logic gates → Boolean values: reads inputs; writes outputs
- Example runner → Printed results: prints results
