[Python-modules-commits] [sip4] 01/03: New upstream version 4.19.3+dfsg

Dmitry Shachnev mitya57 at moszumanska.debian.org
Thu Jul 6 08:30:24 UTC 2017


This is an automated email from the git hooks/post-receive script.

mitya57 pushed a commit to branch debian/master
in repository sip4.

commit d45c7ffcc2a717a34f3403a49ddd0db6d35b0909
Author: Dmitry Shachnev <mitya57 at gmail.com>
Date:   Thu Jul 6 11:26:14 2017 +0300

    New upstream version 4.19.3+dfsg
---
 ChangeLog                      |  161 ++
 NEWS                           |    7 +
 configure.py                   |    4 +-
 sipgen/export.c                |   64 +-
 sipgen/gencode.c               |  157 +-
 sipgen/lexer.c                 | 2380 ++++++++++++-------------
 sipgen/main.c                  |   18 +-
 sipgen/metasrc/lexer.l         |   31 +-
 sipgen/metasrc/parser.y        |  221 ++-
 sipgen/parser.c                | 3809 +++++++++++++++++++++-------------------
 sipgen/parser.h                |    4 +-
 sipgen/sip.h                   |   26 +-
 sipgen/transform.c             |   34 +-
 sipgen/type_hints.c            |   73 +-
 siplib/objmap.c                |    4 +-
 siplib/sip.h.in                |   44 +-
 siplib/sipint.h                |    4 +-
 siplib/siplib.c.in             |  154 +-
 sphinx/c_api.rst               |   64 +-
 sphinx/conf.py                 |    8 +-
 sphinx/introduction.rst        |    2 +-
 sphinx/specification_files.rst |    3 -
 22 files changed, 4053 insertions(+), 3219 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3f18cd6..0d67042 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,166 @@
+2017-07-03  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* NEWS:
+	Released as v4.19.3.
+	[14685a6e736e] [4.19.3] <4.19-maint>
+
+2017-07-02  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/export.c, sipgen/type_hints.c:
+	Fixes for hidden namespaces in generated XML.
+	[489321fd2475] <4.19-maint>
+
+2017-06-28  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sphinx/specification_files.rst:
+	Fixed an out of date statement in the docs.
+	[21539b0e74c6] <4.19-maint>
+
+2017-06-22  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/metasrc/parser.y, sipgen/sip.h.in:
+	Don't report template arguments of uninstantiated templates as
+	undefined classes.
+	[a69025738247] <4.19-maint>
+
+2017-06-21  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/metasrc/parser.y:
+	Allow empty class bodies.
+	[265b531cb6e4] <4.19-maint>
+
+	* sipgen/gencode.c:
+	Fixed a bug handling double quotes as the default value of a char
+	argument.
+	[d86c23976619] <4.19-maint>
+
+2017-06-16  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/main.c, sipgen/metasrc/parser.y, sipgen/sip.h.in,
+	sipgen/transform.c:
+	Completed the implementation of non-strict parsing.
+	[8b5e498d13dd] <4.19-maint>
+
+	* sipgen/metasrc/parser.y, sipgen/sip.h.in:
+	The relevant data structures now retain the platform information.
+	[15b6c00166a7] <4.19-maint>
+
+	* sipgen/gencode.c, sipgen/main.c, sipgen/metasrc/parser.y,
+	sipgen/sip.h.in:
+	Added the stub of non-strict parsing that saves (but otherwise
+	ignores) the platform information.
+	[b05b36a086c2] <4.19-maint>
+
+	* sipgen/gencode.c, sipgen/metasrc/lexer.l:
+	Improve the handling of string constants to properly support escape
+	characters.
+	[495a7635a52d] <4.19-maint>
+
+	* sipgen/metasrc/parser.y:
+	Make sure any expanded template ctor call is a deep copy.
+	[141c98e741b6] <4.19-maint>
+
+2017-06-15  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/metasrc/parser.y:
+	Expand template ctor calls when they are the default values of an
+	argument.
+	[5df8870c61a7] <4.19-maint>
+
+2017-06-10  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/gencode.c:
+	Fixed a regression in the invocation of the dtor of shadow classes.
+	[e833dc3f9a2f] <4.19-maint>
+
+2017-06-06  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* .hgignore:
+	Updated .hgignore for the changed build directory.
+	[b2fb251d3500] <4.19-maint>
+
+2017-05-27  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* siplib/siplib.c.in, sphinx/c_api.rst:
+	Documented the event handler mechanism.
+	[aee09bdf1206] <4.19-maint>
+
+	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
+	Implemented sipEventType and sipRegisterEventHandler().
+	[2a4bcf305afa] <4.19-maint>
+
+2017-05-26  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/gencode.c, siplib/objmap.c, siplib/sip.h.in.in,
+	siplib/sipint.h, siplib/siplib.c.in, sphinx/c_api.rst:
+	Renamed sipCommonDtor() to sipInstanceDestroyed() and added it to
+	the public API.
+	[e7d4e6661fa0] <4.19-maint>
+
+	* sipgen/metasrc/parser.y:
+	The parser will now accept class template definitions within a
+	class. The generated code is untested.
+	[ec57a6e03eb3] <4.19-maint>
+
+2017-05-23  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/type_hints.c:
+	Added support for type hints for properties from Scott Maxwell.
+	[c861fe0ef6ca] <4.19-maint>
+
+2017-05-15  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/gencode.c:
+	Fixes for 'char *&' argument types.
+	[684e23c995a3] <4.19-maint>
+
+2017-05-05  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* siplib/siplib.c.in:
+	Removed a duplicate call.
+	[afe3d3efc82d] <4.19-maint>
+
+	* sipgen/gencode.c:
+	Don't try and initialise the result of a virtual when the type is a
+	template.
+	[cce4fe835faf] <4.19-maint>
+
+2017-04-27  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/gencode.c, siplib/sip.h.in.in, siplib/siplib.c.in:
+	Added sipPrintObject() to the public C API.
+	[10e10b1a2d68] <4.19-maint>
+
+2017-04-24  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/gencode.c, siplib/siplib.c.in:
+	Fixed regressions in the handling of exceptions.
+	[974a4d77314b] <4.19-maint>
+
+	* sipgen/transform.c, sphinx/conf.py.in:
+	Minor cosmetic fixes.
+	[4ea35fd2187d] <4.19-maint>
+
+2017-04-05  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* siplib/siplib.c.in:
+	Effectively re-applied changeset dc06058c99dd. If there is a real
+	problem here then we don't yet fully understand it.
+	[95a493a417e8] <4.19-maint>
+
+2017-04-02  Phil Thompson  <phil at riverbankcomputing.com>
+
+	* sipgen/transform.c:
+	Fix a regression so that a shadow class is not generated if there is
+	a private dtor.
+	[6b09a6d578e8] <4.19-maint>
+
 2017-03-30  Phil Thompson  <phil at riverbankcomputing.com>
 
