Commit c8f0ca9b authored by Ravgeet Dhillon's avatar Ravgeet Dhillon 💬
Browse files

updated link structure

parent aaecb08c
......@@ -22,7 +22,7 @@ Therefore this document suggests what we consider ideal behaviour, so you know w
* [GNOME Bugzilla](http://bugzilla.gnome.org/)
* [GNOME mailing lists](http://mail.gnome.org/)
* [Individuals](https://wiki.gnome.org/Foundation/CodeOfConduct/Signatures) who have signed our list.
* [Individuals](https://wiki.gnome.org/Foundation/CodeOfConduct/Signatures/) who have signed our list.
### Code of Conduct Committee
......@@ -31,4 +31,4 @@ The [Code of Conduct Committee][code-of-conduct-committee] is appointed by the G
The [committee's page][code-of-conduct-committee] has links to the Codes of Conduct for conferences, events, our photography policy, and the incident response guidelines for organizers.
<!-- markdown variables -->
[code-of-conduct-committee]: https://wiki.gnome.org/CodeOfConductCommittee
\ No newline at end of file
[code-of-conduct-committee]: https://wiki.gnome.org/CodeOfConductCommittee/
\ No newline at end of file
---
permalink: /contributing
layout: documentation
output: true
---
# Contributing to GTK.org
GTK.org welcomes everyone to contribute to the GTK.org. We really appreciate the efforts of people who help us in keeping the website updated. GTK.org is visted everyday by large number of developers and end users, so your contribution make a huge impact on the community.
### Read this first
## Read this first
We suggest you to take a moment to review this document in order to make the contribution process easy and effective for everyone involved.
......@@ -16,7 +14,7 @@ In order to maintain a uniformity across the website, we have made a certain set
As for everything else in the project, the contributions to GTK.org are governed by our [Code of Conduct][code-of-conduct].
### What can you contribute
## What can you contribute
GTK.org is an open source project and we love to receive contributions from our community — you! You can contribute to the GTK.org in any way you want, that has the potential to make GTK.org a better website. Some common ways to contribute are listed below:
* Improving documentation
......@@ -29,35 +27,67 @@ GTK.org is an open source project and we love to receive contributions from our
* Usecase Studies
* Adding/Updating/Removing Dependencies
#### Adding Documentation pages
### Adding Documentation pages
> Documentation pages are those which are listed under the `/docs/*` URL pattern.
Documentation pages are those which are listed under the `/docs/*` URL pattern.
#### Adding/Updating/Removing Dependencies
**Adding Dependency**
To add a new dependency, run the following command:
To add a new documentation page, follow the steps below:
1. Add a new `.md` file with the following naming convention:
* `<doc-page-name>.md` where `<doc-page-name>` is the name of the page. (Name should be assigned according to how it will appear in the URL)
2. In this new Markdown file, add the following front matter along with the file's content:
```
$ npm install <package-name> --save
permalink: /path/to/:name
# specifies the URL path of the file which will be appended to the site's url
```
3. Add the information about the new file to [/_data/stuff.yml](/_data/stuff.yml/).
4. Send a merge request using one of the merge request template.
**Updating Dependency**
To add update a particular dependency, run the following command:
```
$ npm update <package-name> --save
```
> If you are in doubt, check this [blog post](https://ravgeetdhillon.github.io/blog/adding-pages-to-jekyll-site/) on how to add documentation pages to the GTK website.
### Images and Illustrations
All the images and illustrations are present in the [assets/img][image-directory] directory. The following naming convention should be used when new images or illustrations are to be added:
`<role>-<name>.<ext>`
where
* `<role>` is the context for which the image is used in the website. For example if the image is going to be used in documentation pages, the `<role>` would be doc
* `<name>` is the name of the image. (Make sure that you provide a unique name for the image)
* `<ext>` is the extension of the image. Valid extensions are `.jpg`, `.jpeg`, `.svg`, `.png` and others. (Make sure that the images/illustrations you provide are optimized for size and quality)
To add update all the dependencies, run the following command:
> A valid image name for an image to be used as a wallpaper or just a display image is: `wall-computer.png` or `wallpaper-computer.png`
### Adding/Updating/Removing Dependencies
1. Create a local clone of the website:
```
$ npm update --save
$ git clone https://gitlab.gnome.org/ravgeetdhillon/gtk-web.git
```
**Removing Dependency**
To remove a new dependency, run the following command:
2. Change into the gtk-web directory:
```
npm uninstall <package-name> --save
$ cd gtk-web
```
### How to submit a contribution
3. Based on what you want to do, proceed further as given below:
* #### Adding Dependency
To add a new dependency, run the following command:
```
$ npm install <package-name> --save
```
* #### Updating Dependency
To add update a particular dependency, run the following command:
```
$ npm update <package-name> --save
```
To add update all the dependencies, run the following command:
```
$ npm update --save
```
* #### Removing Dependency
To remove a new dependency, run the following command:
```
$ npm uninstall <package-name> --save
```
## How to submit a contribution
#### For listing bugs
1. Open an issue and provide us with appropriate information using our Issue Template.
......@@ -81,7 +111,8 @@ If you find yourself wishing for a something that doesn't exist in GTK.org, you
> Actual behaviour. Tell us what should happens instead
# Community
You can chat with the core team on IRC. The core team is available to discuss about the things that can make the website better.
You can chat with the core team on IRC. The core is available to discuss about the things that can make the website better.
<!-- markdown variables -->
[code-of-conduct]: CODE_OF_CONDUCT.MD
\ No newline at end of file
[code-of-conduct]: CODE_OF_CONDUCT.MD/
[image-directory]: assets/img/
\ No newline at end of file
......@@ -60,7 +60,7 @@ menu_links:
footer: true
section: Project
- name: FAQs
href: https://developer.gnome.org/gtk3/stable/gtk-question-index.html
href: https://developer.gnome.org/gtk3/stable/gtk-question-index.html/
header: false
footer: true
section: Support
......@@ -85,7 +85,7 @@ menu_links:
footer: true
section: Support
- name: Code of Conduct
href: https://wiki.gnome.org/Foundation/CodeOfConduct
href: https://wiki.gnome.org/Foundation/CodeOfConduct/
header: false
footer: true
section: Company
......@@ -181,4 +181,4 @@ sidebar_links:
section: Architecture
- title: Cairo
name: cairo
section: architecture
\ No newline at end of file
section: Architecture
\ No newline at end of file
......@@ -10,72 +10,7 @@ gtkVersion: 3.96
site_repo: https://gitlab.gnome.org/ravgeetdhillon/gtk-web/
# link to the GTK introduction/tutorial video
tutorial_video_link: https://www.youtube.com/embed/bNA-Q8fQqTc
tutorial_video_link: https://www.youtube.com/embed/bNA-Q8fQqTc/
#gtk websites logo name
website_logo: gtk-logo.ico
# read out the CONTRIBUTING.md to know how to add documentation pages to the website
# to add sections to the sidebar on the documentation pages of the website, add a section with the following attributes:
# title: the display text for the section
# name: the name of the `.md` file in '/collection/_docs', to which the link should point
sidebar_sections:
- title: Getting Started
name: getting-started
- title: Installations
name: installations
- title: Language Bindings
name: language-bindings
- title: Dev Tools
name: dev-tools
- title: API References
name: apis
- title: Architecture
name: architecture
# to add links to the sidebar on the documentation pages of the website, add a link with the following attributes:
# title: the display text for the section
# name: the name of the `.md` file in '/collection/_docs', to which the link should point
# section: the name of the section the link belongs to
sidebar_links:
- title: Mono Develop
name: mono-develop
section: Dev Tools
- title: GNOME Builder
name: gnome-builder
section: Dev Tools
- title: Eclipse
name: eclipse
section: Dev Tools
- title: Linux
name: linux
section: Installations
- title: Windows
name: windows
section: Installations
- title: MacOS
name: macos
section: Installations
- title: GTK3
name: gtk3
section: API References
href: https://developer.gnome.org/gtk3/
- title: GTK4
name: gtk4
section: API References
- title: GLib, GObject, GIO
name: glib
section: Architecture
- title: GdkPixbuf
name: gdkpixbuf
section: Architecture
- title: Pango
name: pango
section: Architecture
- title: GDK
name: gtk
section: Architecture
- title: Cairo
name: cairo
section: architecture
\ No newline at end of file
website_logo: gtk-logo.ico
\ No newline at end of file
......@@ -10,14 +10,14 @@
<div class="text-break pt-4 px-4 border-right h-100">
<ul class="list-group">
{% for section in site.data.navigation.sidebar_sections %}
<li class="list-group-item border-0 group-header pb-4"><a href="/docs/{{ section.name }}" class="text-dark"><strong>{{ section.title }}</strong></a>
<li class="list-group-item border-0 group-header pb-4"><a href="/docs/{{ section.name }}/" class="text-dark"><strong>{{ section.title }}</strong></a>
{% assign sidebar_links = site.data.navigation.sidebar_links | where: "section", section.title %}
<ul class="list-group">
{% for link in sidebar_links %}
{% if link.href %}
<li class="list-group-item border-0 p-0 pt-2"><a href="{{ link.href }}" class="text-muted">{{ link.title }}</a></li>
{% else %}
<li class="list-group-item border-0 p-0 pt-2"><a href="/docs/{{ section.name }}/{{ link.name }}" class="text-muted">{{ link.title }}</a></li>
<li class="list-group-item border-0 p-0 pt-2"><a href="/docs/{{ section.name }}/{{ link.name }}/" class="text-muted">{{ link.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
......@@ -52,9 +52,9 @@
<div class="mr-3 px-3 py-3 border rounded shadow-sm">
{% assign page_name = page.path | split: '/' %}
{% assign page_name = page_name.last %}
<p class="mb-0">Observed a typo or some missing information, edit this page <a href="https://gitlab.gnome.org/ravgeetdhillon/gtk-web/blob/master/collections/_docs/{{ page_name }}">here</a>.</p>
<p class="mb-0">Observed a typo or some missing information, edit this page <a href="https://gitlab.gnome.org/ravgeetdhillon/gtk-web/blob/master/collections/_docs/{{ page_name }}/">here</a>.</p>
<br>
<p class="mb-0">Read on <a href="https://gitlab.gnome.org/ravgeetdhillon/gtk-web/blob/master/CONTRIBUTING.md">how to contribute</a> to this website.</p>
<p class="mb-0">Read on <a href="https://gitlab.gnome.org/ravgeetdhillon/gtk-web/blob/master/CONTRIBUTING.md/">how to contribute</a> to this website.</p>
</div>
</div>
</div>
......
---
permalink: /contributing
---
# Contributing to GTK.org
GTK.org welcomes everyone to contribute to the GTK.org. We really appreciate the efforts of people who help us in keeping the website updated. GTK.org is visted everyday by large number of developers and end users, so your contribution make a huge impact on the community.
## Read this first
We suggest you to take a moment to review this document in order to make the contribution process easy and effective for everyone involved.
In order to maintain a uniformity across the website, we have made a certain set of rules and templates that you should follow in order to provide us with useful contributions. Following these guidelines will help to communicate that you respect the time of the developers managing and developing the website. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
As for everything else in the project, the contributions to GTK.org are governed by our [Code of Conduct][code-of-conduct].
## What can you contribute
GTK.org is an open source project and we love to receive contributions from our community — you! You can contribute to the GTK.org in any way you want, that has the potential to make GTK.org a better website. Some common ways to contribute are listed below:
* Improving documentation
* Bug Tracking
* Feature Requests
* Design Refactoring
* Images and Illustrations
* New Content
* Blog Posts
* Usecase Studies
* Adding/Updating/Removing Dependencies
### Adding Documentation pages
Documentation pages are those which are listed under the `/docs/*` URL pattern.
To add a new documentation page, follow the steps below:
1. Add a new `.md` file with the following naming convention:
* `<doc-page-name>.md` where `<doc-page-name>` is the name of the page. (Name should be assigned according to how it will appear in the URL)
2. In this new Markdown file, add the following front matter along with the file's content:
```
permalink: /path/to/:name
# specifies the URL path of the file which will be appended to the site's url
```
3. Add the information about the new file to [/_data/stuff.yml](/_data/stuff.yml).
4. Send a merge request using one of the merge request template.
> If you are in doubt, check this [blog post](https://ravgeetdhillon.github.io/) on how to add documentation pages to the GTK website.
### Images and Illustrations
All the images and illustrations are present in the [assets/img][image-directory] directory. The following naming convention should be used when new images or illustrations are to be added:
`<role>-<name>.<ext>`
where
* `<role>` is the context for which the image is used in the website. For example if the image is going to be used in documentation pages, the `<role>` would be doc
* `<name>` is the name of the image. (Make sure that you provide a unique name for the image)
* `<ext>` is the extension of the image. Valid extensions are `.jpg`, `.jpeg`, `.svg`, `.png` and others. (Make sure that the images/illustrations you provide are optimized for size and quality)
> A valid image name for an image to be used as a wallpaper or just a display image is: `wall-computer.png` or `wallpaper-computer.png`
### Adding/Updating/Removing Dependencies
1. Create a local clone of the website:
```
$ git clone https://gitlab.gnome.org/ravgeetdhillon/gtk-web.git
```
2. Change into the gtk-web directory:
```
$ cd gtk-web
```
3. Based on what you want to do, proceed further as given below:
* #### Adding Dependency
To add a new dependency, run the following command:
```
$ npm install <package-name> --save
```
* #### Updating Dependency
To add update a particular dependency, run the following command:
```
$ npm update <package-name> --save
```
To add update all the dependencies, run the following command:
```
$ npm update --save
```
* #### Removing Dependency
To remove a new dependency, run the following command:
```
$ npm uninstall <package-name> --save
```
## How to submit a contribution
#### For listing bugs
1. Open an issue and provide us with appropriate information using our Issue Template.
2. (Optional) If you can solve the issue filed by you, read below on how to submit a pull request.
#### For feature requests
If you find yourself wishing for a something that doesn't exist in GTK.org, you are probably not alone. Open an issue which describes the feature you would like to see, how it would affect the community, and how it should work.
#### For sending Pull Requests
1. Create your own fork of the code.
2. Do the changes in your fork.
3. Send us a pull request with appropriate information using our Pull Request Template.
### Issue Template for GTK.org.
> Subject of the issue
> Describe your issue here.
> Your environment
> which browser and its version
> Tell us how to reproduce this issue. Please provide a working demo, you can use this template as a base.
> Expected behaviour. Tell us what should happen
> Actual behaviour. Tell us what should happens instead
# Community
You can chat with the core team on IRC. The core is available to discuss about the things that can make the website better.
<!-- markdown variables -->
[code-of-conduct]: CODE_OF_CONDUCT.MD
[image-directory]: assets/img
\ No newline at end of file
---
permalink: /docs/:name
permalink: /docs/:name/
---
apis
\ No newline at end of file
---
permalink: /docs/:name
permalink: /docs/:name/
---
architecture
\ No newline at end of file
---
permalink: /docs/:name
permalink: /docs/:name/
---
tools
\ No newline at end of file
---
permalink: /docs/dev-tools/:name
permalink: /docs/dev-tools/:name/
---
# Eclipse
......
---
permalink: /docs/:name
permalink: /docs/:name/
---
started
\ No newline at end of file
---
permalink: /docs/dev-tools/:name
permalink: /docs/dev-tools/:name/
---
# GNOME Builder
......
---
permalink: /docs/:name
permalink: /docs/:name/
---
installations
\ No newline at end of file
---
permalink: /docs/:name
permalink: /docs/:name/
---
bindings
\ No newline at end of file
---
permalink: /docs/dev-tools/:name
permalink: /docs/dev-tools/:name/
---
# Mono Develop
......
......@@ -34,7 +34,7 @@ navbar_dark: true
<i class="fas fa-cogs fa-fw fa-3x pb-4 text-primary"></i>
<h5>Getting Started</h5>
<span class="text-muted small">Get started now by building a Hello World app and playing around it.</span>
<a href="./getting-started" class="stretched-link"></a>
<a href="/docs/getting-started/" class="stretched-link"></a>
</div>
</div>
<div class="col-md-4 pb-5">
......@@ -43,7 +43,7 @@ navbar_dark: true
<i class="fas fa-tools fa-fw fa-3x pb-4 text-primary"></i>
<h5>Dev Tools</h5>
<span class="text-muted small">Learn how to setup your development environment with GTK recommended tools.</span>
<a href="/" class="stretched-link"></a>
<a href="/docs/dev-tools/" class="stretched-link"></a>
</div>
</div>
<div class="col-md-4 pb-5">
......@@ -53,7 +53,7 @@ navbar_dark: true
<h5>Language Bindings</h5>
<span class="text-muted small">Learn to integrate your favorite programming language with GTK through
bindings.</span>
<a href="/" class="stretched-link"></a>
<a href="/docs/language-bindings/" class="stretched-link"></a>
</div>
</div>
<div class="col-md-4 pb-5">
......@@ -62,7 +62,7 @@ navbar_dark: true
<i class="fas fa-box-open fa-fw fa-3x pb-4 text-primary"></i>
<h5>API References</h5>
<span class="text-muted small">Dig deep into the API references for GTK3 and GTK4.</span>
<a href="/" class="stretched-link"></a>
<a href="/docs/apis/" class="stretched-link"></a>
</div>
</div>
<div class="col-md-4 pb-5">
......@@ -71,7 +71,7 @@ navbar_dark: true
<i class="fas fa-vector-square fa-fw fa-3x pb-4 text-primary"></i>
<h5>Architecture</h5>
<span class="text-muted small">Learn about the sub modules the GTK has been built upon.</span>
<a href="/" class="stretched-link"></a>
<a href="/docs/architecture/" class="stretched-link"></a>
</div>
</div>
<div class="col-md-4 pb-5">
......@@ -80,7 +80,7 @@ navbar_dark: true
<i class="fas fa-tools fa-fw fa-3x pb-4 text-primary"></i>
<h5>Installations</h5>
<span class="text-muted small">Figure out how to install GTK on different platforms.</span>
<a href="/" class="stretched-link"></a>
<a href="/docs/installations/" class="stretched-link"></a>
</div>
</div>
</div>
......
......@@ -5,72 +5,80 @@
{%- include header.html -%}
<section class="pb-4 d-flex flex-column align-items-center" id="landing">
<div class="container">
<div class="row">
<div class="col-md-5 d-flex justify-content-end flex-column main-heading">
<h1 class="display-4 pb-3">Amazing GTK Features</h1>
<span class="text-muted lead">GTK is loaded with all the features that a toolkit should have.</span>
</div>
<div class="col-md-7 d-none d-md-flex justify-content-center flex-column">
<img src="{{ '/assets/img/wall-features.svg' | prepend: site.url }}" class="img-fluid" />
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-5 d-flex justify-content-end flex-column main-heading">
<h1 class="display-4 pb-3">Amazing GTK Features</h1>
<span class="text-muted lead">GTK is loaded with all the features that a toolkit should have.</span>
</div>
<div class="col-md-7 d-none d-md-flex justify-content-center flex-column">
<img src="{{ '/assets/img/wall-features.svg' | prepend: site.url }}" class="img-fluid" />
</div>
</div>
</div>
</section>
<section class="py-4" id="features-main">
<div class="container">
<div class="row text-center d-flex justify-content-center">
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Cross Platform</h2>
<p class="text-muted">Originally GTK was developed for the X Window System but it has grown over the years to include backend support for other well known operating systems. Today you can use GTK on:</p>
<ul class="list-group list-group-horizontal w-75 mt-2">
<li class="list-group-item col">
<img src="{{ '/assets/img/linux.png' | prepend: site.url }}" class="img-fluid pb-1" style="width:40px;" /><br>
<a href="/downloads/linux" class="stretched-link">Linux</a>
</li>
<li class="list-group-item col">
<img src="{{ '/assets/img/windows.png' | prepend: site.url }}" class="img-fluid pb-1" style="width:40px;" /><br>
<a href="/downloads/windows" class="stretched-link">Windows</a>
</li>
<li class="list-group-item col">
<img src="{{ '/assets/img/apple.png' | prepend: site.url }}" class="img-fluid pb-1" style="width:40px;" /><br>
<a href="/downloads/macos" class="stretched-link">Mac OS X</a>
</li>
</ul>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Language Bindings</h2>
<p class="text-muted">GTK is available in many other programming languages thanks to the language bindings available. This makes GTK quite an attractive toolkit for application development.</p>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Interfaces</h2>
<p class="text-muted">GTK has a comprehensive collection of core widgets and interfaces for use in your application.</p>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Stability</h2>
<p class="text-muted">GTK has been developed for over a decade to be able to deliver the enticing features and superb performance that it brings to your application development. GTK is supported by a large community of developers and has core maintainers from companies such as Red Hat, Novell, Lanedo, Codethink, Endless Mobile and Intel.</p>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Foundations</h2>
<p class="text-muted">GTK is built on top of GLib. GLib provides the fundamental algorithmic language constructs commonly duplicated in applications. This library has features such as: (this list is not a comprehensive list)
Object and type system
Main loop
Dynamic loading of modules (i.e. plug-ins)
Thread support
Timer support
Memory allocator
Threaded Queues (synchronous and asynchronous)
Lists (singly linked, doubly linked, double ended)
Hash tables
Arrays
Trees (N-ary and binary balanced)
String utilities and charset handling
Lexical scanner and XML parser
Base64 (encoding & decoding)</p>
</div>
</div>
</div>
<div class="container">
<div class="row text-center d-flex justify-content-center">
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Cross Platform</h2>
<p class="text-muted">Originally GTK was developed for the X Window System but it has grown over the years to
include backend support for other well known operating systems. Today you can use GTK on:</p>
<ul class="list-group list-group-horizontal w-75 mt-2">
<li class="list-group-item col">
<img src="{{ '/assets/img/linux.png' | prepend: site.url }}" class="img-fluid pb-1" style="width:40px;" /><br>
<a href="/downloads/linux/" class="stretched-link">Linux</a>
</li>
<li class="list-group-item col">
<img src="{{ '/assets/img/windows.png' | prepend: site.url }}" class="img-fluid pb-1" style="width:40px;" /><br>
<a href="/downloads/windows/" class="stretched-link">Windows</a>
</li>
<li class="list-group-item col">
<img src="{{ '/assets/img/apple.png' | prepend: site.url }}" class="img-fluid pb-1" style="width:40px;" /><br>
<a href="/downloads/macos/" class="stretched-link">Mac OS X</a>
</li>
</ul>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Language Bindings</h2>
<p class="text-muted">GTK is available in many other programming languages thanks to the language bindings
available. This makes GTK quite an attractive toolkit for application development.</p>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Interfaces</h2>
<p class="text-muted">GTK has a comprehensive collection of core widgets and interfaces for use in your
application.</p>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Stability</h2>
<p class="text-muted">GTK has been developed for over a decade to be able to deliver the enticing features and
superb performance that it brings to your application development. GTK is supported by a large community of
developers and has core maintainers from companies such as Red Hat, Novell, Lanedo, Codethink, Endless Mobile
and Intel.</p>
</div>
<div class="py-4 col-md-10 col-lg-7 d-flex flex-column align-items-center">
<h2 class="text-center font-weight-light mb-3">Foundations</h2>
<p class="text-muted">GTK is built on top of GLib. GLib provides the fundamental algorithmic language
constructs commonly duplicated in applications. This library has features such as: (this list is not a
comprehensive list)
Object and type system
Main loop
Dynamic loading of modules (i.e. plug-ins)
Thread support
Timer support
Memory allocator
Threaded Queues (synchronous and asynchronous)
Lists (singly linked, doubly linked, double ended)
Hash tables
Arrays
Trees (N-ary and binary balanced)
String utilities and charset handling