From 84108be5f9571accce19e3b948a951db485b8750 Mon Sep 17 00:00:00 2001
From: Martin Nilsson <mani@lysator.liu.se>
Date: Sun, 4 Mar 2007 18:38:39 +0100
Subject: [PATCH] Store string width in XML.

Rev: lib/modules/Tools.pmod/AutoDoc.pmod/PikeObjects.pmod:1.32
Rev: lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike:1.43
Rev: refdoc/xml.txt:1.3
---
 lib/modules/Tools.pmod/AutoDoc.pmod/PikeObjects.pmod | 12 ++++++++++++
 lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike  |  2 +-
 refdoc/xml.txt                                       |  8 +++++++-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeObjects.pmod b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeObjects.pmod
index ca36c3507f..3edebf1ca7 100644
--- a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeObjects.pmod
+++ b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeObjects.pmod
@@ -77,7 +77,19 @@ class IntType {
 
 class StringType {
   inherit Type;
+  string width;
   void create() { ::create("string"); }
+  string print() {
+    if (width)
+      return "string("+width+")";
+    else
+      return "string";
+  }
+  string xml() {
+    if (width)
+      return xmltag("string", xmltag("width",width));
+    return xmltag("string");
+  }
 }
 
 class MixedType {
diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
index bb41b2b908..6ffca2c5c3 100644
--- a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
+++ b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
@@ -322,7 +322,7 @@ StringType parseString() {
   StringType s = StringType();
   if (peekToken() == "(") {
     readToken();
-    eatLiteral();
+    s->width = eatLiteral();
     eat(")");
   }
   return s;
diff --git a/refdoc/xml.txt b/refdoc/xml.txt
index 38d084781c..38e3c31789 100644
--- a/refdoc/xml.txt
+++ b/refdoc/xml.txt
@@ -288,7 +288,6 @@ the form <foo/>:
   <float/>
   <mixed/>
   <program/>
-  <string/>
   <void/>
 
 The same goes for mapping, array, function, object, multiset, &c that have 
@@ -324,6 +323,13 @@ int
    
      <int><min>0</min><max>MAX</max></int>
 
+string
+   A string type can have a numerical width value.
+
+     string(8)
+
+     <string><width>8</width></string>
+
 mapping
    The types of the indices and values are given:
 
-- 
GitLab