+	* .hgtags:
+	Added tag 4.19.2 for changeset 1df924860f57
+	[6209a625ac87] <4.19-maint>
+
 	* NEWS:
 	Released as v4.19.2.
 	[1df924860f57] [4.19.2] <4.19-maint>
diff --git a/NEWS b/NEWS
index 1df01bc..07b9077 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+v4.19.3 3rd July 2017
+  - Added support for type hints for properties.
+  - Added sipEventType and sipRegisterEventHandler() to the C API.
+  - Added sipInstanceDestroyed() to the C API.
+  - Added sipPrintObject() to the C API.
+  - Bug fixes.
+
 v4.19.2 30th March 2017
   - Bug fixes.
 
diff --git a/configure.py b/configure.py
index fe5ca92..b4d8bd7 100644
--- a/configure.py
+++ b/configure.py
@@ -30,8 +30,8 @@ import siputils
 
 
 # Initialise the globals.
-sip_version = 0x041302
-sip_version_str = "4.19.2"
+sip_version = 0x041303
+sip_version_str = "4.19.3"
 py_version = sys.hexversion >> 8
 py_platform = sys.platform
 plat_py_site_dir = None
diff --git a/sipgen/export.c b/sipgen/export.c
index e402a48..5c93fc1 100644
--- a/sipgen/export.c
+++ b/sipgen/export.c
@@ -354,45 +354,45 @@ static void xmlClass(sipSpec *pt, moduleDef *mod, classDef *cd, FILE *fp)
         return;
     }
 
