SWIG-3.0 Documentation SWIG-3.0 Documentation Table of Contents SWIG-3.0 Documentation

Total Page:16

File Type:pdf, Size:1020Kb

SWIG-3.0 Documentation SWIG-3.0 Documentation Table of Contents SWIG-3.0 Documentation SWIG-3.0 Documentation SWIG-3.0 Documentation Table of Contents SWIG-3.0 Documentation..................................................................................................................................................................1 Sections...................................................................................................................................................................................1 SWIG Core Documentation............................................................................................................................................1 Language Module Documentation..................................................................................................................................1 Developer Documentation...............................................................................................................................................2 1 Preface...............................................................................................................................................................................................3 1.1 Introduction.......................................................................................................................................................................3 1.2 SWIG Versions.................................................................................................................................................................3 1.3 SWIG License...................................................................................................................................................................3 1.4 SWIG resources................................................................................................................................................................3 1.5 Prerequisites......................................................................................................................................................................4 1.6 Organization of this manual..............................................................................................................................................4 1.7 How to avoid reading the manual.....................................................................................................................................4 1.8 Backwards compatibility..................................................................................................................................................4 1.9 Release notes....................................................................................................................................................................5 1.10 Credits.............................................................................................................................................................................5 1.11 Bug reports......................................................................................................................................................................5 1.12 Installation......................................................................................................................................................................5 1.12.1 Windows installation............................................................................................................................................5 1.12.2 Unix installation...................................................................................................................................................5 1.12.3 Macintosh OS X installation................................................................................................................................6 1.12.4 Testing..................................................................................................................................................................6 1.12.5 Examples..............................................................................................................................................................7 2 Introduction......................................................................................................................................................................................8 2.1 What is SWIG?.................................................................................................................................................................8 2.2 Why use SWIG?...............................................................................................................................................................8 2.3 A SWIG example..............................................................................................................................................................9 2.3.1 SWIG interface file.................................................................................................................................................9 2.3.2 The swig command...............................................................................................................................................10 2.3.3 Building a Perl5 module.......................................................................................................................................10 2.3.4 Building a Python module....................................................................................................................................10 2.3.5 Shortcuts...............................................................................................................................................................11 2.4 Supported C/C++ language features...............................................................................................................................11 2.5 Non-intrusive interface building.....................................................................................................................................12 2.6 Incorporating SWIG into a build system........................................................................................................................12 2.7 Hands off code generation..............................................................................................................................................12 2.8 SWIG and freedom.........................................................................................................................................................13 3 Getting started on Windows..........................................................................................................................................................14 3.1 Installation on Windows.................................................................................................................................................14 3.1.1 Windows Executable............................................................................................................................................14 3.2 SWIG Windows Examples.............................................................................................................................................14 3.2.1 Instructions for using the Examples with Visual Studio......................................................................................14 3.2.1.1 C#...............................................................................................................................................................15 3.2.1.2 Java.............................................................................................................................................................15 3.2.1.3 Perl.............................................................................................................................................................15 3.2.1.4 Python.........................................................................................................................................................15 3.2.1.5 TCL............................................................................................................................................................15 3.2.1.6 R.................................................................................................................................................................15 3.2.1.7 Ruby...........................................................................................................................................................16 3.2.2 Instructions for using the Examples with other compilers...................................................................................16 3.3 SWIG on Cygwin and MinGW......................................................................................................................................16 i SWIG-3.0 Documentation Table of Contents 3 Getting started on Windows 3.3.1 Building swig.exe on Windows............................................................................................................................16 3.3.1.1 Building swig.exe using MinGW and MSYS............................................................................................16 3.3.1.2 Building swig.exe using Cygwin...............................................................................................................17 3.3.1.3 Building swig.exe alternatives...................................................................................................................17
Recommended publications
  • The Shogun Machine Learning Toolbox
    The Shogun Machine Learning Toolbox Heiko Strathmann, Gatsby Unit, UCL London Open Machine Learning Workshop, MSR, NY August 22, 2014 A bit about Shogun I Open-Source tools for ML problems I Started 1999 by SÖren Sonnenburg & GUNnar Rätsch, made public in 2004 I Currently 8 core-developers + 20 regular contributors I Purely open-source community driven I In Google Summer of Code since 2010 (29 projects!) Ohloh - Summary Ohloh - Code Supervised Learning Given: x y n , want: y ∗ x ∗ I f( i ; i )gi=1 j I Classication: y discrete I Support Vector Machine I Gaussian Processes I Logistic Regression I Decision Trees I Nearest Neighbours I Naive Bayes I Regression: y continuous I Gaussian Processes I Support Vector Regression I (Kernel) Ridge Regression I (Group) LASSO Unsupervised Learning Given: x n , want notion of p x I f i gi=1 ( ) I Clustering: I K-Means I (Gaussian) Mixture Models I Hierarchical clustering I Latent Models I (K) PCA I Latent Discriminant Analysis I Independent Component Analysis I Dimension reduction I (K) Locally Linear Embeddings I Many more... And many more I Multiple Kernel Learning I Structured Output I Metric Learning I Variational Inference I Kernel hypothesis testing I Deep Learning (whooo!) I ... I Bindings to: LibLinear, VowpalWabbit, etc.. http://www.shogun-toolbox.org/page/documentation/ notebook Some Large-Scale Applications I Splice Site prediction: 50m examples of 200m dimensions I Face recognition: 20k examples of 750k dimensions ML in Practice I Modular data represetation I Dense, Sparse, Strings, Streams, ... I Multiple types: 8-128 bit word size I Preprocessing tools I Evaluation I Cross-Validation I Accuracy, ROC, MSE, ..
    [Show full text]
  • ARM Code Development in Windows
    ARM Code Development in Windows By: Ali Nuhi This guide will describe how to develop code to be run on an embedded Linux system using an ARM processor (specifically the OMAP3530). Environment The Cygwin bash shell will be the environment used for code development. Download it from the below link. http://cygwin.com/install.html READ THE SITE. Download setup.exe and choose the packages you want to install. Some helpful packages to download are: -gcc4-core,g++ etc. (for c and c++ compiling of normal programs) -git core files and completion (version control system) -wget (utility to download files from the internet via HTTP and FTP) -VIM (text editor) -Xemacs (another text editor, better than vim) -nano (simple command line text editor) If you still use windows notepad for writing code please atleast upgrade to notepad++. Toolchain We will be compiling and creating files using CodeSourcery g++ lite toolchains. This is a modified version of GCC which will create files specifically for ARM target systems. Download this at: http://www.codesourcery.com/sgpp/lite/arm/portal/release1803 Download the Windows installer and execute. You can let it install as is unless you have some other install scheme on your computer. I highly recommend reading the getting started pdf that comes with CodeSourcery. Once it’s fully installed open up Cygwin and execute the below lines. $ export CYGPATH=cygpath $ export CYGPATH=c:/cygwin/bin/cygpath If you installed Cygwin to another directory then you must edit the second line. To use the compiler type the following and hit tab twice to see all of the possible options you have.
    [Show full text]
  • Cygwin User's Guide
    Cygwin User’s Guide Cygwin User’s Guide ii Copyright © Cygwin authors Permission is granted to make and distribute verbatim copies of this documentation provided the copyright notice and this per- mission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this documentation under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this documentation into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. Cygwin User’s Guide iii Contents 1 Cygwin Overview 1 1.1 What is it? . .1 1.2 Quick Start Guide for those more experienced with Windows . .1 1.3 Quick Start Guide for those more experienced with UNIX . .1 1.4 Are the Cygwin tools free software? . .2 1.5 A brief history of the Cygwin project . .2 1.6 Highlights of Cygwin Functionality . .3 1.6.1 Introduction . .3 1.6.2 Permissions and Security . .3 1.6.3 File Access . .3 1.6.4 Text Mode vs. Binary Mode . .4 1.6.5 ANSI C Library . .4 1.6.6 Process Creation . .5 1.6.6.1 Problems with process creation . .5 1.6.7 Signals . .6 1.6.8 Sockets . .6 1.6.9 Select . .7 1.7 What’s new and what changed in Cygwin . .7 1.7.1 What’s new and what changed in 3.2 .
    [Show full text]
  • System Calls
    System Calls What are they? ● Standard interface to allow the kernel to safely handle user requests – Read from hardware – Spawn a new process – Get current time – Create shared memory ● Message passing technique between – OS kernel (server) – User (client) Executing System Calls ● User program issues call ● Core kernel looks up call in syscall table ● Kernel module handles syscall action ● Module returns result of system call ● Core kernel forwards result to user Module is not Loaded... ● User program issues call ● Core kernel looks up call in syscall table ● Kernel module isn't loaded to handle action ● ... ● Where does call go? System Call Wrappers ● Wrapper calls system call if loaded – Otherwise returns an error ● Needs to be in a separate location so that the function can actually be called – Uses function pointer to point to kernel module implementation Adding System Calls ● You'll need to add and implement: – int start_elevator(void); – int issue_request(int, int, int); – int stop_elevator(void); ● As an example, let's add a call to printk an argument passed in: – int test_call(int); Adding System Calls ● Files to add (project files): – /usr/src/test_kernel/hello_world/test_call.c – /usr/src/test_kernel/hello_world/hello.c – /usr/src/test_kernel/hello_world/Makefile ● Files to modify (core kernel): – /usr/src/test_kernel/arch/x86/entry/syscalls/syscall_64.tbl – /usr/src/test_kernel/include/linux/syscalls.h – /usr/src/test_kernel/Makefile hello_world/test_call.c ● #include <linux/linkage.h> ● #include <linux/kernel.h> ● #include
    [Show full text]
  • CS102: Introduction to Python the Goal of This Topic Is to Provide a Brief
    CS102: Introduction to Python The goal of this topic is to provide a brief introduction to Python to give you a feel for a language other than C. In many ways, Python is very different from C. It is generally considered to be a scripting language, although the distinction between scripting languages and other programming languages is not really clear-cut. Scripting languages tend to be interpreted rather than compiled; they tend not to require declarations of variables (the interpreter figures out types based on context); they tend to hide memory management from the programmer; they tend to support regular expressions; etc. In terms of usage, scripting languages tend to be useful for writing short programs quickly when you don't care too much about efficiency. Other languages that are typically considered to be scripting languages include Perl, Awk, and JavaScript. Python supports several styles of programming, including (but not limited to) procedural programming (like C and C++), object-oriented programming (like C++ and Java), and functional programming (like Lisp). Note that it is not a mistake to include C++ in two categories, just as it is not a mistake to include Python in all three of these categories. The first version of Python was released in the late 1980s. Python 2.0 was released in 2000, and various improvements have been made in the Python 2.x chain of releases since that time. Python 3.0 was released in 2008, and again, various improvements have been made in the Python 3.0 chain of releases. Unfortunately, the Python 3 interpreter is not backwards compatible with Python 2, and there seems to be debate as to which is the better version of Python to learn.
    [Show full text]
  • Programming Project 5: User-Level Processes
    Project 5 Operating Systems Programming Project 5: User-Level Processes Due Date: ______________________________ Project Duration: One week Overview and Goal In this project, you will explore user-level processes. You will create a single process, running in its own address space. When this user-level process executes, the CPU will be in “user mode.” The user-level process will make system calls to the kernel, which will cause the CPU to switch into “system mode.” Upon completion, the CPU will switch back to user mode before resuming execution of the user-level process. The user-level process will execute in its own “logical address space.” Its address space will be broken into a number of “pages” and each page will be stored in a frame in memory. The pages will be resident (i.e., stored in frames in physical memory) at all times and will not be swapped out to disk in this project. (Contrast this with “virtual” memory, in which some pages may not be resident in memory.) The kernel will be entirely protected from the user-level program; nothing the user-level program does can crash the kernel. Download New Files The files for this project are available in: http://www.cs.pdx.edu/~harry/Blitz/OSProject/p5/ Please retain your old files from previous projects and don’t modify them once you submit them. You should get the following files: Switch.s Runtime.s System.h System.c Page 1 Project 5 Operating Systems List.h List.c BitMap.h BitMap.c makefile FileStuff.h FileStuff.c Main.h Main.c DISK UserRuntime.s UserSystem.h UserSystem.c MyProgram.h MyProgram.c TestProgram1.h TestProgram1.c TestProgram2.h TestProgram2.c The following files are unchanged from the last project and you should not modify them: Switch.s Runtime.s System.h System.c -- except HEAP_SIZE has been modified List.h List.c BitMap.h BitMap.c The following files are not provided; instead you will modify what you created in the last project.
    [Show full text]
  • SWIG and Ruby
    SWIG and Ruby David Grayson Las Vegas Ruby Meetup 2014-09-10 SWIG ● SWIG stands for: Simplified Wrapper and Interface Generator ● SWIG helps you access C or C++ code from 22 different languages, including Ruby SWIG inputs and outputs Ruby C extension SWIG interface file (.i) source (.c or .cxx) Simple C++ example libdavid.h: libdavid.i #include <stdio.h> %module "david" class David %{ { #include <libdavid.h> public: %} David(int x) { class David this->x = x; { } public: David(int x); void announce() void announce(); { int x; }; printf("David %d\n", x); } int x; }; Compiling Simple C++ example extconf.rb require 'mkmf' system('swig -c++ -ruby libdavid.i') or abort create_makefile('david') Commands to run: $ ruby extconf.rb # create libdavid_wrap.cxx and Makefile $ make # compile david.so $ irb -r./david # try it out irb(main):001:0> d = David::David.new(4) => #<David::David:0x007f40090a5280 @__swigtype__="_p_David"> irb(main):002:0> d.announce David 4 => nil (This example worked for me with SWIG 3.0.2 and Ruby 2.1.2.) That example was pretty simple ● All code was in a .h file ● No external libraries ● Simple data types ● No consideration of deployment ...but SWIG has tons of features C: C++: ● All ISO C datatypes ● All C++ datatypes ● Global functions ● References ● Global variables, constants ● Pointers to members ● Structures and unions ● Classes ● Pointers ● (Multiple) inheritance ● (Multidimensional) arrays ● Overloaded functions ● Pointers to functions ● Overloaded methods ● Variable length arguments ● Overloaded operators ● Typedefs ● Static members ● Enums ● Namespaces ● Templates ● Nested classes ... SWIG Typemaps ● Define custom ways to map between scripting- language types and C++ types. ● Can be used to add and remove parameters from of exposed functions.
    [Show full text]
  • PHP Beyond the Web Shell Scripts, Desktop Software, System Daemons and More
    PHP Beyond the web Shell scripts, desktop software, system daemons and more Rob Aley This book is for sale at http://leanpub.com/php This version was published on 2013-11-25 This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do. ©2012 - 2013 Rob Aley Tweet This Book! Please help Rob Aley by spreading the word about this book on Twitter! The suggested hashtag for this book is #phpbeyondtheweb. Find out what other people are saying about the book by clicking on this link to search for this hashtag on Twitter: https://twitter.com/search?q=#phpbeyondtheweb Contents Welcome ............................................ i About the author ...................................... i Acknowledgements ..................................... ii 1 Introduction ........................................ 1 1.1 “Use PHP? We’re not building a website, you know!”. ............... 1 1.2 Are you new to PHP? ................................. 2 1.3 Reader prerequisites. Or, what this book isn’t .................... 3 1.4 An important note for Windows and Mac users ................... 3 1.5 About the sample code ................................ 4 1.6 External resources ................................... 4 1.7 Book formats/versions available, and access to updates ............... 5 1.8 English. The Real English. .............................. 5 2 Getting away from the Web - the basics ......................... 6 2.1 PHP without a web server .............................. 6 2.2 PHP versions - what’s yours? ............................. 7 2.3 A few good reasons NOT to do it in PHP ...................... 8 2.4 Thinking about security ...............................
    [Show full text]
  • Analytic Center Cutting Plane Method for Multiple Kernel Learning
    Ann Math Artif Intell DOI 10.1007/s10472-013-9331-4 Analytic center cutting plane method for multiple kernel learning Sharon Wulff · Cheng Soon Ong © Springer Science+Business Media Dordrecht 2013 Abstract Multiple Kernel Learning (MKL) is a popular generalization of kernel methods which allows the practitioner to optimize over convex combinations of kernels. We observe that many recent MKL solutions can be cast in the framework of oracle based optimization, and show that they vary in terms of query point generation. The popularity of such methods is because the oracle can fortuitously be implemented as a support vector machine. Motivated by the success of centering approaches in interior point methods, we propose a new approach to optimize the MKL objective based on the analytic center cutting plane method (accpm). Our experimental results show that accpm outperforms state of the art in terms of rate of convergence and robustness. Further analysis sheds some light as to why MKL may not always improve classification accuracy over naive solutions. Keywords Multiple kernel learning · accpm · Oracle methods · Machine learning Mathematics Subject Classification (2010) 68T05 1 Introduction Kernel methods, for example the support vector machine (SVM), are a class of algorithms that consider only the similarity between examples [1]. A kernel function S. Wulff Department of Computer Science, ETH, Zürich, Switzerland e-mail: [email protected] C. S. Ong (B) NICTA, The University of Melbourne, Melbourne, Australia e-mail: [email protected] S. Wulff, C.S. Ong k implicitly maps examples x to a feature space given by a feature map via the identity k(xi, x j) = (xi), (x j) .
    [Show full text]
  • Python and Epics: Channel Access Interface to Python
    Python and Epics: Channel Access Interface to Python Matthew Newville Consortium for Advanced Radiation Sciences University of Chicago October 12, 2010 http://cars9.uchicago.edu/software/python/pyepics3/ Matthew Newville (CARS, Univ Chicago) Epics and Python October 12, 2010 Why Python? The Standard Answers Clean Syntax Easy to learn, remember, and read High Level Language No pointers, dynamic memory, automatic memory Cross Platform code portable to Unix, Windows, Mac. Object Oriented full object model, name spaces. Also: procedural! Extensible with C, C++, Fortran, Java, .NET Many Libraries GUIs, Databases, Web, Image Processing, Array math Free Both senses of the word. No, really: completely free. Matthew Newville (CARS, Univ Chicago) Epics and Python October 12, 2010 Why Python? The Real Answer Scientists use Python. Matthew Newville (CARS, Univ Chicago) Epics and Python October 12, 2010 All of these tools use the C implementation of Python. NOT Jython (Python in Java) or IronPython (Python in .NET): I am not talking about Jython. Why Do Scientists Use Python? Python is great. The tools are even better: numpy Fast arrays. matplotlib Excellent Plotting library scipy Numerical Algorithms (FFT, lapack, fitting, . ) f2py Wrapping Fortran for Python sage Symbolic math (ala Maple, Mathematica) GUI Choices Tk, wxWidgets, Qt, . Free Python is Free. All these tools are Free (BSD). Matthew Newville (CARS, Univ Chicago) Epics and Python October 12, 2010 Why Do Scientists Use Python? Python is great. The tools are even better: numpy Fast arrays. matplotlib Excellent Plotting library scipy Numerical Algorithms (FFT, lapack, fitting, . ) f2py Wrapping Fortran for Python sage Symbolic math (ala Maple, Mathematica) GUI Choices Tk, wxWidgets, Qt, .
    [Show full text]
  • CS 0449: Introduction to Systems Software
    CS 0449: Introduction to Systems Software Jonathan Misurda Computer Science Department University of Pittsburgh [email protected] http://www.cs.pitt.edu/∼jmisurda Version 3, revision 1 Last modified: July 27, 2017 at 1:33 P.M. Copyright © 2017 by Jonathan Misurda This text is meant to accompany the course CS 0449 at the University of Pittsburgh. Any other use, commercial or otherwise, is prohibited without permission of the author. All rights reserved. Java is a registered trademark of Oracle Corporation. This reference is dedicated to the students of CS 0449, Fall 2007 (2081). Their patience in dealing with a changing course and feedback on the first version of this text was greatly appreciated. Contents Contents i List of Figures v List of Code Listings vii Preface ix 1 Pointers 1 1.1 Basic Pointers . 2 1.1.1 Fundamental Operations . 2 1.2 Passing Pointers to Functions . 4 1.3 Pointers, Arrays, and Strings . 5 1.3.1 Pointer Arithmetic . 6 1.4 Terms and Definitions . 7 2 Variables: Scope & Lifetime 8 2.1 Scope and Lifetime in C . 9 2.1.1 Global Variables . 11 2.1.2 Automatic Variables . 12 2.1.3 Register variables . 13 2.1.4 Static Variables . 13 2.1.5 Volatile Variables . 16 2.2 Summary Table . 17 2.3 Terms and Definitions . 17 ii Contents 3 Compiling & Linking: From Code to Executable 19 3.1 The Stages of Compilation . 19 3.1.1 The Preprocessor . 20 3.1.2 The Compiler . 21 3.1.3 The Linker . 22 3.2 Executable File Formats .
    [Show full text]
  • Installing & Using Cygwin/X
    Installing & Using Cygwin/X Arnon Erba Agricultural & Resource Economics Updated October 24, 2019 Contents 1 Installation 2 1.1 Downloading Cygwin...................................2 1.2 Installing Cygwin.....................................2 2 Usage 3 2.1 Launching the X Server.................................3 2.1.1 Method 1: From Start Menu (Recommended).................3 2.1.2 Method 2: From Cygwin Terminal.......................4 2.2 Opening a Terminal Window...............................4 2.3 Closing the X Server...................................5 3 Troubleshooting6 3.1 Can't read lock file....................................6 3.2 Stdin is not a terminal..................................6 1 Abstract Cygwin is an open-source POSIX-compatible environment for Windows that offers many useful GNU/Linux utilities including an X server. Cygwin's X server allows apps requiring the X Window System to run on Windows. When paired with a suitable SSH client, the Cygwin X server can be used to run graphical (GUI) applications on remote servers over SSH. Though Cygwin offers a large number of packages, only a few are required for Cygwin/X. 1 Installation 1.1 Downloading Cygwin Download the Cygwin installer from www.cygwin.com. The installer is named setup-x86 64.exe. Note: If desired, the original installer can be re-run to add additional packages after installation is complete. 1.2 Installing Cygwin 1. Run the downloaded .exe file and follow the prompts. The default options are recommended, such as: • Install from Internet • Root Directory: C:ncygwin64 • Install For: All Users 2. Choose a download site from the list when prompted. Sites that appear to be US-based may offer faster download times due to geographical proximity.
    [Show full text]