From 810e16de6894532c2b71eec1b509fb99cebeaf6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Sat, 12 Oct 1996 19:20:28 +0200
Subject: [PATCH] new documenation for struct pike_string

Rev: doc/internal/strings/add_shared_strings:1.1
Rev: doc/internal/strings/begin_shared_string:1.1
Rev: doc/internal/strings/binary_findstring:1.1
Rev: doc/internal/strings/end_shared_string:1.1
Rev: doc/internal/strings/findstring:1.1
Rev: doc/internal/strings/free_string:1.1
Rev: doc/internal/strings/make_shared_binary_string:1.1
Rev: doc/internal/strings/make_shared_string:1.1
Rev: doc/internal/strings/my_strcmp:1.1
Rev: doc/internal/strings/pike_string:1.1
Rev: doc/internal/strings/push_string:1.1
Rev: doc/internal/strings/string_replace:1.1
---
 doc/internal/strings/add_shared_strings       | 19 +++++++++++
 doc/internal/strings/begin_shared_string      | 18 +++++++++++
 doc/internal/strings/binary_findstring        | 18 +++++++++++
 doc/internal/strings/end_shared_string        | 32 +++++++++++++++++++
 doc/internal/strings/findstring               | 18 +++++++++++
 doc/internal/strings/free_string              | 18 +++++++++++
 .../strings/make_shared_binary_string         | 19 +++++++++++
 doc/internal/strings/make_shared_string       | 17 ++++++++++
 doc/internal/strings/my_strcmp                | 19 +++++++++++
 doc/internal/strings/pike_string              | 18 +++++++++++
 doc/internal/strings/push_string              | 20 ++++++++++++
 doc/internal/strings/string_replace           | 17 ++++++++++
 12 files changed, 233 insertions(+)
 create mode 100644 doc/internal/strings/add_shared_strings
 create mode 100644 doc/internal/strings/begin_shared_string
 create mode 100644 doc/internal/strings/binary_findstring
 create mode 100644 doc/internal/strings/end_shared_string
 create mode 100644 doc/internal/strings/findstring
 create mode 100644 doc/internal/strings/free_string
 create mode 100644 doc/internal/strings/make_shared_binary_string
 create mode 100644 doc/internal/strings/make_shared_string
 create mode 100644 doc/internal/strings/my_strcmp
 create mode 100644 doc/internal/strings/pike_string
 create mode 100644 doc/internal/strings/push_string
 create mode 100644 doc/internal/strings/string_replace

