# CTPL overview

## Introduction

CTPL is a template library written in C. It allows fast and easy parsing of templates from many sources (including in-memory data and local and remote streaming, thanks to GIO) and fine control over template parsing environment.

CTPL depends on the following libraries:

GLib | General purpose C utility library
GIO | GLib's I/O abstraction library

### Advantages and disadvantages

#### Advantages

- It is a library, then it can be easily used from programs;

- Separated lexer and parser;

- It is written in portable C;

- Simple syntax;

- Fast and strict parsing;

- Possible in-memory parsing, allowing non-file data parsing and avoiding I/O-latency, through GIO's GMemoryInputStream and GMemoryOutputStream.

#### Disadvantages

- Since the input is first completely loaded as a token tree in memory -- which is also one of the advantages -- , it may consume a little more memory than the input template size.