]> Kevux Git Server - fll/commitdiff
Feature: support f_string_constant_t as a way to pass "const char *" as a parameter.
authorKevin Day <thekevinday@gmail.com>
Thu, 18 Mar 2021 22:13:38 +0000 (17:13 -0500)
committerKevin Day <thekevinday@gmail.com>
Thu, 18 Mar 2021 22:13:38 +0000 (17:13 -0500)
The parameter will have the return value and needs to be a pointer.
Passing "const char **", the "const" is applied to "char **", which is not what is wanted.
The desired logic is "(const char *) *", but that is not valid syntax.
To achieve this, "const char *" is turned into the typedef "f_string_constant_t".
This allows for "(const char *) *" to be used in the form of "f_string_constant_t *".

This is a special, exceptional, case and there are no plans to support an "array of" or any of the completeness practices.

level_0/f_string/c/string-common.h

index f05f1645033044fda6cbd1e333e9cb7953f10f72..87a9521730948c03c65a2f4035bf81105d47cbbd 100644 (file)
@@ -44,6 +44,27 @@ extern "C" {
 #endif // _di_f_string_t_
 
 /**
+ * Define the constant string type.
+ *
+ * This is needed when passing a constant string as a function argument.
+ * This cannot be allocated or deallocated.
+ * This is provided for compatibility with some projects that return "const char *".
+ *
+ * GCC errors such as: "warning: assignment discards â€˜const’ qualifier from pointer target type [-Wdiscarded-qualifiers]" can be avoided using this.
+ *
+ * Do not confuse this with "const f_string_t".
+ * When "const f_string_t * xxx" is passed to a function, then "xxx" cannot be changed.
+ * When "f_string_constant_t * xxx" is passed to a function, then "xxx" can be changed.
+ */
+#ifndef _di_f_string_constant_t_
+  typedef const char *f_string_constant_t;
+
+  #define f_string_constant_t_initialize 0
+
+  #define f_macro_string_constant_t_clear(string) string = 0;
+#endif // _di_f_string_t_
+
+/**
  * Define the end of line character.
  * FLL forbids '\r' and '\r\n' as end of line characters, \r will be silently ignored.
  */