Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(532)

Unified Diff: swig/Lib/constraints.i

Issue 553095: Checkin swig binaries for win, linux and Mac... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: '' Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « swig/Lib/cmalloc.i ('k') | swig/Lib/cpointer.i » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: swig/Lib/constraints.i
===================================================================
--- swig/Lib/constraints.i (revision 0)
+++ swig/Lib/constraints.i (revision 0)
@@ -0,0 +1,227 @@
+/* -----------------------------------------------------------------------------
+ * See the LICENSE file for information on copyright, usage and redistribution
+ * of SWIG, and the README file for authors - http://www.swig.org/release.html.
+ *
+ * constraints.i
+ *
+ * SWIG constraints library.
+ *
+ * SWIG library file containing typemaps for implementing various kinds of
+ * constraints. Depends upon the SWIG exception library for generating
+ * errors in a language-independent manner.
+ * ----------------------------------------------------------------------------- */
+
+#ifdef AUTODOC
+%text %{
+%include <constraints.i>
+
+This library provides support for applying constraints to function
+arguments. Using a constraint, you can restrict arguments to be
+positive numbers, non-NULL pointers, and so on. The following
+constraints are available :
+
+ Number POSITIVE - Positive number (not zero)
+ Number NEGATIVE - Negative number (not zero)
+ Number NONZERO - Nonzero number
+ Number NONNEGATIVE - Positive number (including zero)
+ Number NONPOSITIVE - Negative number (including zero)
+ Pointer NONNULL - Non-NULL pointer
+ Pointer ALIGN8 - 8-byte aligned pointer
+ Pointer ALIGN4 - 4-byte aligned pointer
+ Pointer ALIGN2 - 2-byte aligned pointer
+
+To use the constraints, you need to "apply" them to specific
+function arguments in your code. This is done using the %apply
+directive. For example :
+
+ %apply Number NONNEGATIVE { double nonneg };
+ double sqrt(double nonneg); // Name of argument must match
+
+ %apply Pointer NONNULL { void *ptr };
+ void *malloc(int POSITIVE); // May return a NULL pointer
+ void free(void *ptr); // May not accept a NULL pointer
+
+Any function argument of the type you specify with the %apply directive
+will be checked with the appropriate constraint. Multiple types may
+be specified as follows :
+
+ %apply Pointer NONNULL { void *, Vector *, List *, double *};
+
+In this case, all of the types listed would be checked for non-NULL
+pointers.
+
+The common datatypes of int, short, long, unsigned int, unsigned long,
+unsigned short, unsigned char, signed char, float, and double can be
+checked without using the %apply directive by simply using the
+constraint name as the parameter name. For example :
+
+ double sqrt(double NONNEGATIVE);
+ double log(double POSITIVE);
+
+If you have used typedef to change type-names, you can also do this :
+
+ %apply double { Real }; // Make everything defined for doubles
+ // work for Reals.
+ Real sqrt(Real NONNEGATIVE);
+ Real log(Real POSITIVE);
+
+%}
+#endif
+
+%include <exception.i>
+
+#ifdef SWIGCSHARP
+// Required attribute for C# exception handling
+#define SWIGCSHARPCANTHROW , canthrow=1
+#else
+#define SWIGCSHARPCANTHROW
+#endif
+
+
+// Positive numbers
+
+%typemap(check SWIGCSHARPCANTHROW)
+ int POSITIVE,
+ short POSITIVE,
+ long POSITIVE,
+ unsigned int POSITIVE,
+ unsigned short POSITIVE,
+ unsigned long POSITIVE,
+ signed char POSITIVE,
+ unsigned char POSITIVE,
+ float POSITIVE,
+ double POSITIVE,
+ Number POSITIVE
+{
+ if ($1 <= 0) {
+ SWIG_exception(SWIG_ValueError,"Expected a positive value.");
+ }
+}
+
+// Negative numbers
+
+%typemap(check SWIGCSHARPCANTHROW)
+ int NEGATIVE,
+ short NEGATIVE,
+ long NEGATIVE,
+ unsigned int NEGATIVE,
+ unsigned short NEGATIVE,
+ unsigned long NEGATIVE,
+ signed char NEGATIVE,
+ unsigned char NEGATIVE,
+ float NEGATIVE,
+ double NEGATIVE,
+ Number NEGATIVE
+{
+ if ($1 >= 0) {
+ SWIG_exception(SWIG_ValueError,"Expected a negative value.");
+ }
+}
+
+// Nonzero numbers
+
+%typemap(check SWIGCSHARPCANTHROW)
+ int NONZERO,
+ short NONZERO,
+ long NONZERO,
+ unsigned int NONZERO,
+ unsigned short NONZERO,
+ unsigned long NONZERO,
+ signed char NONZERO,
+ unsigned char NONZERO,
+ float NONZERO,
+ double NONZERO,
+ Number NONZERO
+{
+ if ($1 == 0) {
+ SWIG_exception(SWIG_ValueError,"Expected a nonzero value.");
+ }
+}
+
+// Nonnegative numbers
+
+%typemap(check SWIGCSHARPCANTHROW)
+ int NONNEGATIVE,
+ short NONNEGATIVE,
+ long NONNEGATIVE,
+ unsigned int NONNEGATIVE,
+ unsigned short NONNEGATIVE,
+ unsigned long NONNEGATIVE,
+ signed char NONNEGATIVE,
+ unsigned char NONNEGATIVE,
+ float NONNEGATIVE,
+ double NONNEGATIVE,
+ Number NONNEGATIVE
+{
+ if ($1 < 0) {
+ SWIG_exception(SWIG_ValueError,"Expected a non-negative value.");
+ }
+}
+
+// Nonpositive numbers
+
+%typemap(check SWIGCSHARPCANTHROW)
+ int NONPOSITIVE,
+ short NONPOSITIVE,
+ long NONPOSITIVE,
+ unsigned int NONPOSITIVE,
+ unsigned short NONPOSITIVE,
+ unsigned long NONPOSITIVE,
+ signed char NONPOSITIVE,
+ unsigned char NONPOSITIVE,
+ float NONPOSITIVE,
+ double NONPOSITIVE,
+ Number NONPOSITIVE
+{
+ if ($1 > 0) {
+ SWIG_exception(SWIG_ValueError,"Expected a non-positive value.");
+ }
+}
+
+// Non-NULL pointer
+
+%typemap(check SWIGCSHARPCANTHROW)
+ void * NONNULL,
+ Pointer NONNULL
+{
+ if (!$1) {
+ SWIG_exception(SWIG_ValueError,"Received a NULL pointer.");
+ }
+}
+
+// Aligned pointers
+
+%typemap(check SWIGCSHARPCANTHROW)
+ void * ALIGN8,
+ Pointer ALIGN8
+{
+ unsigned long long tmp;
+ tmp = (unsigned long long) $1;
+ if (tmp & 7) {
+ SWIG_exception(SWIG_ValueError,"Pointer must be 8-byte aligned.");
+ }
+}
+
+%typemap(check SWIGCSHARPCANTHROW)
+ void * ALIGN4,
+ Pointer ALIGN4
+{
+ unsigned long long tmp;
+ tmp = (unsigned long long) $1;
+ if (tmp & 3) {
+ SWIG_exception(SWIG_ValueError,"Pointer must be 4-byte aligned.");
+ }
+}
+
+%typemap(check SWIGCSHARPCANTHROW)
+ void * ALIGN2,
+ Pointer ALIGN2
+{
+ unsigned long long tmp;
+ tmp = (unsigned long long) $1;
+ if (tmp & 1) {
+ SWIG_exception(SWIG_ValueError,"Pointer must be 2-byte aligned.");
+ }
+}
+
+
« no previous file with comments | « swig/Lib/cmalloc.i ('k') | swig/Lib/cpointer.i » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698