Skip to content

Latest commit

 

History

History
33 lines (26 loc) · 2.28 KB

File metadata and controls

33 lines (26 loc) · 2.28 KB

Step 1: Project Architecture

Global Architecture

The TXT Engine C is designed as a modular pipeline for processing text. The data flows through distinct stages, where each stage transforms the data for the next one.

Pipeline Flow: Raw Text -> Scanner -> Char Stream -> Tokenizer -> Tokens -> Stats/Normalizer

What is a Text Engine?

A text engine is a software component capable of reading, understanding, and manipulating text data. Unlike a simple string manipulation function, an engine is designed to handle streams of data, manage memory efficiently, and provide structured analysis (like counting words, sentences, or converting formats).

Why Modules?

We split the project into modules (Scanner, Tokenizer, etc.) to enforce Separation of Concerns.

  • Maintainability: If the Tokenizer breaks, we know exactly where to look.
  • Reusability: We can use the Scanner for a different project without taking the Tokenizer.
  • Testability: We can test the Stats module independently of the Source reading logic.

Role of Folders

  • include/: Contains the Public API (Header files). These are the only files a user of your library should verify import.
  • src/: Contains the Internal Implementation (Source code). These files do the actual work but are hidden from the user.
  • examples/: Sample programs showing how to use the library. Good for learning and quick testing.
  • tests/: Automated tests to verify the correctness of each module.
  • build/: Temporary directory for compiled object files (.o) and the final library (.a). This folder is ignored by git.
  • docs/: Educational documentation and project guides.

Public API vs Internal Implementation

  • Public API (include/): The "Menu" of a restaurant. It tells you what you can order (functions) and what results to expect, but not how it's cooked.
  • Internal Implementation (src/): The "Kitchen". This is where the messy details (memory management, pointers, loops) happen. The user never needs to visit the kitchen; they just want the meal.

What you learned in this step

  • How to structure a professional C project.
  • The importance of separating the Interface (headers) from the Implementation (source).
  • How to organize files to keep the codebase clean and scalable.