-    xmlIndent(indent++, fp);
-    fprintf(fp, "<Class name=\"");
-    prScopedPythonName(fp, cd->ecd, cd->pyname->text);
-    fprintf(fp, "\"");
+    if (!isHiddenNamespace(cd))
+    {
+        xmlIndent(indent++, fp);
+        fprintf(fp, "<Class name=\"");
+        prScopedPythonName(fp, cd->ecd, cd->pyname->text);
+        fprintf(fp, "\"");
 
-    if (cd->picklecode != NULL)
-        fprintf(fp, " pickle=\"1\"");
+        if (cd->picklecode != NULL)
+            fprintf(fp, " pickle=\"1\"");
 
-    if (cd->convtocode != NULL)
-        fprintf(fp, " convert=\"1\"");
+        if (cd->convtocode != NULL)
+            fprintf(fp, " convert=\"1\"");
 
-    if (cd->convfromcode != NULL)
-        fprintf(fp, " convertfrom=\"1\"");
+        if (cd->convfromcode != NULL)
+            fprintf(fp, " convertfrom=\"1\"");
 
-    if (cd->real != NULL)
-        fprintf(fp, " extends=\"%s\"", cd->real->iff->module->name);
+        if (cd->real != NULL)
+            fprintf(fp, " extends=\"%s\"", cd->real->iff->module->name);
 
-    if (cd->supers != NULL)
-    {
-        classList *cl;
+        if (cd->supers != NULL)
+        {
+            classList *cl;
 
-        fprintf(fp, " inherits=\"");
+            fprintf(fp, " inherits=\"");
 
-        for (cl = cd->supers; cl != NULL; cl = cl->next)
-        {
-            if (cl != cd->supers)
-                fprintf(fp, " ");
+            for (cl = cd->supers; cl != NULL; cl = cl->next)
+            {
+                if (cl != cd->supers)
+                    fprintf(fp, " ");
 
-            prScopedPythonName(fp, cl->cd->ecd, cl->cd->pyname->text);
+                prScopedPythonName(fp, cl->cd->ecd, cl->cd->pyname->text);
+            }
+
+            fprintf(fp, "\"");
         }
 
-        fprintf(fp, "\"");
+        fprintf(fp, ">\n");
     }
 
-    fprintf(fp, ">\n");
-
-    xmlEnums(pt, mod, cd, indent, fp);
-    xmlVars(pt, mod, cd, indent, fp);
-
     for (ct = cd->ctors; ct != NULL; ct = ct->next)
     {
         if (isPrivateCtor(ct))
@@ -402,11 +402,17 @@ static void xmlClass(sipSpec *pt, moduleDef *mod, classDef *cd, FILE *fp)
             xmlCtor(pt, cd, ct, TRUE, indent, fp);
     }
 
+    xmlEnums(pt, mod, cd, indent, fp);
+    xmlVars(pt, mod, cd, indent, fp);
+
     for (md = cd->members; md != NULL; md = md->next)
         xmlFunction(pt, cd, md, cd->overs, indent, fp);
 
-    xmlIndent(--indent, fp);
-    fprintf(fp, "</Class>\n");
+    if (!isHiddenNamespace(cd))
+    {
+        xmlIndent(--indent, fp);
+        fprintf(fp, "</Class>\n");
+    }
 }
 
 
diff --git a/sipgen/gencode.c b/sipgen/gencode.c
index 0260aaf..7ac6102 100644
--- a/sipgen/gencode.c
+++ b/sipgen/gencode.c
@@ -148,7 +148,7 @@ static void generateHandleResult(moduleDef *, overDef *, int, int, char *,
         FILE *);
 static void generateOrdinaryFunction(sipSpec *pt, moduleDef *mod,
         classDef *c_scope, mappedTypeDef *mt_scope, memberDef *md, FILE *fp);
-static void generateSimpleFunctionCall(fcallDef *, FILE *);
+static void generateSimpleFunctionCall(fcallDef *, int, FILE *);
 static int generateResultVar(ifaceFileDef *scope, overDef *od, argDef *res,
         const char *indent, FILE *fp);
 static void generateFunctionCall(classDef *c_scope, mappedTypeDef *mt_scope,
@@ -293,12 +293,13 @@ static void generateGlobalFunctionTableEntries(sipSpec *pt, moduleDef *mod,
         memberDef *members, FILE *fp);
 static void prTemplateType(FILE *fp, ifaceFileDef *scope, templateDef *td,
         int remove_global_scope);
+static int isString(argDef *ad);
 
 
 /*
  * Generate the code from a specification.
  */
-void generateCode(sipSpec *pt, char *codeDir, char *buildfile, char *docFile,
+void generateCode(sipSpec *pt, char *codeDir, char *buildFile, char *docFile,
         const char *srcSuffix, int except, int trace, int releaseGIL,
         int parts, stringList *needed_qualifiers, stringList *xsl,
         const char *consModule, int docs, int py_debug)
@@ -340,8 +341,8 @@ void generateCode(sipSpec *pt, char *codeDir, char *buildfile, char *docFile,
     }
 
     /* Generate the build file. */
-    if (buildfile != NULL)
-        generateBuildFile(pt, buildfile, srcSuffix, consModule);
+    if (buildFile != NULL)
+        generateBuildFile(pt, buildFile, srcSuffix, consModule);
 }
 
 
@@ -468,14 +469,52 @@ void generateExpression(valueDef *vd, int in_str, FILE *fp)
         switch (vd->vtype)
         {
         case qchar_value:
-            prcode(fp,"'%c'",vd->u.vqchar);
+            if (vd->u.vqchar == '"' && in_str)
+                prcode(fp, "'\\\"'");
+            else
+                prcode(fp, "'%c'", vd->u.vqchar);
+
             break;
 
         case string_value:
             {
-                const char *quote = (in_str ? "\\\"" : "\"");
+                const char *cp, *quote = (in_str ? "\\\"" : "\"");
+
+                prcode(fp, "%s", quote);
+
+                for (cp = vd->u.vstr; *cp != '\0'; ++cp)
+                {
+                    char ch = *cp;
+                    int escape;
+
+                    if (strchr("\\\"", ch) != NULL)
+                    {
+                        escape = TRUE;
+                    }
+                    else if (ch == '\n')
+                    {
+                        escape = TRUE;
+                        ch = 'n';
+                    }
+                    else if (ch == '\r')
+                    {
+                        escape = TRUE;
+                        ch = 'r';
+                    }
+                    else if (ch == '\t')
+                    {
+                        escape = TRUE;
+                        ch = 't';
+                    }
+                    else
+                    {
+                        escape = FALSE;
+                    }
+
+                    prcode(fp, "%s%c", (escape ? "\\" : ""), ch);
+                }
 
-                prcode(fp,"%s%s%s", quote, vd->u.vstr, quote);
+                prcode(fp, "%s", quote);
             }
 
             break;
@@ -497,7 +536,7 @@ void generateExpression(valueDef *vd, int in_str, FILE *fp)
             break;
 
         case fcall_value:
-            generateSimpleFunctionCall(vd->u.fcd,fp);
+            generateSimpleFunctionCall(vd->u.fcd, in_str, fp);
             break;
         }
  
@@ -647,7 +686,7 @@ static void generateInternalAPIHeader(sipSpec *pt, moduleDef *mod,
 "#define sipParseArgs                sipAPI_%s->api_parse_args\n"
 "#define sipParseKwdArgs             sipAPI_%s->api_parse_kwd_args\n"
 "#define sipParsePair                sipAPI_%s->api_parse_pair\n"
-"#define sipCommonDtor               sipAPI_%s->api_common_dtor\n"
+"#define sipInstanceDestroyed        sipAPI_%s->api_instance_destroyed\n"
 "#define sipConvertFromSequenceIndex sipAPI_%s->api_convert_from_sequence_index\n"
 "#define sipConvertFromVoidPtr       sipAPI_%s->api_convert_from_void_ptr\n"
 "#define sipConvertToVoidPtr         sipAPI_%s->api_convert_to_void_ptr\n"
@@ -762,6 +801,7 @@ static void generateInternalAPIHeader(sipSpec *pt, moduleDef *mod,
 "#define sipIsDerivedClass           sipAPI_%s->api_is_derived_class\n"
 "#define sipGetUserObject            sipAPI_%s->api_get_user_object\n"
 "#define sipSetUserObject            sipAPI_%s->api_set_user_object\n"
+"#define sipRegisterEventHandler     sipAPI_%s->api_register_event_handler\n"
 "\n"
 "/* These are deprecated. */\n"
 "#define sipMapStringToClass         sipAPI_%s->api_map_string_to_class\n"
@@ -771,6 +811,7 @@ static void generateInternalAPIHeader(sipSpec *pt, moduleDef *mod,
 "#define sipConvertToArray           sipAPI_%s->api_convert_to_array\n"
 "#define sipConvertToTypedArray      sipAPI_%s->api_convert_to_typed_array\n"
 "#define sipEnableGC                 sipAPI_%s->api_enable_gc\n"
+"#define sipPrintObject              sipAPI_%s->api_print_object\n"
 "#define sipWrapper_Check(w)         PyObject_TypeCheck((w), sipAPI_%s->api_wrapper_type)\n"
 "#define sipGetWrapper(p, wt)        sipGetPyObject((p), (wt)->wt_td)\n"
 "#define sipReleaseInstance(p, wt, s)    sipReleaseType((p), (wt)->wt_td, (s))\n"
@@ -917,6 +958,8 @@ static void generateInternalAPIHeader(sipSpec *pt, moduleDef *mod,
         ,mname
         ,mname
         ,mname
+        ,mname
+        ,mname
         ,mname);
 
     /* The name strings. */
@@ -2008,8 +2051,8 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
                         if (xd->iff->module == mld->module && xd->exceptionnr == i)
                         {
                             prcode(fp,
-"    {\"%s.%s\"},\n"
-                                , mld->module->name, xd->pyname);
+"    {\"%s\"},\n"
+                                , xd->pyname);
                         }
                     }
                 }
@@ -2155,7 +2198,7 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
 "\n"
 "\n"
 "PyObject *sipExportedExceptions_%s[%d];\n"
-            , mname, mod->nrexceptions);
+            , mname, mod->nrexceptions + 1);
 
     /* Generate any API versions table. */
     if (mod->api_ranges != NULL || mod->api_versions != NULL)