diff --git a/doc/internal/strings/add_shared_strings b/doc/internal/strings/add_shared_strings
new file mode 100644
index 0000000000..7a08a2c3a3
--- /dev/null
+++ b/doc/internal/strings/add_shared_strings
@@ -0,0 +1,19 @@
+NAME
+	add_shared_strings - add two pike strings
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *add_shared_strings(struct pike_string *a,
+	                                       struct pike_string *b);
+
+DESCRIPTION
+	This function builds the string a+b, that is the string a with the
+	string b appended to it. Note that the string returned will have
+	an extra reference.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	begin_shared_string, make_shared_string
\ No newline at end of file
diff --git a/doc/internal/strings/begin_shared_string b/doc/internal/strings/begin_shared_string
new file mode 100644
index 0000000000..52148da8d9
--- /dev/null
+++ b/doc/internal/strings/begin_shared_string
@@ -0,0 +1,18 @@
+NAME
+	begin_shared_string - allocate space for a shared string
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *begin_shared_string(INT32 len);
+
+DESCRIPTION
+	This function allocates space for a shared string of length 'len'.
+	You should then MEMCPY 'len' bytes into the s->str. (s being the
+	returned value) And then call end_shared_string.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	end_shared_string, make_shared_string
diff --git a/doc/internal/strings/binary_findstring b/doc/internal/strings/binary_findstring
new file mode 100644
index 0000000000..0f34b20925
--- /dev/null
+++ b/doc/internal/strings/binary_findstring
@@ -0,0 +1,18 @@
+NAME
+	binary_findstring - find a string
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *binary_findstring(char *str, INT32 length);
+
+DESCRIPTION
+	This function looks for the 'str' with length 'len' in the
+	global hash table. It returns the shared string if found, otherwise
+	zero. It does not increase/decrease the references to the string.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	findstring
diff --git a/doc/internal/strings/end_shared_string b/doc/internal/strings/end_shared_string
new file mode 100644
index 0000000000..100ac2cc2c
--- /dev/null
+++ b/doc/internal/strings/end_shared_string
@@ -0,0 +1,32 @@
+NAME
+	end_shared_string - link a shared string into the hashtable
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *end_shared_string(struct pike_string *p);
+
+DESCRIPTION
+	This function the prepared output from a begin_shared_string and
+	links the string into the hash table. If an identical string is
+	already present in the hash table, p is freed and that string is
+	returned instead. The returned string will have one extra reference
+	added.
+
+EXAMPLE
+	#include "global.h"
+	#include "stralloc.h"
+
+	struct pike_string *mkcharstring(int ch)
+	{
+	  struct pike_string *ret;
+	  ret=begin_shared_string(1);
+	  ret->str[0]=ch;
+	  return end_shared_string(ret);
+	}
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	begin_shared_string
diff --git a/doc/internal/strings/findstring b/doc/internal/strings/findstring
new file mode 100644
index 0000000000..dbd299a6d7
--- /dev/null
+++ b/doc/internal/strings/findstring
@@ -0,0 +1,18 @@
+NAME
+	findstring - find a string
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *findstring(char *str);
+
+DESCRIPTION
+	This function looks for the null terminated C string 'str' in the
+	global hash table. It returns the shared string if found, otherwise
+	zero. It does not increase/decrease the references to the string.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	make_shared_string, binary_findstring
diff --git a/doc/internal/strings/free_string b/doc/internal/strings/free_string
new file mode 100644
index 0000000000..918c8811f2
--- /dev/null
+++ b/doc/internal/strings/free_string
@@ -0,0 +1,18 @@
+NAME
+	free_string - free a pike string
+
+SYNTAX
+	#include "stralloc.h"
+
+	void free_string(struct pike_string *p)
+
+DESCRIPITON
+	This function frees the string 'p'. What it actually does is that it
+	decreases the reference count of 'p' and frees the memory reserved
+	for it if the refereneces reach zero.
+
+NOTA BENE
+	free_string is actually a macro
+
+KEYWORDS
+	pike_string
diff --git a/doc/internal/strings/make_shared_binary_string b/doc/internal/strings/make_shared_binary_string
new file mode 100644
index 0000000000..a455237f9a
--- /dev/null
+++ b/doc/internal/strings/make_shared_binary_string
@@ -0,0 +1,19 @@
+NAME
+	make_shared_binary_string - make a shared string
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *make_shared_binary_string(const char *str, int len);
+
+DESCRIPTION
+	This function makes a shared string from the memory area beginning
+	at 'str' and ends at str+len. The returned string will have one
+	extra reference.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	make_shared_string, begin_shared_string, push_string,
+	free_string
diff --git a/doc/internal/strings/make_shared_string b/doc/internal/strings/make_shared_string
new file mode 100644
index 0000000000..121459344b
--- /dev/null
+++ b/doc/internal/strings/make_shared_string
@@ -0,0 +1,17 @@
+NAME
+	make_shared_binary_string - make a shared string
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *make_shared_string(const char *str);
+
+DESCRIPTION
+	This function does the same thing as make_shared_binary_string, but
+	expects a zero terminated string instead.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	make_shared_binary_string
diff --git a/doc/internal/strings/my_strcmp b/doc/internal/strings/my_strcmp
new file mode 100644
index 0000000000..d38b724f66
--- /dev/null
+++ b/doc/internal/strings/my_strcmp
@@ -0,0 +1,19 @@
+NAME
+	my_strcmp - my own strcmp function
+
+SYNTAX
+	#include "stralloc.h"
+
+	int my_strcmp(struct pike_string *a, struct pike_string *b)
+
+DESCRIPTION
+	This function compares two pike strings and takes locales into
+	account if the system supports locales. It returns zero if the
+	strings are the same, a number greater than zero zero if 'a'
+	is greater than 'b', and a number below zero otherwise.
+
+KEYWORDS
+	pike_string
+
+SEE ALSO
+	make_shared_string
\ No newline at end of file
diff --git a/doc/internal/strings/pike_string b/doc/internal/strings/pike_string
new file mode 100644
index 0000000000..1d095ef570
--- /dev/null
+++ b/doc/internal/strings/pike_string
@@ -0,0 +1,18 @@
+NAME
+	pike_string - internal pike shared strings
+
+DESCRIPTION
+	This is the internal type for representing pike strings. They have
+	ref counts and they are shared though a global hash table. The C
+	type is a struct pike_string that has two public members: str and
+	len. str is an array of char which contain the actual string. It
+	is guaranteed that the string is null terminated, but the string
+	can also contain zeroes before the end. len is of course the
+	length of the string. Since strings are shared you may _never_
+	modify the contents of a string, except for adding/subtracting
+	references when approperiate. The only exception to this is when
+	creating a new shared string with begin_shared_string which has
+	not yet been linked to the hash table with end_shared_string.
+
+KEYWORD
+	internals
diff --git a/doc/internal/strings/push_string b/doc/internal/strings/push_string
new file mode 100644
index 0000000000..0b0773c04d
--- /dev/null
+++ b/doc/internal/strings/push_string
@@ -0,0 +1,20 @@
+NAME
+	push_string - push a string on the pike stack
+
+SYNTAX
+	#include "interpret.h"
+
+	void push_string(struct pike_string *p)
+
+DESCRIPTION
+	This function pushes the string p on the pike stack. Note that this
+	function does _not_ add any extra references to 'p'. Most functions
+	that create shared strings give one extra reference to them though.
+	If you get your string from a function that does not add extra	
+	references you will have to add a reference manually.
+
+NOTA BENE
+	push_string is actually a macro
+
+KEYWORDS
+	pike_string
diff --git a/doc/internal/strings/string_replace b/doc/internal/strings/string_replace
new file mode 100644
index 0000000000..6532498aa2
--- /dev/null
+++ b/doc/internal/strings/string_replace
@@ -0,0 +1,17 @@
+NAME
+	string_replace - do string replacements
+
+SYNTAX
+	#include "stralloc.h"
+
+	struct pike_string *string_replace(struct pike_string *str,
+	                                   struct pike_string *from,
+	                                   struct pike_string *to);
+
+DESCRIPTION
+	This function builds a new string from 'str' with all occurances
+	of 'from' replaced by 'to'. Note that the new string will have one
+	extra reference.
+
+KEYWORDS
+	pike_string
-- 
GitLab