Skip to content

Commit 902ab0b

Browse files
general boilerplate / project-support improvements (#16)
1 parent 3140c7f commit 902ab0b

23 files changed

Lines changed: 296 additions & 78 deletions

.github/workflows/ci.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ name: CI
33
on:
44
push:
55
branches:
6-
- master
7-
- dev
86
- boilerplate
7+
- dev
8+
- idiomatic
9+
- master
910
- rc1
1011
- rc2
1112
- rc3
12-
- rc4
13-
- rc5
14-
- update
1513
pull_request:
1614

1715
concurrency:

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,10 @@ perf_test/
5454

5555
scripts/internal/
5656

57-
/include/b64/
5857
/include/shwild/
5958
/include/xcontract/
6059
/include/xcover/
6160
/include/xtests/
62-
/src/b64/
6361
/src/shwild/
6462
/src/xcontract/
6563
/src/xcover/

.sis/project_name.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cstring

AUTHORS.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# cstring - Authors <!-- omit in toc -->
22

33

4-
## Major Contributors
4+
## Major Contributors:
55

6-
* Matt Wilson ([mwsis](https://github.com/mwsis))
6+
* **Matt Wilson** ([mwsis](https://github.com/mwsis));
77

88

9-
## Defect reports, fixes and suggestions (for which we are very grateful)
9+
## Defect reports, fixes and suggestions (for which we are very grateful):
1010

1111
* \<none>
1212

CHANGES.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
# cstring - CHANGES <!-- omit in toc -->
22

33

4+
## 4.0.14-alpha1 - 7th August 2026
5+
6+
* Aligned project boilerplate with **b64** / **Pantheios** (scripts, markdown, CI branches, `.sis`);
7+
* Added **.sis/project_name.txt**; helper scripts load `ProjectName` for status echoes;
8+
* CI `on.push.branches` set to lexicographic Pantheios set (`boilerplate`, `dev`, `idiomatic`, `master`, `rc1``rc3`);
9+
* **CMakeLists.txt** — set `CMP0177` for CMake ≥ 3.31;
10+
* **.gitignore** — removed stray **b64** include/src ignore entries;
11+
* **README.md** — C++ badge; CI badge alt text; **Introduction**; help links; heading fixes;
12+
* **AUTHORS.md**, **NEWS.md**, **FAQ.md**, **KNOWN_ISSUES.md** — peer layout/content alignment;
13+
* Added **HOW_YOU_CAN_HELP.md**;
14+
* **TODO.md** — marked `CMAKE_INSTALL_LIBDIR` complete;
15+
* **run_all_examples.sh**, **run_all_unit_tests.sh**, **run_all_scratch_tests.sh** — coloured list/execute path output (via `tput`);
16+
17+
418
## 4.0.13 - 2nd August 2026
519

620
* Modular GitHub Actions CI (**ci.yml** + **ci-cell.yml**), with install-smoke and MinGW cells;

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# Purpose: Top-level CMake lists file for cstring
66
#
77
# Created: 21st December 2023
8-
# Updated: 2nd August 2026
8+
# Updated: 6th August 2026
99
#
1010
# ######################################################################## #
1111

@@ -14,6 +14,9 @@
1414
# CMake
1515

1616
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
17+
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.31")
18+
cmake_policy(SET CMP0177 NEW)
19+
endif()
1720

1821
# require out-of-source builds
1922
file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt" LOC_PATH)

Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
PROJECT_NAME = "cstring"
44
PROJECT_BRIEF = "Extensible C-style strings and vectors of such, for Unix and Windows"
5-
PROJECT_NUMBER = 4.0.13
5+
PROJECT_NUMBER = 4.0.14-alpha1
66

77
# Prefer SIS_CMAKE_BUILD_DIR-aligned output (same convention as Diagnosticism).
88
# ./dox/ remains gitignored for legacy/local runs that override OUTPUT_DIRECTORY.

FAQ.md

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ it will be used to create one.
88
## Table of Contents <!-- omit in toc -->
99

1010
- [Q1: "How do I build cstring?"](#q1-how-do-i-build-cstring)
11-
- [Q2: "Does cstring have its own unit-tests?"](#q2-does-cstring-have-its-own-unit-tests)
12-
- [Q3: "How do I build without the C++ examples and tests?"](#q3-how-do-i-build-without-the-c-examples-and-tests)
13-
- [Q4: "Where are the examples?"](#q4-where-are-the-examples)
11+
- [Q2: "How do I install cstring?"](#q2-how-do-i-install-cstring)
12+
- [Q3: "How do I use cstring?"](#q3-how-do-i-use-cstring)
13+
- [Q4: "Does cstring have its own unit-tests?"](#q4-does-cstring-have-its-own-unit-tests)
14+
- [Q5: "How do I build without the C++ examples and tests?"](#q5-how-do-i-build-without-the-c-examples-and-tests)
15+
- [Q6: "Where are the examples?"](#q6-where-are-the-examples)
1416

1517

1618
# FAQs: <!-- omit in toc -->
@@ -37,7 +39,48 @@ $ ./prepare_cmake.sh -m
3739
Execute `$ ./prepare_cmake.sh --help` for the full set of options.
3840

3941

40-
## Q2: "Does cstring have its own unit-tests?"
42+
## Q2: "How do I install cstring?"
43+
44+
See [INSTALL.md](./INSTALL.md) for details of how to install **cstring**.
45+
46+
47+
## Q3: "How do I use cstring?"
48+
49+
Include **cstring/cstring.h** (and **cstring/cstring.vector.h** where needed)
50+
and link against **libcstring** (the **CMake** target is `cstring::core`).
51+
Create and destroy instances with `cstring_create()` / `cstring_destroy()`,
52+
and mutate with `cstring_assign()`, `cstring_append()`, and related APIs.
53+
54+
A minimal sketch:
55+
56+
```c
57+
#include <cstring/cstring.h>
58+
59+
#include <stdio.h>
60+
#include <stdlib.h>
61+
62+
int main(void)
63+
{
64+
cstring_t cs;
65+
CSTRING_RC rc = cstring_create(&cs, "Hello");
66+
67+
if (CSTRING_RC_SUCCESS != rc)
68+
{
69+
return EXIT_FAILURE;
70+
}
71+
72+
printf("%s\n", cs.ptr);
73+
74+
cstring_destroy(&cs);
75+
76+
return EXIT_SUCCESS;
77+
}
78+
```
79+
80+
See [INSTALL.md](./INSTALL.md) and the examples under **examples/**.
81+
82+
83+
## Q4: "Does cstring have its own unit-tests?"
4184
4285
Yes. Automated tests live under:
4386
@@ -50,7 +93,7 @@ and run with **run_all_unit_tests.sh** (and **CTest** where configured). Tests
5093
require **STLSoft** and **xTests** (and may optionally recognise **shwild**).
5194
5295
53-
## Q3: "How do I build without the C++ examples and tests?"
96+
## Q5: "How do I build without the C++ examples and tests?"
5497
5598
Pass `--no-cpp` (or `-C`) to **prepare_cmake.sh**, which sets CMake
5699
`NO_CSTRING_CPP_API=ON`. That omits C++ examples and remaining C++ tests.
@@ -59,7 +102,7 @@ The **C** unit-tests still require **STLSoft** and **xTests** unless you also
59102
pass `--disable-testing` / `-T`.
60103
61104
62-
## Q4: "Where are the examples?"
105+
## Q6: "Where are the examples?"
63106
64107
Examples live under **examples/** (`c/` and `cpp/`), each with a short
65108
**README.md**. They are built when `BUILD_EXAMPLES` is on (the default); omit

HOW_YOU_CAN_HELP.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# cstring - How You Can Help <!-- omit in toc -->
2+
3+
4+
## Table of Contents <!-- omit in toc -->
5+
6+
There are several ways in which you can help the **cstring** project:
7+
8+
- [Defect reports](#defect-reports)
9+
- [Feature requests](#feature-requests)
10+
- [Submit your own extensions](#submit-your-own-extensions)
11+
- [Sponsor development](#sponsor-development)
12+
- [Write articles, blog-posts about your experiences](#write-articles-blog-posts-about-your-experiences)
13+
14+
15+
## Defect reports
16+
17+
We're keen to hear of any problems you have in building and, especially, in
18+
using the library.
19+
20+
Please submit an issue at:
21+
22+
https://github.com/synesissoftware/cstring/issues
23+
24+
Please help us to help you by submitting as much information about the
25+
problem as you think is relevant, including:
26+
27+
* the compiler you're using;
28+
* the architecture and operating system you're targeting;
29+
* the version of **cstring**;
30+
* the version of **STLSoft** / **xTests** (when building tests);
31+
* whether you're building using **CMake** or via an IDE;
32+
* a section of the build output, including the warnings/errors involved;
33+
34+
35+
## Feature requests
36+
37+
If there are features that you think would enhance the library, please feel
38+
free to share your ideas.
39+
40+
You can either submit an issue:
41+
42+
https://github.com/synesissoftware/cstring/issues
43+
44+
Or provide your suggested work via a pull-request:
45+
46+
https://github.com/synesissoftware/cstring/pulls
47+
48+
49+
## Submit your own extensions
50+
51+
If you have developed extensions or improvements and wish to contribute them
52+
back to the project so others can benefit from your work, please open an
53+
issue or pull request at:
54+
55+
https://github.com/synesissoftware/cstring
56+
57+
58+
## Sponsor development
59+
60+
If you value the diligence and effort that's gone into bringing you this
61+
production-quality software, please get in contact via
62+
https://www.synesis.com.au/contact.html
63+
64+
65+
## Write articles, blog-posts about your experiences
66+
67+
If you've written articles or blogged about **cstring**, let us know.
68+
69+
70+
<!-- ########################### end of file ########################### -->

KNOWN_ISSUES.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
# cstring - Known Issues <!-- omit in toc -->
22

33

4-
## cstring 4 Known Issues
4+
## cstring 4.0.x Known Issues
5+
6+
* \<none>
7+
8+
9+
## cstring 4.0.x Suspected Issues
510

611
* \<none>
712

0 commit comments

Comments
 (0)