@@ -2551,6 +2594,14 @@ static void generateCpp(sipSpec *pt, moduleDef *mod, const char *codeDir,
             , xd->pyname, xd->iff->module->name, xd->exceptionnr);
     }
 
+    if (mod->nrexceptions > 0)
+        prcode(fp,
+"\n"
+"    sipExportedExceptions_%s[%d] = NULL;\n"
+            , mname, mod->nrexceptions);
+
+    /* Generate the interface source files. */
+
     /* Generate any post-initialisation code. */
     generateCppCodeBlock(mod->postinitcode, fp);
 
@@ -6181,7 +6232,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
         prcode(fp,
 "static void release_%L(void *%s, int%s)\n"
 "{\n"
-            , cd->iff, (need_ptr ? "sipCppV" : ""), (need_state ? " sipIsDerived" : ""));
+            , cd->iff, (need_ptr ? "sipCppV" : ""), (need_state ? " sipState" : ""));
 
         if (need_cast_ptr)
         {
@@ -6236,7 +6287,7 @@ static void generateClassFunctions(sipSpec *pt, moduleDef *mod, classDef *cd,
             else if (hasShadow(cd))
             {
                 prcode(fp,
-"    if (sipIsDerived)\n"
+"    if (sipState & SIP_DERIVED_CLASS)\n"
 "        delete reinterpret_cast<sip%C *>(sipCppV);\n"
                     , classFQCName(cd));
 
@@ -6951,7 +7002,7 @@ static void generateShadowCode(sipSpec *pt, moduleDef *mod, classDef *cd,
             generateCppCodeBlock(cd->dtorcode,fp);
 
         prcode(fp,
-"    sipCommonDtor(sipPySelf);\n"
+"    sipInstanceDestroyed(sipPySelf);\n"
 "}\n"
             );
     }
@@ -7953,7 +8004,7 @@ static void generateVirtualHandler(moduleDef *mod, virtHandlerDef *vhd,
 
         prcode(fp," %ssipRes",(res_isref ? "*" : ""));
 
-        if ((res->atype == class_type || res->atype == mapped_type) && res->nrderefs == 0)
+        if ((res->atype == class_type || res->atype == mapped_type || res->atype == template_type) && res->nrderefs == 0)
         {
             if (res->atype == class_type)
             {
@@ -8687,6 +8738,7 @@ static void generateUsedIncludes(ifaceFileList *iffl, FILE *fp)
  */
 static void generateModuleAPI(sipSpec *pt, moduleDef *mod, FILE *fp)
 {
+    int no_exceptions = TRUE;
     classDef *cd;
     mappedTypeDef *mtd;
     exceptionDef *xd;
@@ -8702,10 +8754,21 @@ static void generateModuleAPI(sipSpec *pt, moduleDef *mod, FILE *fp)
 
     for (xd = pt->exceptions; xd != NULL; xd = xd->next)
         if (xd->iff->module == mod && xd->exceptionnr >= 0)
-            prcode(fp,
+        {
+            if (no_exceptions)
+            {
+                prcode(fp,
+"\n"
+"/* The exceptions defined in this module. */\n"
+"extern PyObject *sipExportedExceptions_%s[];\n"
 "\n"
+                    , mod->name);
+            }
+
+            prcode(fp,
 "#define sipException_%C sipExportedExceptions_%s[%d]\n"
                 , xd->iff->fqcname, mod->name, xd->exceptionnr);
+        }
 
     generateEnumMacros(pt, mod, NULL, NULL, fp);
 
@@ -9197,7 +9260,7 @@ static void generateCallArgs(moduleDef *mod, signatureDef *sd,
         case ustring_type:
         case string_type:
         case wstring_type:
-            if (ad->nrderefs > (isOutArg(ad) ? 0 : 1))
+            if (ad->nrderefs > (isOutArg(ad) ? 0 : 1) && !isReference(ad))
                 ind = "&";
 
             break;
@@ -9703,7 +9766,7 @@ static void generateDefaultValue(moduleDef *mod, argDef *ad, int argnr,
 /*
  * Generate a simple function call.
  */
-static void generateSimpleFunctionCall(fcallDef *fcd,FILE *fp)
+static void generateSimpleFunctionCall(fcallDef *fcd, int in_str, FILE *fp)
 {
     int i;
 
@@ -9714,7 +9777,7 @@ static void generateSimpleFunctionCall(fcallDef *fcd,FILE *fp)
         if (i > 0)
             prcode(fp,",");
 
-        generateExpression(fcd->args[i], FALSE, fp);
+        generateExpression(fcd->args[i], in_str, fp);
     }
 
     prcode(fp,")");
@@ -12175,6 +12238,20 @@ static const char *resultOwner(overDef *od)
 
 
 /*
+ * Check if an argument is a string rather than a char type.
+ */
+static int isString(argDef *ad)
+{
+    int nrderefs = ad->nrderefs;
+
+    if (isOutArg(ad) && !isReference(ad))
+        --nrderefs;
+
+    return nrderefs > 0;
+}
+
+
+/*
  * Return the format string used by sipBuildResult() for a particular type.
  */
 static const char *getBuildResultFormat(argDef *ad)
@@ -12196,15 +12273,15 @@ static const char *getBuildResultFormat(argDef *ad)
     case ascii_string_type:
     case latin1_string_type:
     case utf8_string_type:
-        return (ad->nrderefs > (isOutArg(ad) ? 1 : 0)) ? "A" : "a";
+        return isString(ad) ? "A" : "a";
 
     case sstring_type:
     case ustring_type:
     case string_type:
-        return (ad->nrderefs > (isOutArg(ad) ? 1 : 0)) ? "s" : "c";
+        return isString(ad) ? "s" : "c";
 
     case wstring_type:
-        return (ad->nrderefs > (isOutArg(ad) ? 1 : 0)) ? "x" : "w";
+        return isString(ad) ? "x" : "w";
 
     case enum_type:
         return (ad->u.ed->fqcname != NULL) ? "F" : "e";
@@ -13310,48 +13387,48 @@ static int generateArgParser(moduleDef *mod, signatureDef *sd,
         switch (ad->atype)
         {
         case ascii_string_type:
-            if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
-                fmt = "aA";
-            else
+            if (isString(ad))
                 fmt = "AA";
+            else
+                fmt = "aA";
 
             break;
 
         case latin1_string_type:
-            if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
-                fmt = "aL";
-            else
+            if (isString(ad))
                 fmt = "AL";
+            else
+                fmt = "aL";
 
             break;
 
         case utf8_string_type:
-            if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
-                fmt = "a8";
-            else
+            if (isString(ad))
                 fmt = "A8";
+            else
+                fmt = "a8";
 
             break;
 
         case sstring_type:
         case ustring_type:
         case string_type:
-            if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
-                fmt = "c";
-            else if (isArray(ad))
+            if (isArray(ad))
                 fmt = "k";
-            else
+            else if (isString(ad))
                 fmt = "s";
+            else
+                fmt = "c";
 
             break;
 
         case wstring_type:
-            if (ad->nrderefs == 0 || (isOutArg(ad) && ad->nrderefs == 1))
-                fmt = "w";
-            else if (isArray(ad))
+            if (isArray(ad))
                 fmt = "K";
-            else
+            else if (isString(ad))
                 fmt = "x";
+            else
+                fmt = "w";
 
             break;
 
diff --git a/sipgen/lexer.c b/sipgen/lexer.c
index fb9508e..d28d18f 100644
--- a/sipgen/lexer.c
+++ b/sipgen/lexer.c
@@ -1,6 +1,6 @@
-#line 2 "sip-4.19.2/sipgen/lexer.c"
+#line 2 "sip-4.19.3/sipgen/lexer.c"
 
-#line 4 "sip-4.19.2/sipgen/lexer.c"
+#line 4 "sip-4.19.3/sipgen/lexer.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -370,7 +370,7 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[1221] =
+static yyconst flex_int16_t yy_accept[1222] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
       167,  165,  104,  107,  165,  165,  165,  165,  165,  109,
@@ -379,133 +379,134 @@ static yyconst flex_int16_t yy_accept[1221] =
       112,  165,  104,  165,  164,  163,  164,  164,  119,  117,
       119,  106,  112,  112,  112,  112,  112,  112,  112,  112,
       112,  112,  112,  112,  112,  112,  112,  112,  112,  104,
-      165,  105,  104,  165,    0,  114,    0,  115,    0,  109,
-        0,  113,  110,  113,  116,  108,  110,    0,  110,  109,
-        0,   62,  112,  112,  112,  112,  112,  112,  112,  112,
+      165,  105,  104,  165,    0,  114,    0,    0,  115,    0,
+      109,    0,  113,  110,  113,  116,  108,  110,    0,  110,
+      109,    0,   62,  112,  112,  112,  112,  112,  112,  112,
 
       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,   63,    0,    0,    0,    0,    0,
+      112,  112,  112,  112,  112,   63,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  118,  112,
-      112,  112,  112,  112,  112,  112,   84,  112,  112,  112,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  118,
+      112,  112,  112,  112,  112,  112,  112,   84,  112,  112,
       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-        0,    0,    0,    0,    0,    0,  110,   81,  113,  110,
-      108,  110,    0,  110,  111,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,   41,  112,
+      112,    0,    0,    0,    0,    0,    0,  110,   81,  113,
+      110,  108,  110,    0,  110,  111,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,   41,
 
       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,    0,    0,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   15,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  112,  112,  112,  112,  112,  112,   83,  112,
-      112,  112,  112,  112,  112,  112,   92,  112,  112,  112,
-      112,  112,    0,    0,  110,   54,  112,  112,  112,   39,
-       37,  112,  112,  112,   47,  112,  112,  112,  112,   42,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-      112,  112,   52,  112,  112,  112,   45,  112,    1,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  155,   10,
+        0,    0,    0,    0,   15,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  112,  112,  112,  112,  112,  112,   83,
+      112,  112,  112,  112,  112,  112,  112,   92,  112,  112,
+      112,  112,  112,    0,    0,  110,   54,  112,  112,  112,
+       39,   37,  112,  112,  112,   47,  112,  112,  112,  112,
+       42,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,   52,  112,  112,  112,   45,  112,    1,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  155,
+       10,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  162,  112,  102,  112,  112,  112,  112,  112,  112,
-      112,   88,  112,  112,  112,  112,  112,   95,  112,  112,
-       11,  112,  112,  112,  112,  112,  112,  112,   26,   50,
-      112,  112,   53,   61,   43,  112,  112,  112,  112,  112,
-       40,  112,  112,   34,  112,  112,  112,   58,  112,  112,
+        0,    0,  162,  112,  102,  112,  112,  112,  112,  112,
+      112,  112,   88,  112,  112,  112,  112,  112,   95,  112,
+      112,   11,  112,  112,  112,  112,  112,  112,  112,   26,
+       50,  112,  112,   53,   61,   43,  112,  112,  112,  112,
+      112,   40,  112,  112,   34,  112,  112,  112,   58,  112,
 
-      112,  112,    0,    0,    0,    0,    0,    0,    0,    0,
+      112,  112,  112,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  103,  112,  112,  112,
-      112,  112,  112,  112,  112,   90,  112,  112,  112,  112,
-      112,  112,  112,   36,  112,  112,  112,  112,  112,  112,
-      112,   44,  112,  112,  112,  112,  112,   28,  112,   48,
-       51,   27,  112,  112,  112,  112,  112,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  103,  112,  112,
+      112,  112,  112,  112,  112,  112,   90,  112,  112,  112,
+      112,  112,  112,  112,   36,  112,  112,  112,  112,  112,
+      112,  112,   44,  112,  112,  112,  112,  112,   28,  112,
+       48,   51,   27,  112,  112,  112,  112,  112,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  112,  112,  112,   82,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,   35,  112,
+        0,    0,    0,    0,  112,  112,  112,   82,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,   35,
       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   30,  112,   31,  112,   55,
-      112,   46,   38,    0,    0,    0,    0,    0,    0,    0,
+      112,  112,  112,  112,  112,  112,   30,  112,   31,  112,
+       55,  112,   46,   38,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   16,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
 
-        0,    0,    0,    0,    0,   20,    0,    0,    0,   23,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  101,   33,  112,  112,
+        0,    0,    0,    0,    0,    0,   20,    0,    0,    0,
+       23,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  101,   33,  112,
       112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-       73,  112,   59,  112,   57,  112,   60,   49,    0,    0,
-        0,    0,    0,    0,    0,    0,    3,    0,    0,    0,
-      120,    0,    0,    0,    0,  125,   13,    0,    0,    0,
-      159,    0,   17,    0,    0,   18,    0,    0,    0,    0,
+      112,   73,  112,   59,  112,   57,  112,   60,   49,    0,
+        0,    0,    0,    0,    0,    0,    0,    3,    0,    0,
+        0,  120,    0,    0,    0,    0,  125,   13,    0,    0,
+        0,  159,    0,   17,    0,    0,   18,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-      160,    0,    0,    0,    0,    0,    0,    0,  112,  112,
-      112,  112,   86,   87,   89,  112,  112,  112,  112,  112,
-       32,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   56,   29,    0,    0,    0,
+        0,  160,    0,    0,    0,    0,    0,    0,    0,  112,
+      112,  112,  112,   86,   87,   89,  112,  112,  112,  112,
+      112,   32,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,   56,   29,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  157,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   24,    0,   25,  135,    0,    0,
-      132,    0,    0,    0,  112,  112,  112,  112,  112,   93,
-       94,  112,  112,  112,  112,  112,   67,   66,  112,  112,
+        0,    0,    0,  157,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   24,    0,   25,  135,    0,
+        0,  132,    0,    0,    0,  112,  112,  112,  112,  112,
+       93,   94,  112,  112,  112,  112,  112,   67,   66,  112,
 
-      112,   70,  112,  112,   72,  112,  112,  112,    0,    0,
+      112,  112,   70,  112,  112,   72,  112,  112,  112,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  154,   12,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  154,   12,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   22,    0,    0,    0,    0,  151,    0,    0,    0,
-        0,    0,  112,  112,  112,  112,  112,  112,  112,   74,
-      112,  112,  112,   69,   65,   80,  112,  112,  112,  112,
-       79,  158,    2,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   22,    0,    0,    0,    0,  151,    0,    0,
+        0,    0,    0,  112,  112,  112,  112,  112,  112,  112,
+       74,  112,  112,  112,   69,   65,   80,  112,  112,  112,
+      112,   79,  158,    2,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   19,  136,  134,
+        0,    0,    0,    0,    0,    0,    0,    0,   19,  136,
 
-        0,    0,  149,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  112,  112,  112,  112,  112,  112,  112,
-       71,  112,   64,  112,  112,   77,   78,    0,    0,    0,
+      134,    0,    0,  149,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  112,  112,  112,  112,  112,  112,
+      112,   71,  112,   64,  112,  112,   77,   78,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  156,    0,    0,    0,  141,    0,    0,    0,
+        0,    0,    0,  156,    0,    0,    0,  141,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  112,  112,  112,  112,  112,  112,  112,
-      112,   75,   76,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  112,  112,  112,  112,  112,  112,
+      112,  112,   75,   76,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  148,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  148,    0,    0,    0,    0,
 
-        0,    0,  153,    0,    0,    0,    0,  112,  112,  112,
-      112,  112,  112,  112,   68,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   14,    0,    0,    0,    0,    0,
-      137,  150,    0,    0,    0,    0,    0,  112,  112,  112,
-      112,   91,  112,  112,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  153,    0,    0,    0,    0,  112,  112,
+      112,  112,  112,  112,  112,   68,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  140,    0,    0,    0,    0,    0,  127,    0,
-        0,    0,    0,  112,   99,  112,  112,  112,   97,  142,
-        0,    0,    0,    0,    0,    4,    0,    0,    0,    0,
-
-        0,    7,    8,    0,    0,    0,    0,    0,    0,   21,
-        0,    0,    0,  138,    0,    0,  112,  112,  112,  112,
+        0,    0,    0,    0,    0,   14,    0,    0,    0,    0,
+        0,  137,  150,    0,    0,    0,    0,    0,  112,  112,
+      112,  112,   91,  112,  112,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        9,    0,    0,  131,    0,  126,    0,    0,    0,    0,
-        0,  112,  112,   85,  112,    0,    0,  146,    0,    0,
-        0,    0,    0,  122,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  112,  112,   96,    0,    0,    0,    0,
-        5,    0,    0,    0,  124,    0,  129,    0,    0,    0,
-      139,    0,  112,  112,  147,  144,    0,  143,  121,    0,
-        0,    0,    0,    0,  133,  161,  112,  112,  145,    0,
-
-        0,  152,    0,    0,  112,  112,  123,    0,    0,  128,
-       98,  112,    6,  130,  112,  112,  112,  112,  100,    0
+        0,    0,    0,  140,    0,    0,    0,    0,    0,  127,
+        0,    0,    0,    0,  112,   99,  112,  112,  112,   97,
+      142,    0,    0,    0,    0,    0,    4,    0,    0,    0,
+
+        0,    0,    7,    8,    0,    0,    0,    0,    0,    0,
+       21,    0,    0,    0,  138,    0,    0,  112,  112,  112,
+      112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    9,    0,    0,  131,    0,  126,    0,    0,    0,
+        0,    0,  112,  112,   85,  112,    0,    0,  146,    0,
+        0,    0,    0,    0,  122,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  112,  112,   96,    0,    0,    0,
+        0,    5,    0,    0,    0,  124,    0,  129,    0,    0,
+        0,  139,    0,  112,  112,  147,  144,    0,  143,  121,
+        0,    0,    0,    0,    0,  133,  161,  112,  112,  145,
+
+        0,    0,  152,    0,    0,  112,  112,  123,    0,    0,
+      128,   98,  112,    6,  130,  112,  112,  112,  112,  100,
+        0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -519,11 +520,11 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,   18,   19,   20,   21,   22,   23,
        24,   25,   26,   27,   28,   29,   30,   31,   32,   33,
        34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
-        1,    1,    1,    1,   44,    1,   45,   46,   47,   48,
+        1,   44,    1,    1,   45,    1,   46,   47,   48,   49,
 
-       49,   50,   51,   52,   53,   28,   54,   55,   56,   57,
-       58,   59,   28,   60,   61,   62,   63,   64,   65,   66,
-       67,   28,    1,   68,    1,    1,    1,    1,    1,    1,
+       50,   51,   52,   53,   54,   28,   55,   56,   57,   58,
+       59,   60,   28,   61,   62,   63,   64,   65,   66,   67,
+       68,   28,    1,   69,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -540,617 +541,617 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[69] =
+static yyconst flex_int32_t yy_meta[70] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    3,    3,    3,    4,    4,    1,    4,    4,    4,
         4,    4,    4,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    4,    4,    4,    4,    4,    4,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    1
+        3,    3,    3,    1,    3,    4,    4,    4,    4,    4,
+        4,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1229] =
+static yyconst flex_int16_t yy_base[1230] =
     {   0,
-        0,   67, 2812,   68,   69,   72,   74,   74, 2806,   79,
-     2813, 2816, 2816, 2816,   81,   85,   78,   86,   93,  126,
-     2746, 2794,   92,  102,  133,  139,   96,  144,  147,  154,
-      159,  166,  170,  173,  181,  194,  203,  212,  217,  220,
-      223, 2742,  111,  262, 2816, 2816,  124, 2787, 2816, 2816,
-     2794, 2816,  230,  233,  254,  290,  294,  301,  298,  305,
-      308,  313,  316,  319,  324,  337,  351,  327,  356,  168,
-     2785, 2816,  195, 2784,  115, 2816,  206, 2816,   62, 2739,
-      176,  236,  379,  186, 2816,    0,  397,  365, 2816, 2816,
-        0, 2816,  239,  394,  403,  412,  384,  418,  421,  424,
-
-      436,  439,  442,  445,  448,  455,  458,  461,  465,  470,
-      473,  476,  479,  482,  494,  497,  502,  511,  515,  522,
-      526,  531,  535,  541, 2816,  257,    0,  499, 2778,   65,
-      161,  203,  334,  113, 2750,  447, 2749,  511, 2742,  506,
-     2755, 2750,  174, 2741, 2744,  438, 2774, 2738, 2816,  560,
... 11633 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/sip4.git



More information about the Python-modules-commits mailing list