| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head> |
| <title>Warning Messages</title> |
| <link rel="stylesheet" type="text/css" href="style.css"> |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
| </head> |
| |
| <body bgcolor="#ffffff"> |
| <H1><a name="Warnings">15 Warning Messages</a></H1> |
| <!-- INDEX --> |
| <div class="sectiontoc"> |
| <ul> |
| <li><a href="#Warnings_nn2">Introduction</a> |
| <li><a href="#Warnings_suppression">Warning message suppression</a> |
| <li><a href="#Warnings_nn4">Enabling extra warnings</a> |
| <li><a href="#Warnings_nn5">Issuing a warning message</a> |
| <li><a href="#Warnings_symbolic_symbols">Symbolic symbols</a> |
| <li><a href="#Warnings_nn6">Commentary</a> |
| <li><a href="#Warnings_nn7">Warnings as errors</a> |
| <li><a href="#Warnings_nn8">Message output format</a> |
| <li><a href="#Warnings_nn9">Warning number reference</a> |
| <ul> |
| <li><a href="#Warnings_nn10">Deprecated features (100-199)</a> |
| <li><a href="#Warnings_nn11">Preprocessor (200-299)</a> |
| <li><a href="#Warnings_nn12">C/C++ Parser (300-399)</a> |
| <li><a href="#Warnings_nn13">Types and typemaps (400-499) </a> |
| <li><a href="#Warnings_nn14">Code generation (500-599)</a> |
| <li><a href="#Warnings_nn15">Language module specific (700-899) </a> |
| <li><a href="#Warnings_nn16">User defined (900-999)</a> |
| </ul> |
| <li><a href="#Warnings_nn17">History</a> |
| </ul> |
| </div> |
| <!-- INDEX --> |
| |
| |
| |
| <H2><a name="Warnings_nn2">15.1 Introduction</a></H2> |
| |
| |
| <p> |
| During compilation, SWIG may generate a variety of warning messages. For example: |
| </p> |
| |
| <div class="shell"> |
| <pre> |
| example.i:16: Warning 501: Overloaded declaration ignored. bar(double) |
| example.i:15: Warning 501: Previous declaration is bar(int) |
| </pre> |
| </div> |
| |
| <p> |
| Typically, warning messages indicate non-fatal problems with the input |
| where the generated wrapper code will probably compile, but it may not |
| work like you expect. |
| </p> |
| |
| <H2><a name="Warnings_suppression">15.2 Warning message suppression</a></H2> |
| |
| |
| <p> |
| All warning messages have a numeric code that is shown in the warning message itself. |
| To suppress the printing of a warning message, a number of techniques can be used. |
| First, you can run SWIG with the <tt>-w</tt> command line option. For example: |
| </p> |
| |
| <div class="shell"> |
| <pre> |
| % swig -python -w501 example.i |
| % swig -python -w501,505,401 example.i |
| </pre> |
| </div> |
| |
| <p> |
| Alternatively, warnings can be suppressed by inserting a special preprocessor pragma |
| into the input file: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %module example |
| #pragma SWIG nowarn=501 |
| #pragma SWIG nowarn=501,505,401 |
| </pre> |
| </div> |
| |
| <p> |
| Finally, code-generation warnings can be disabled on a declaration by declaration basis using |
| the <tt>%warnfilter</tt> directive. For example: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %module example |
| %warnfilter(501) foo; |
| ... |
| int foo(int); |
| int foo(double); // Silently ignored. |
| </pre> |
| </div> |
| |
| <p> |
| The <tt>%warnfilter</tt> directive has the same semantics as other declaration modifiers like |
| <tt>%rename</tt>, <tt>%ignore</tt> and <tt>%feature</tt>, see the |
| <a href="Customization.html#Customization_features">%feature directive</a> section. For example, if you wanted to |
| suppress a warning for a method in a class hierarchy, you could do this: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %warnfilter(501) Object::foo; |
| class Object { |
| public: |
| int foo(int); |
| int foo(double); // Silently ignored |
| ... |
| }; |
| |
| class Derived : public Object { |
| public: |
| int foo(int); |
| int foo(double); // Silently ignored |
| ... |
| }; |
| </pre> |
| </div> |
| |
| <p> |
| Warnings can be suppressed for an entire class by supplying a class name. For example: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %warnfilter(501) Object; |
| |
| class Object { |
| public: |
| ... // All 501 warnings ignored in class |
| }; |
| </pre> |
| </div> |
| |
| <p> |
| There is no option to suppress all SWIG warning messages. The warning messages are there |
| for a reason---to tell you that something may be <em>broken</em> in |
| your interface. Ignore the warning messages at your own peril. |
| </p> |
| |
| |
| <H2><a name="Warnings_nn4">15.3 Enabling extra warnings</a></H2> |
| |
| |
| <p> |
| Some warning messages are disabled by default and are generated only |
| to provide additional diagnostics. These warnings can be turned on using the |
| <tt>-Wextra</tt> option. For example: |
| </p> |
| |
| <div class="shell"> |
| <pre> |
| % swig -Wextra -python example.i |
| </pre> |
| </div> |
| |
| <p> |
| To selectively turn on extra warning messages, you can use the directives and options in the |
| previous section--simply add a "+" to all warning numbers. For example: |
| </p> |
| |
| <div class="shell"> |
| <pre> |
| % swig -w+309,+452 example.i |
| </pre> |
| </div> |
| |
| <p> |
| or in your interface file use either |
| </p> |
| |
| <div class="code"> |
| <pre> |
| #pragma SWIG nowarn=+309,+452 |
| </pre> |
| </div> |
| |
| <p> |
| or |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %warnfilter(+309,+452) foo; |
| </pre> |
| </div> |
| |
| <p> |
| Note: selective enabling of warnings with <tt>%warnfilter</tt> overrides any global settings you might have |
| made using <tt>-w</tt> or <tt>#pragma</tt>. |
| </p> |
| |
| <p> |
| You can of course also enable all warnings and suppress a select few, for example: |
| </p> |
| |
| <div class="shell"> |
| <pre> |
| % swig -Wextra -w309,452 example.i |
| </pre> |
| </div> |
| |
| <p> |
| The warnings on the right take precedence over the warnings on the left, so in the above example <tt>-Wextra</tt> adds numerous warnings including 452, but then <tt>-w309,452</tt> overrides this and so 452 is suppressesed. |
| </p> |
| |
| <p> |
| If you would like all warnings to appear, regardless of the warning filters used, then use the <tt>-Wall</tt> option. |
| The <tt>-Wall</tt> option also turns on the extra warnings that <tt>-Wextra</tt> adds, however, it is subtely different. |
| When <tt>-Wall</tt> is used, it also disables all other warning filters, |
| that is, any warnings suppressed or added in <tt>%warnfilter</tt>, <tt>#pragma SWIG nowarn</tt> |
| or the <tt>-w</tt> option. |
| </p> |
| |
| <H2><a name="Warnings_nn5">15.4 Issuing a warning message</a></H2> |
| |
| |
| <p> |
| Warning messages can be issued from an interface file using a number of directives. The |
| <tt>%warn</tt> directive is the most simple: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %warn "900:This is your last warning!" |
| </pre> |
| </div> |
| |
| <p> |
| All warning messages are optionally prefixed by the warning number to use. If you are generating |
| your own warnings, make sure you don't use numbers defined in the table at the end of this section. |
| </p> |
| |
| <p> |
| The <tt>%ignorewarn</tt> directive is the same as <tt>%ignore</tt> except that it issues a |
| warning message whenever a matching declaration is found. For example: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %ignorewarn("362:operator= ignored") operator=; |
| </pre> |
| </div> |
| |
| <p> |
| Warning messages can be associated with typemaps using the |
| <tt>warning</tt> attribute of a typemap declaration. For example: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %typemap(in, warning="901:You are really going to regret this usage of $1_type $1_name") blah * { |
| ... |
| } |
| </pre> |
| </div> |
| |
| <p> |
| In this case, the warning message will be printed whenever the typemap is actually used and the <a href="Typemaps.html#Typemaps_special_variables">special variables</a> will be expanded as appropriate, for example: |
| </p> |
| |
| <div class="shell"> |
| <pre> |
| example.i:23: Warning 901: You are really going to regret this usage of blah * self |
| example.i:24: Warning 901: You are really going to regret this usage of blah * stuff |
| </pre> |
| </div> |
| |
| <H2><a name="Warnings_symbolic_symbols">15.5 Symbolic symbols</a></H2> |
| |
| |
| <p> |
| The <tt>swigwarn.swg</tt> file that is installed with SWIG contains symbol constants that could also be |
| used in <tt>%warnfilter</tt> and <tt>#pragma SWIG nowarn</tt>. |
| For example this file contains the following line: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %define SWIGWARN_TYPE_UNDEFINED_CLASS 401 %enddef |
| </pre> |
| </div> |
| |
| <p> |
| so <tt>SWIGWARN_TYPE_UNDEFINED_CLASS</tt> could be used instead of 401, for example: |
| </p> |
| |
| <div class="code"> |
| <pre> |
| #pragma SWIG nowarn=SWIGWARN_TYPE_UNDEFINED_CLASS |
| </pre> |
| </div> |
| |
| <p> |
| or |
| </p> |
| |
| <div class="code"> |
| <pre> |
| %warnfilter(SWIGWARN_TYPE_UNDEFINED_CLASS) Foo; |
| </pre> |
| </div> |
| |
| <H2><a name="Warnings_nn6">15.6 Commentary</a></H2> |
| |
| |
| <p> |
| The ability to suppress warning messages is really only provided for |
| advanced users and is not recommended in normal use. You are advised |
| to modify your interface to fix the problems highlighted by the warnings |
| wherever possible instead of suppressing warnings. |
| </p> |
| |
| <p> |
| Certain types of SWIG problems are errors. These usually arise due to |
| parsing errors (bad syntax) or semantic problems for which there is |
| no obvious recovery. There is no mechanism for suppressing error |
| messages. |
| </p> |
| |
| <H2><a name="Warnings_nn7">15.7 Warnings as errors</a></H2> |
| |
| |
| <p> |
| Warnings can be handled as errors by using the <tt>-Werror</tt> command line |
| option. This will cause SWIG to exit with a non successful exit code if a |
| warning is encountered. |
| </p> |
| |
| <H2><a name="Warnings_nn8">15.8 Message output format</a></H2> |
| |
| |
| <p> |
| The output format for both warnings and errors can be selected for |
| integration with your favourite IDE/editor. Editors and IDEs can usually parse |
| error messages and if in the appropriate format will easily take you |
| directly to the source of the error. The standard format is used by |
| default except on Windows where the Microsoft format is used by default. |
| These can be overridden using command line options, for example: |
| </p> |
| |
| <div class="shell"><pre> |
| $ swig -python -Fstandard example.i |
| example.i:4: Syntax error in input(1). |
| $ swig -python -Fmicrosoft example.i |
| example.i(4) : Syntax error in input(1). |
| </pre></div> |
| |
| <H2><a name="Warnings_nn9">15.9 Warning number reference</a></H2> |
| |
| |
| <H3><a name="Warnings_nn10">15.9.1 Deprecated features (100-199)</a></H3> |
| |
| |
| <ul> |
| <li>101. Deprecated <tt>%extern</tt> directive. |
| <li>102. Deprecated <tt>%val</tt> directive. |
| <li>103. Deprecated <tt>%out</tt> directive. |
| <li>104. Deprecated <tt>%disabledoc</tt> directive. |
| <li>105. Deprecated <tt>%enabledoc</tt> directive. |
| <li>106. Deprecated <tt>%doconly</tt> directive. |
| <li>107. Deprecated <tt>%style</tt> directive. |
| <li>108. Deprecated <tt>%localstyle</tt> directive. |
| <li>109. Deprecated <tt>%title</tt> directive. |
| <li>110. Deprecated <tt>%section</tt> directive. |
| <li>111. Deprecated <tt>%subsection</tt> directive. |
| <li>112. Deprecated <tt>%subsubsection</tt> directive. |
| <li>113. Deprecated <tt>%addmethods</tt> directive. |
| <li>114. Deprecated <tt>%readonly</tt> directive. |
| <li>115. Deprecated <tt>%readwrite</tt> directive. |
| <li>116. Deprecated <tt>%except</tt> directive. |
| <li>117. Deprecated <tt>%new</tt> directive. |
| <li>118. Deprecated <tt>%typemap(except)</tt>. |
| <li>119. Deprecated <tt>%typemap(ignore)</tt>. |
| <li>120. Deprecated command line option (-runtime, -noruntime). |
| <li>121. Deprecated <tt>%name</tt> directive. |
| <li>126. The 'nestedworkaround' feature is deprecated. |
| </ul> |
| |
| <H3><a name="Warnings_nn11">15.9.2 Preprocessor (200-299)</a></H3> |
| |
| |
| <ul> |
| <li>201. Unable to find <em>filename</em>. |
| <li>202. Could not evaluate expression <em>expr</em>. |
| <li>203. Both includeall and importall are defined: using includeall. |
| <li>204. CPP #warning, "<em>warning</em>". |
| <li>205. CPP #error, "<em>error</em>". |
| <li>206. Unexpected tokens after #<em>directive</em> directive. |
| </ul> |
| |
| <H3><a name="Warnings_nn12">15.9.3 C/C++ Parser (300-399)</a></H3> |
| |
| |
| <ul> |
| <li>301. <tt>class</tt> keyword used, but not in C++ mode. |
| <li>302. Identifier '<em>name</em>' redefined (ignored). |
| <li>303. <tt>%extend</tt> defined for an undeclared class '<em>name</em>'. |
| <li>304. Unsupported constant value (ignored). |
| <li>305. Bad constant value (ignored). |
| <li>306. '<em>identifier</em>' is private in this context. |
| <li>307. Can't set default argument value (ignored) |
| <li>308. Namespace alias '<em>name</em>' not allowed here. Assuming '<em>name</em>' |
| <li>309. [private | protected] inheritance ignored. |
| <li>310. Template '<em>name</em>' was already wrapped as '<em>name</em>' (ignored) |
| <li>312. Unnamed nested class not currently supported (ignored). |
| <li>313. Unrecognized extern type "<em>name</em>" (ignored). |
| <li>314. '<em>identifier</em>' is a <em>lang</em> keyword. |
| <li>315. Nothing known about '<em>identifier</em>'. |
| <li>316. Repeated %module directive. |
| <li>317. Specialization of non-template '<em>name</em>'. |
| <li>318. Instantiation of template '<em>name</em>' is ambiguous, instantiation <em>templ</em> used, instantiation <em>templ</em> ignored. |
| <li>319. No access specifier given for base class <em>name</em> (ignored). |
| <li>320. Explicit template instantiation ignored. |
| <li>321. <em>identifier</em> conflicts with a built-in name. |
| <li>322. Redundant redeclaration of '<em>name</em>'. |
| <li>323. Recursive scope inheritance of '<em>name</em>'. |
| <li>324. Named nested template instantiations not supported. Processing as if no name was given to %template(). |
| <li>325. Nested <em>kind</em> not currently supported (<em>name</em> ignored). |
| <li>326. Deprecated %extend name used - the <em>kind</em> name '<em>name</em>' should be used instead of the typedef name '<em>name</em>'. |
| <li>350. operator new ignored. |
| <li>351. operator delete ignored. |
| <li>352. operator+ ignored. |
| <li>353. operator- ignored. |
| <li>354. operator* ignored. |
| <li>355. operator/ ignored. |
| <li>356. operator% ignored. |
| <li>357. operator^ ignored. |
| <li>358. operator& ignored. |
| <li>359. operator| ignored. |
| <li>360. operator~ ignored. |
| <li>361. operator! ignored. |
| <li>362. operator= ignored. |
| <li>363. operator< ignored. |
| <li>364. operator> ignored. |
| <li>365. operator+= ignored. |
| <li>366. operator-= ignored. |
| <li>367. operator*= ignored. |
| <li>368. operator/= ignored. |
| <li>369. operator%= ignored. |
| <li>370. operator^= ignored. |
| <li>371. operator&= ignored. |
| <li>372. operator|= ignored. |
| <li>373. operator<< ignored. |
| <li>374. operator>>ignored. |
| <li>375. operator<<= ignored. |
| <li>376. operator>>= ignored. |
| <li>377. operator== ignored. |
| <li>378. operator!= ignored. |
| <li>379. operator<= ignored. |
| <li>380. operator>= ignored. |
| <li>381. operator&& ignored. |
| <li>382. operator|| ignored. |
| <li>383. operator++ ignored. |
| <li>384. operator-- ignored. |
| <li>385. operator, ignored. |
| <li>386. operator-<* ignored. |
| <li>387. operator-< ignored. |
| <li>388. operator() ignored. |
| <li>389. operator[] ignored. |
| <li>390. operator+ ignored (unary). |
| <li>391. operator- ignored (unary). |
| <li>392. operator* ignored (unary). |
| <li>393. operator& ignored (unary). |
| <li>394. operator new[] ignored. |
| <li>395. operator delete[] ignored. |
| </ul> |
| |
| <H3><a name="Warnings_nn13">15.9.4 Types and typemaps (400-499) </a></H3> |
| |
| |
| <ul> |
| <li>401. Nothing known about class 'name'. Ignored. |
| <li>402. Base class 'name' is incomplete. |
| <li>403. Class 'name' might be abstract. |
| <li>450. Deprecated typemap feature ($source/$target). |
| <li>451. Setting const char * variable may leak memory. |
| <li>452. Reserved |
| <li>453. Can't apply (pattern). No typemaps are defined. |
| <li>460. Unable to use type <em>type</em> as a function argument. |
| <li>461. Unable to use return type <em>type</em> in function <em>name</em>. |
| <li>462. Unable to set variable of type <em>type</em>. |
| <li>463. Unable to read variable of type <em>type</em>. |
| <li>464. Unsupported constant value. |
| <li>465. Unable to handle type <em>type</em>. |
| <li>466. Unsupported variable type <em>type</em>. |
| <li>467. Overloaded <em>declaration</em> not supported (incomplete type checking rule - no precedence level in typecheck typemap for '<em>type</em>') |
| <li>468. No 'throw' typemap defined for exception type <em>type</em> |
| <li>469. No or improper directorin typemap defined for <em>type</em> |
| <li>470. Thread/reentrant unsafe wrapping, consider returning by value instead. |
| <li>471. Unable to use return type <em>type</em> in director method |
| <li>474. Method <em>method</em> usage of the optimal attribute ignored in the out typemap as the following cannot be used to generate optimal code: <em>code</em> |
| <li>475. Multiple calls to <em>method</em> might be generated due to optimal attribute usage in the out typemap. |
| <li>476. Initialization using std::initializer_list. |
| <li>477. No directorthrows typemap defined for <em>type</em> |
| </ul> |
| |
| |
| |
| <H3><a name="Warnings_nn14">15.9.5 Code generation (500-599)</a></H3> |
| |
| |
| <ul> |
| <li>501. Overloaded declaration ignored. <em>decl</em>. Previous declaration is <em>decl</em>. |
| <li>502. Overloaded constructor ignored. <em>decl</em>. Previous declaration is <em>decl</em>. |
| <li>503. Can't wrap '<em>identifier</em>' unless renamed to a valid identifier. |
| <li>504. Function <em>name</em> must have a return type. Ignored. |
| <li>505. Variable length arguments discarded. |
| <li>506. Can't wrap varargs with keyword arguments enabled. |
| <li>507. Adding native function <em>name</em> not supported (ignored). |
| <li>508. Declaration of '<em>name</em>' shadows declaration accessible via operator->(), previous declaration of'<em>declaration</em>'. |
| <li>509. Overloaded method <em>declaration</em> effectively ignored, as it is shadowed by <em>declaration</em>. |
| <li>510. Friend function '<em>name</em>' ignored. |
| <li>511. Can't use keyword arguments with overloaded functions. |
| <li>512. Overloaded method <em>declaration</em> ignored, using non-const method <em>declaration</em> instead. |
| <li>513. Can't generate wrappers for unnamed struct/class. |
| <li>514. |
| <li>515. |
| <li>516. Overloaded method <em>declaration</em> ignored, using <em>declaration</em> instead. |
| <li>517. |
| <li>518. Portability warning: File <em>file1</em> will be overwritten by <em>file2</em> on case insensitive filesystems such as Windows' FAT32 and NTFS unless the class/module name is renamed. |
| <li>519. %template() contains no name. Template method ignored: <em>declaration</em> |
| <li>520. <em>Base/Derived</em> class '<em>classname1</em>' of '<em>classname2</em>' is not similarly marked as a smart pointer. |
| <li>521. Illegal destructor name <em>name</em>. Ignored. |
| <li>522. Use of an illegal constructor name '<em>name</em>' in %extend is deprecated, the constructor name should be '<em>name</em>'. |
| <li>523. Use of an illegal destructor name '<em>name</em>' in %extend is deprecated, the destructor name should be '<em>name</em>'. |
| </ul> |
| |
| <H3><a name="Warnings_nn15">15.9.6 Language module specific (700-899) </a></H3> |
| |
| |
| <ul> |
| <li>801. Wrong name (corrected to '<em>name</em>'). (Ruby). |
| </ul> |
| |
| <ul> |
| <li>810. No jni typemap defined for <em>type</em> (Java). |
| <li>811. No jtype typemap defined for <em>type</em> (Java). |
| <li>812. No jstype typemap defined for <em>type</em> (Java). |
| <li>813. Warning for <em>classname</em>, base <em>baseclass</em> ignored. Multiple inheritance is not supported in Java. (Java). |
| <li>814. |
| <li>815. No javafinalize typemap defined for <em>type</em> (Java). |
| <li>816. No javabody typemap defined for <em>type</em> (Java). |
| <li>817. No javaout typemap defined for <em>type</em> (Java). |
| <li>818. No javain typemap defined for <em>type</em> (Java). |
| <li>819. No javadirectorin typemap defined for <em>type</em> (Java). |
| <li>820. No javadirectorout typemap defined for <em>type</em> (Java). |
| <li>821. |
| <li>822. Covariant return types not supported in Java. Proxy method will return <em>basetype</em> (Java). |
| <li>823. No javaconstruct typemap defined for <em>type</em> (Java). |
| <li>824. Missing JNI descriptor in directorin typemap defined for <em>type</em> (Java). |
| <li>825. "directorconnect" attribute missing in <em>type</em> "javaconstruct" typemap. (Java). |
| <li>826. The nspace feature is used on '<em>type</em>' without -package. The generated code may not compile as Java does not support types declared in a named package accessing types declared in an unnamed package. (Java). |
| </ul> |
| |
| <ul> |
| <li>830. No ctype typemap defined for <em>type</em> (C#). |
| <li>831. No cstype typemap defined for <em>type</em> (C#). |
| <li>832. No cswtype typemap defined for <em>type</em> (C#). |
| <li>833. Warning for <em>classname</em>, base <em>baseclass</em> ignored. Multiple inheritance is not supported in C#. (C#). |
| <li>834. |
| <li>835. No csfinalize typemap defined for <em>type</em> (C#). |
| <li>836. No csbody typemap defined for <em>type</em> (C#). |
| <li>837. No csout typemap defined for <em>type</em> (C#). |
| <li>838. No csin typemap defined for <em>type</em> (C#). |
| <li>839. |
| <li>840. |
| <li>841. |
| <li>842. Covariant return types not supported in C#. Proxy method will return <em>basetype</em> (C#). |
| <li>843. No csconstruct typemap defined for <em>type</em> (C#). |
| <li>844. C# exception may not be thrown - no $excode or excode attribute in <em>typemap</em> typemap. (C#). |
| <li>845. Unmanaged code contains a call to a SWIG_CSharpSetPendingException method and C# code does not handle pending exceptions via the canthrow attribute. (C#). |
| </ul> |
| |
| <ul> |
| <li>870. Warning for <em>classname</em>: Base <em>baseclass</em> ignored. Multiple inheritance is not supported in PHP. (Php). |
| <li>871. Unrecognized pragma <em>pragma</em>. (Php). |
| </ul> |
| |
| <H3><a name="Warnings_nn16">15.9.7 User defined (900-999)</a></H3> |
| |
| |
| <p> |
| These numbers can be used by your own application. |
| </p> |
| |
| <H2><a name="Warnings_nn17">15.10 History</a></H2> |
| |
| |
| <p> |
| The ability to control warning messages was first added to SWIG-1.3.12. |
| </p> |
| |
| </body> |
| </html> |