dyn dynamic object management

Size: px
Start display at page:

Download "dyn dynamic object management"

Transcription

1 1 dyn dynamic object management Thomas Grill, Vienna September 2004 Abstract dyn 1 is a sketch of a uniform, well-documented programming interface to Pure Data s native object management functionality. It is a generalization of the existing prototypical dyn~ external, seeking to provide a means for simple ad-hoc scripting, poly~-like objects and access for external patcher systems and dynamic signal graph generators. It is accompanied by a Python module enabling access to the dyn interface for usage with the py/pyext external. 1. Introduction Real-time systems like PD 2 or Max/MSP 3 have a patcher -oriented interface, where the user can interactively build up signal and messaging flow by putting functional elements ( objects ) into a document ( patcher ). While this is the most common usage it is often desirable to automate this building process for e.g. duplication and variation of functionality. This is known as scripting. At patcher level, the PD system has built-in scripting facilities 4 making it possible to create objects and interconnect them by sending special messages to the respective patcher. Figure 1 Messages sent to the patcher create the objects on the right 1 Downloadable at 2 Pure Data was written by Miller Puckette and others. See msp/software.html and 3 See 4 See various patches in the folder doc/7.stuff/pd-msg of the PD distribution

2 Looking at the connect message it becomes obvious that it s not always easy to keep track of the object numbering, especially when there s a more complex logic involved for the scripting. In order to delete objects it is possible to simulate mouse-based user interaction by selecting parts and cut them. 2 Figure 2 Deleting objects in the patcher is possible if the position and size is known It s helpful to organize scripted elements in newly created sub-patchers so that numbering starts at zero and it s important to be straight about the positions and spatial extensions the objects will have. However, one has to make sure that object creation can t fail, because there s no way to find out from within the patcher whether they have really been created ok. With this readily available functionality remarkable things can be done 5, but it s limited and programming is an exhaustive task because of much trial and error. From the perspective of an external, there is a variety of ways to create and manage patcher elements. On the one hand, the same message-based communication may be used, though with the same limitations. On the other hand, it s possible to try to do it the way how PD deals with the objects internally. This seems to be straightforward, but there are difficulties: Many of the functions necessary for versatile object management are not laid open, and the same applies to the data structures used for storing vital information about the objects. Though it would be possible to make them accessible, they may be subject to change, hence applications using them would be in danger to be non-portable to further PD versions. This is where dyn comes in it s a plain C API exposing a functionality to deal with PD objects in a comfortable way and across thread boundaries, making it possible to easily create, manage, query and get rid of patcher elements. It s also possible to attach custom information to objects. dyn uses as many information it can get from PD, and where it cannot, it tries to keep track of things itself. When there are non-portable changes to the PD functions used, a workaround can be built into dyn, while applications using the dyn API don t have to worry about it. 2. The API The dyn API has been defined using the standard C programming language to be most compatible, therefore also accessible from all common scripting languages. The dyn.h header file contains the entire interface and is fairly well documented. All API functions return int-typed values, where values >= 0 mean successful execution, while values < 0 are error codes. 5 nqpoly (not-quite-poly) at

3 3 There are functions to retrieve dyn status information, e.g. int dyn_version(); New patcher elements can be created with functions like int dyn_newobject(int sched,dyn_id *id,dyn_callback cb,dyn_id pid,const t_symbol *obj,int argc,const t_atom *argv); int dyn_newmessagestr(int sched,dyn_id *id,dyn_callback cb,dyn_id pid,const char *msg); and sub-patchers with int dyn_newpatcher(int sched,dyn_id *id,dyn_callback cb,dyn_id pid); Obviously, all functionality is centered around the dyn_id type, which serves as a reference to any kind of object dyn is able to handle. These objects fall into two groups: patchable objects like abstractions and sub-patchers, object and message boxes, and other types like connections and listeners. Internally, dyn handles these object types in an object-oriented manner, also making sure that a specific function is valid for that type. The actual type of an object referenced by an ID can be queried with int dyn_gettype(dyn_id id); All kinds of objects can be destroyed by the same function int dyn_free(int sched,dyn_id id); Data pointers can be associated to any ID with int dyn_setdata(dyn_id oid,void *data); and retrieved with int dyn_getdata(dyn_id oid,void **data); An external patcher system could use this to store additional information about the visual appearance of patcher elements or other kinds of things. For most of the functions of the API there is a scheduling parameter 6 which can either have the value DYN_SCHED_NOW, which causes dyn to handle a specific request synchronously, probably also blocking execution if PD is busy, or DYN_SCHED_QUEUE which puts the request into a queue, letting PD handle it when it has the time to do so, or DYN_SCHED_AUTO which adapts the scheduling depending on whether the request has been made from the PD system thread or an external thread. The possibility of scheduling requests goes hand in hand with some complications. For the case of synchronous creation of an object, like with // create a print object on the root canvas dyn_id oid; dyn_newobjectstr(dyn_sched_now,&oid,null,dyn_id_none, print ); 6 for the current implementation status all functions are called synchronously

4 the requested object will have been readily created by PD as soon as the function returns to the caller. This might not be true for queued scheduling. Here, the caller will be notified about the actual creation of an object via a callback function, signalling the point of time the object has come to life. The dyn_id-typed object identifier will be valid and accessible at any time, from the point of return of a creation function up to the moment it is destroyed using the dyn_free function. It may be regarded as a ticket for an object, which allows scheduled requests to be sent although the object itself might not yet be present. Synchronous requests would fail in the latter case, naturally. Patchable objects can be interconnected just as known from interactive patcher design, with int dyn_newconnection(int sched,dyn_id *id,dyn_callback cb,dyn_id sid,int outlet,dyn_id did,int inlet); but can also be sent messages from the outside world with int dyn_send(int sched,dyn_id id,int inlet,const t_symbol *sym,int argc,const t_atom *argv); On the other hand, messages coming from object outlets may be eavesdropped with int dyn_listen(int sched,dyn_id *lid,dyn_id id,int outlet,dyn_listener cb,void *data); Here a special listener object is created which will send the output messages to a callback function of type dyn_listener until it or the associated object is destroyed. It s possible to enumerate the elements of a patcher with int dyn_enumobjects(dyn_id pid,dyn_enumfun fun,void *data); where an enumeration function of type dyn_enumfun will be called for each object, or query some information about patcher elements with e.g. int dyn_getinletcount(dyn_id id); int dyn_getoutlettype(dyn_id id,int outlet); It is also possible to enumerate inlet and outlet connections with e.g. int dyn_enuminletconnections(dyn_id id,int inlet,dyn_enumfun fun,void *data); and retrieve the IDs of connected objects int dyn_getconnectiondrain(dyn_id id,dyn_id *did,int *inlet); 3. Python binding While most future clients using the dyn API will be written in C/C++ for efficiency reasons, it is also useful to have an interface to scripting languages for ad-hoc solutions, experimenting or testing. Since the py/pyext 7 external is readily available it was only logical to write a Python extension module, using the object-oriented PyCXX 8 interface. Creating two objects in a new patcher is as easy as 4 7 Python scripting external for PD, see 8 See

5 5 import dyn patcher = dyn.patcher() object1 = patcher.object("* 2") object2 = patcher.object("print") object1.connect(0,object2,0) with a function to send some data to object1 s leftmost inlet def send(args): object1.send(0,args) # import dyn module # make new patcher # insert * object into patcher # insert print object # connect the two objects # send arguments to inlet of object1 In a PD patcher this short.py script will be used like this: Figure 3 Sending a float to the script will print the doubled value to the PD console The dyn extension module currently defines the methods and dyn.version() dyn.patcher() dyn.object(*args) dyn.message(*args) # retrieve dyn version number # create a patcher at root level # create an object or abstraction at root level # create a message box at root level Each of the latter methods returns an ID object on success, which refers to the above-mentioned dyn_id type. The objects will not be destroyed when the user (with del) or Python s garbage collector deletes the variables. dyn objects will have to be destroyed explicitly with object.free() Other object methods include object.patcher() object.object(*args) object.message(*args) # create sub-patcher # create object or abstraction # create sub-patcher which are only valid for patcher objects. The following methods can be used for all patchable objects: object.inlets() object.outlets() object.inlettype(index) object.outlettype(index) # get number of inlets # get number of inlets object.connect(index,object,index) # connect objects object.send(index,*args) object.listen(index,function) # get inlet type (0 for message, 1 for signal) # get outlet type (0 for message, 1 for signal) # send message to an inlet # receive messages from an outlet More functionality, mirroring all of the dyn API can be added easily.

6 4. Example a poly~ implementation The archive of the dyn Python module distribution contains poly.py which is a pyext-based implementation of a poly~-like object. In a PD patcher it is used like this: 6 Figure 4 a patcher using the poly.py script The pyext object (here in its pyx. incarnation) takes as arguments the filename of the Python script, the number of poly voices, the name of the PD object or abstraction to load along with any additional arguments. Although any PD objects - also DSP-based - can be used with poly.py, the handling of signals is quite awkward, just because the pyext object has no signal capabilities 9. For each signal inlet a recv~ object is created and each signal outlet is given a corresponding throw~ object, which also means that the output of all voices are summed up before catch~. 5. Limitations There is still a lot to learn about the way PD deals with objects and dyn has to become much more efficient, above all in terms of memory usage. Much of the internal dyn object management duplicates data structures that are also present in PD. By the time of this writing dyn still lacks functionality to provide access to signal inlets and outlets, which is necessary for a complete poly~ implementation. 6. Future In principle the dyn interface could also be implemented for Max/MSP, provided the respective Max API functions be disclosed which hasn t been the case yet. An interesting completion would be a system generating signal graphs by the use of a script language, as it is done in SuperCollider. While Supercollider signal objects ( ugens ) have a different architecture than PD objects it would sure be possible to find a feasible formulation for PD too. Ultimately, it s most desirable that PD adopt a comparable native API and render dyn useless. 9 and dyn has no DSP interface functions yet

Introduction. What is Max?

Introduction. What is Max? Introduction What is Max? Max is a graphical music programming environment for people who have hit the limits of the usual sequencer and voicing programs for MIDI equipment. Miller Puckette, Max reference

More information

C++ layer for Pure Data & Max/MSP externals Thomas Grill Vienna, Austria

C++ layer for Pure Data & Max/MSP externals Thomas Grill Vienna, Austria flext C++ layer for Pure Data & Max/MSP externals Thomas Grill Vienna, Austria http://www.parasitaere-kapazitaeten.net Pure Data & Max/MSP Modular real-time frameworks for audio (and video) Pure Data for

More information

Kakadu and Java. David Taubman, UNSW June 3, 2003

Kakadu and Java. David Taubman, UNSW June 3, 2003 Kakadu and Java David Taubman, UNSW June 3, 2003 1 Brief Summary The Kakadu software framework is implemented in C++ using a fairly rigorous object oriented design strategy. All classes which are intended

More information

Use Case 2: Extending object/application to support a new object attribute and a validation for that attribute using either Scripting or Java.

Use Case 2: Extending object/application to support a new object attribute and a validation for that attribute using either Scripting or Java. Overview This use case in this document show how the tooling provided with the products based on Tivoli s process automation engine can help you add value through product extensions and/or integration

More information

Book keeping. Will post HW5 tonight. OK to work in pairs. Midterm review next Wednesday

Book keeping. Will post HW5 tonight. OK to work in pairs. Midterm review next Wednesday Garbage Collection Book keeping Will post HW5 tonight Will test file reading and writing Also parsing the stuff you reads and looking for some patterns On the long side But you ll have two weeks to do

More information

Design Patterns for Real-Time Computer Music Systems

Design Patterns for Real-Time Computer Music Systems Design Patterns for Real-Time Computer Music Systems Roger B. Dannenberg and Ross Bencina 4 September 2005 This document contains a set of design patterns for real time systems, particularly for computer

More information

Outline. Interprocess Communication. Interprocess Communication. Communication Models: Message Passing and shared Memory.

Outline. Interprocess Communication. Interprocess Communication. Communication Models: Message Passing and shared Memory. Eike Ritter 1 Modified: October 29, 2012 Lecture 14: Operating Systems with C/C++ School of Computer Science, University of Birmingham, UK Outline 1 2 3 Shared Memory in POSIX systems 1 Based on material

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Principles of Programming Languages. Objective-C. Joris Kluivers

Principles of Programming Languages. Objective-C. Joris Kluivers Principles of Programming Languages Objective-C Joris Kluivers joris.kluivers@gmail.com History... 3 NeXT... 3 Language Syntax... 4 Defining a new class... 4 Object identifiers... 5 Sending messages...

More information

Slide Set 3. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary

Slide Set 3. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary Slide Set 3 for ENCM 339 Fall 2016 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary September 2016 ENCM 339 Fall 2016 Slide Set 3 slide 2/46

More information

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017 ECE 550D Fundamentals of Computer Systems and Engineering Fall 2017 The Operating System (OS) Prof. John Board Duke University Slides are derived from work by Profs. Tyler Bletsch and Andrew Hilton (Duke)

More information

EE 422C HW 6 Multithreaded Programming

EE 422C HW 6 Multithreaded Programming EE 422C HW 6 Multithreaded Programming 100 Points Due: Monday 4/16/18 at 11:59pm Problem A certain theater plays one show each night. The theater has multiple box office outlets to sell tickets, and the

More information

RFC 003 Event Service October Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none.

RFC 003 Event Service October Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none. Ubiquitous Computing Bhaskar Borthakur University of Illinois at Urbana-Champaign Software Research Group Computer Science Department October 2001 Request for Comments: 0003 Obsoletes: none The Event Service

More information

Embedding Python in Your C Programs

Embedding Python in Your C Programs 1 of 7 6/18/2006 9:05 PM Embedding Python in Your C Programs William Nagel Abstract C, meet Python. Python, this is C. With surprisingly little effort, the Python interpreter can be integrated into your

More information

Operating Systems, Assignment 2 Threads and Synchronization

Operating Systems, Assignment 2 Threads and Synchronization Operating Systems, Assignment 2 Threads and Synchronization Responsible TA's: Zohar and Matan Assignment overview The assignment consists of the following parts: 1) Kernel-level threads package 2) Synchronization

More information

A web-based IDE for Java

A web-based IDE for Java A web-based IDE for Java Software Engineering Laboratory By: Supervised by: Marcel Bertsch Christian Estler Dr. Martin Nordio Prof. Dr. Bertrand Meyer Student Number: 09-928-896 Content 1 Introduction...3

More information

Lecture Topics. Administrivia

Lecture Topics. Administrivia ECE498SL Lec. Notes L8PA Lecture Topics overloading pitfalls of overloading & conversions matching an overloaded call miscellany new & delete variable declarations extensibility: philosophy vs. reality

More information

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001

Utilizing Linux Kernel Components in K42 K42 Team modified October 2001 K42 Team modified October 2001 This paper discusses how K42 uses Linux-kernel components to support a wide range of hardware, a full-featured TCP/IP stack and Linux file-systems. An examination of the

More information

Slide Set 3. for ENCM 339 Fall 2017 Section 01. Steve Norman, PhD, PEng

Slide Set 3. for ENCM 339 Fall 2017 Section 01. Steve Norman, PhD, PEng Slide Set 3 for ENCM 339 Fall 2017 Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary September 2017 ENCM 339 Fall 2017 Section 01

More information

C++11 threads -- a simpler interface than pthreads Examples largely taken from https://latedev.wordpress.com/ 013/02/24/investigating-c11-threads/

C++11 threads -- a simpler interface than pthreads Examples largely taken from https://latedev.wordpress.com/ 013/02/24/investigating-c11-threads/ C++11 threads -- a simpler interface than pthreads Examples largely taken from https://latedev.wordpress.com/ 013/02/24/investigating-c11-threads/ #include #include using namespace

More information

Case studies: Outline Case Study: Noughts and Crosses

Case studies: Outline Case Study: Noughts and Crosses I. Automated Banking System Case studies: Outline Case Study: Noughts and Crosses II. III. Library Noughts and Crosses Definition of the problem Game played on a 3x3 square board between two players. The

More information

Systems Design and Implementation I.4 Naming in a Multiserver OS

Systems Design and Implementation I.4 Naming in a Multiserver OS Systems Design and Implementation I.4 Naming in a Multiserver OS System, SS 2009 University of Karlsruhe 06.5.2009 Jan Stoess University of Karlsruhe The Issue 2 The Issue In system construction we combine

More information

Page 1. Human-computer interaction. Lecture 1b: Design & Implementation. Building user interfaces. Mental & implementation models

Page 1. Human-computer interaction. Lecture 1b: Design & Implementation. Building user interfaces. Mental & implementation models Human-computer interaction Lecture 1b: Design & Implementation Human-computer interaction is a discipline concerned with the design, implementation, and evaluation of interactive systems for human use

More information

A Comparison of Unified Parallel C, Titanium and Co-Array Fortran. The purpose of this paper is to compare Unified Parallel C, Titanium and Co-

A Comparison of Unified Parallel C, Titanium and Co-Array Fortran. The purpose of this paper is to compare Unified Parallel C, Titanium and Co- Shaun Lindsay CS425 A Comparison of Unified Parallel C, Titanium and Co-Array Fortran The purpose of this paper is to compare Unified Parallel C, Titanium and Co- Array Fortran s methods of parallelism

More information

Vector and Free Store (Pointers and Memory Allocation)

Vector and Free Store (Pointers and Memory Allocation) DM560 Introduction to Programming in C++ Vector and Free Store (Pointers and Memory Allocation) Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark [Based on slides

More information

Building on the Globus Python SDK

Building on the Globus Python SDK Building on the Globus Python SDK Stephen Rosen April 11, 2017 SDK Overview The Globus SDK is a client-side library which provides language bindings for entities and methods available via web APIs. SDK

More information

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below: QUIZ 1. Explain the meaning of the angle brackets in the declaration of v below: This is a template, used for generic programming! QUIZ 2. Why is the vector class called a container? 3. Explain how the

More information

CS 498RK FALL RESTFUL APIs

CS 498RK FALL RESTFUL APIs CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources

More information

If Statements, For Loops, Functions

If Statements, For Loops, Functions Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

More information

Best Practices in Programming

Best Practices in Programming Best Practices in Programming from B. Kernighan & R. Pike, The Practice of Programming Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline 1 2 Macros and Comments 3 Algorithms and Data Structures

More information

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming 1. What is object-oriented programming (OOP)? OOP is a technique to develop logical modules, such as classes that contain properties, methods, fields, and events. An object

More information

Control Abstraction. Hwansoo Han

Control Abstraction. Hwansoo Han Control Abstraction Hwansoo Han Review of Static Allocation Static allocation strategies Code Global variables Own variables (live within an encapsulation - static in C) Explicit constants (including strings,

More information

Concurrency. Stefan D. Bruda. Winter 2018

Concurrency. Stefan D. Bruda. Winter 2018 Concurrency Stefan D. Bruda Winter 2018 DOING MORE THINGS SIMULTANEOUSLY Concurrency can be achieved by multiprocessing and time-sharing Best definition for concurrency: apparently simultaneous execution

More information

D Programming Language

D Programming Language Group 14 Muazam Ali Anil Ozdemir D Programming Language Introduction and Why D? It doesn t come with a religion this is written somewhere along the overview of D programming language. If you actually take

More information

BASICS OF THE RENESAS SYNERGY TM

BASICS OF THE RENESAS SYNERGY TM BASICS OF THE RENESAS SYNERGY TM PLATFORM Richard Oed 2018.11 02 CHAPTER 9 INCLUDING A REAL-TIME OPERATING SYSTEM CONTENTS 9 INCLUDING A REAL-TIME OPERATING SYSTEM 03 9.1 Threads, Semaphores and Queues

More information

Accelerated Library Framework for Hybrid-x86

Accelerated Library Framework for Hybrid-x86 Software Development Kit for Multicore Acceleration Version 3.0 Accelerated Library Framework for Hybrid-x86 Programmer s Guide and API Reference Version 1.0 DRAFT SC33-8406-00 Software Development Kit

More information

This is an open book, open notes exam. But no online or in-class chatting.

This is an open book, open notes exam. But no online or in-class chatting. Principles of Operating Systems Fall 2017 Final 12/13/2017 Time Limit: 8:00am - 10:00am Name (Print): Don t forget to write your name on this exam. This is an open book, open notes exam. But no online

More information

Vive Input Utility Developer Guide

Vive Input Utility Developer Guide Vive Input Utility Developer Guide vivesoftware@htc.com Abstract Vive Input Utility is a tool based on the SteamVR plugin that allows developers to access Vive device status in handy way. We also introduce

More information

Using Java for Scientific Computing. Mark Bul EPCC, University of Edinburgh

Using Java for Scientific Computing. Mark Bul EPCC, University of Edinburgh Using Java for Scientific Computing Mark Bul EPCC, University of Edinburgh markb@epcc.ed.ac.uk Java and Scientific Computing? Benefits of Java for Scientific Computing Portability Network centricity Software

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

128 Is Not Enough - Data Structures in Pure Data

128 Is Not Enough - Data Structures in Pure Data 128 Is Not Enough - Data Structures in Pure Data Frank Barknecht GOTO10 Neusser Wall 2 D-50670 Köln, Germany, fbar@footils.org Abstract A lesser known feature of Miller Puckette s popular audio and media

More information

G Programming Languages - Fall 2012

G Programming Languages - Fall 2012 G22.2110-003 Programming Languages - Fall 2012 Lecture 2 Thomas Wies New York University Review Last week Programming Languages Overview Syntax and Semantics Grammars and Regular Expressions High-level

More information

Programming Assignment 3

Programming Assignment 3 UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 3550 Section 002 Communication Networks Spring 2018 Programming Assignment 3 Introduction Having created a TCP client in programming assignment 2, it s

More information

Context Tokens for Parallel Algorithms

Context Tokens for Parallel Algorithms Doc No: P0335R1 Date: 2018-10-07 Audience: SG1 (parallelism & concurrency) Authors: Pablo Halpern, Intel Corp. phalpern@halpernwightsoftware.com Context Tokens for Parallel Algorithms Contents 1 Abstract...

More information

An Incomplete Language Feature

An Incomplete Language Feature N3139=10-0129 Bjarne Stroustrup 9/4/2010 An Incomplete Language Feature Abstract As the draft standard stands, we cannot use -style initialization in default arguments. This paper argues that this is a

More information

CSE 101 Introduction to Computers Development / Tutorial / Lab Environment Setup

CSE 101 Introduction to Computers Development / Tutorial / Lab Environment Setup CSE 101 Introduction to Computers Development / Tutorial / Lab Environment Setup Purpose: The purpose of this lab is to setup software that you will be using throughout the term for learning about Python

More information

What s an API? Do we need standardization?

What s an API? Do we need standardization? Network Interface z The network protocol stack is a part of the OS z Need an API to interface applications to the protocol stack. What s an API? Do we need standardization? z The socket interface is the

More information

Java Internals. Frank Yellin Tim Lindholm JavaSoft

Java Internals. Frank Yellin Tim Lindholm JavaSoft Java Internals Frank Yellin Tim Lindholm JavaSoft About This Talk The JavaSoft implementation of the Java Virtual Machine (JDK 1.0.2) Some companies have tweaked our implementation Alternative implementations

More information

Working with Poly~ in Max

Working with Poly~ in Max Working with Poly~ in Max The poly~ object is the key to efficient use of the CPU in Max work. It is also useful for chores that need a lot of parallel processing of any kind. What is poly~? Think of it

More information

TxWin 5.xx Programming and User Guide

TxWin 5.xx Programming and User Guide TxWin 5.xx Programming and User Guide Jan van Wijk Brief programming and user guide for the open-source TxWin text UI library Presentation contents Interfacing, include files, LIBs The message event model

More information

The Dynamic Typing Interlude

The Dynamic Typing Interlude CHAPTER 6 The Dynamic Typing Interlude In the prior chapter, we began exploring Python s core object types in depth with a look at Python numbers. We ll resume our object type tour in the next chapter,

More information

Runtime. The optimized program is ready to run What sorts of facilities are available at runtime

Runtime. The optimized program is ready to run What sorts of facilities are available at runtime Runtime The optimized program is ready to run What sorts of facilities are available at runtime Compiler Passes Analysis of input program (front-end) character stream Lexical Analysis token stream Syntactic

More information

Appendix B Boost.Python

Appendix B Boost.Python Financial Modelling in Python By S. Fletcher & C. Gardner 2009 John Wiley & Sons Ltd Appendix B Boost.Python The Boost.Python library provides a framework for seamlessly wrapping C++ classes, functions

More information

semidbm Documentation

semidbm Documentation semidbm Documentation Release 0.4.0 James Saryerwinnie Jr September 04, 2013 CONTENTS i ii semidbm is a pure python implementation of a dbm, which is essentially a persistent key value store. It allows

More information

05: A Gentle Introduction to Virtools

05: A Gentle Introduction to Virtools 05: A Gentle Introduction to Virtools Download the archive for this lab Virtools is the part of this course that everyone seems to really hate. This year, we're going to do our best to go over it in several

More information

C SCI The X Window System Stewart Weiss

C SCI The X Window System Stewart Weiss The X Window System The X Window System is a networking and display protocol which provides windowing on bitmapped displays. X provides the basic framework for building GUI environments, such as drawing

More information

5/3/2006. Today! HelloWorld in BlueJ. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont.

5/3/2006. Today! HelloWorld in BlueJ. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. HelloWorld in BlueJ, Cont. Today! Build HelloWorld yourself in BlueJ and Eclipse. Look at all the Java keywords. Primitive Types. HelloWorld in BlueJ 1. Find BlueJ in the start menu, but start the Select VM program instead (you

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module

More information

Java GUI Testing Tools

Java GUI Testing Tools Java GUI Testing Tools Well, this is my take, and while I try to be unbiased, I *am* the author of one of the frameworks. Be sure to take a look at some of the yahoo java-guitesting archives as well; there

More information

377 Student Guide to C++

377 Student Guide to C++ 377 Student Guide to C++ c Mark Corner January 21, 2004 1 Introduction In this course you will be using the C++ language to complete several programming assignments. Up to this point we have only provided

More information

epython An Implementation of Python Enabling Accessible Programming of Micro-Core Architectures Nick Brown, EPCC

epython An Implementation of Python Enabling Accessible Programming of Micro-Core Architectures Nick Brown, EPCC epython An Implementation of Python Enabling Accessible Programming of Micro-Core Architectures Nick Brown, EPCC n.brown@epcc.ed.ac.uk Micro-core architectures Combine many, low power, low cost, low memory

More information

Physically-Based Laser Simulation

Physically-Based Laser Simulation Physically-Based Laser Simulation Greg Reshko Carnegie Mellon University reshko@cs.cmu.edu Dave Mowatt Carnegie Mellon University dmowatt@andrew.cmu.edu Abstract In this paper, we describe our work on

More information

Linux based 3G Multimedia Mobile-phone API Specification

Linux based 3G Multimedia Mobile-phone API Specification Linux based 3G Multimedia Mobile-phone API Specification [AP Framework] Draft 1.0 NEC Corporation Panasonic Mobile Communication Ltd. 1 Contents Preface...4 1. MSB...5 1.1Generating an Object...5 1.2 Destroying

More information

Transparent Access to Legacy Data in Java. Olivier Gruber. IBM Almaden Research Center. San Jose, CA Abstract

Transparent Access to Legacy Data in Java. Olivier Gruber. IBM Almaden Research Center. San Jose, CA Abstract Transparent Access to Legacy Data in Java Olivier Gruber IBM Almaden Research Center San Jose, CA 95120 Abstract We propose in this paper an extension to PJava in order to provide a transparent access

More information

Relational model for information and monitoring

Relational model for information and monitoring Relational model for information and monitoring Steve Fisher, RAL February 26, 2001 1 Introduction The GGF has so far been treating monitoring and other information separately. However a lot of monitoring

More information

Organization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful?

Organization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful? Organization of Programming Languages (CSE452) Instructor: Dr. B. Cheng Fall 2004 1 Why are there so many programming languages? Evolution -- we've learned better ways of doing things over time Socio-economic

More information

CSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0.

CSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0. CSCI0330 Intro Computer Systems Doeppner Lab 02 - Tools Lab Due: Sunday, September 23, 2018 at 6:00 PM 1 Introduction 0 2 Assignment 0 3 gdb 1 3.1 Setting a Breakpoint 2 3.2 Setting a Watchpoint on Local

More information

Table of Contents Introduction: Setup Overview Menus Objects Externals Shortcuts MIDI Core MIDI OMS Ports

Table of Contents Introduction: Setup Overview Menus Objects Externals Shortcuts MIDI Core MIDI OMS Ports MAX Getting Started Table of Contents Introduction: What is Max?........................................................... 3 How To Use The Manuals ; Manual Conventions; ;Other Resources for Max Users

More information

Pointers and Memory 1

Pointers and Memory 1 Pointers and Memory 1 Pointer values Pointer values are memory addresses Think of them as a kind of integer values The first byte of memory is 0, the next 1, and so on A pointer p can hold the address

More information

libsegy Programmer s Reference Manual

libsegy Programmer s Reference Manual libsegy Programmer s Reference Manual Nate Gauntt Last Modified: August 11, 2008 Contents 1 Introduction 2 2 Why Use libsegy? 2 3 Building and Installation 3 3.1 Building C-Library Interface.....................

More information

MRCP. Client Integration Manual. Developer Guide. Powered by Universal Speech Solutions LLC

MRCP. Client Integration Manual. Developer Guide. Powered by Universal Speech Solutions LLC Powered by Universal Speech Solutions LLC MRCP Client Integration Manual Developer Guide Revision: 37 Last updated: May 20, 2017 Created by: Arsen Chaloyan Universal Speech Solutions LLC Overview 1 Table

More information

G52CPP C++ Programming Lecture 3. Dr Jason Atkin

G52CPP C++ Programming Lecture 3. Dr Jason Atkin G52CPP C++ Programming Lecture 3 Dr Jason Atkin E-Mail: jaa@cs.nott.ac.uk 1 Revision so far C/C++ designed for speed, Java for catching errors Java hides a lot of the details (so can C++) Much of C, C++

More information

Performance Evaluation

Performance Evaluation Performance Evaluation Chapter 4 A Complicated Queuing System (Acknowledgement: These slides have been prepared by Prof. Dr. Holger Karl) 1 Goal of this chapter! Understand implementation issues and solutions

More information

Programming Robots with ROS, Morgan Quigley, Brian Gerkey & William D. Smart

Programming Robots with ROS, Morgan Quigley, Brian Gerkey & William D. Smart Programming Robots with ROS, Morgan Quigley, Brian Gerkey & William D. Smart O Reilly December 2015 CHAPTER 23 Using C++ in ROS We chose to use Python for this book for a number of reasons. First, it s

More information

Cross-platform daemonization tools.

Cross-platform daemonization tools. Cross-platform daemonization tools. Release 0.1.0 Muterra, Inc Sep 14, 2017 Contents 1 What is Daemoniker? 1 1.1 Installing................................................. 1 1.2 Example usage..............................................

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 4a Andrew Tolmach Portland State University 1994-2016 Pragmatics of Large Values Real machines are very efficient at handling word-size chunks of data (e.g.

More information

Educational Fusion. Implementing a Production Quality User Interface With JFC

Educational Fusion. Implementing a Production Quality User Interface With JFC Educational Fusion Implementing a Production Quality User Interface With JFC Kevin Kennedy Prof. Seth Teller 6.199 May 1999 Abstract Educational Fusion is a online algorithmic teaching program implemented

More information

Chapter 17 vector and Free Store

Chapter 17 vector and Free Store Chapter 17 vector and Free Store Bjarne Stroustrup www.stroustrup.com/programming Overview Vector revisited How are they implemented? Pointers and free store Allocation (new) Access Arrays and subscripting:

More information

OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT

OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT OPERATING SYSTEMS ASSIGNMENT 3 MEMORY MANAGEMENT Introduction Memory management and memory abstraction is one of the most important features of any operating system. In this assignment we will examine

More information

Step-by-step guide to dubbing (ADR) in Audacity

Step-by-step guide to dubbing (ADR) in Audacity Step-by-step guide to dubbing (ADR) in Audacity Step 1: Starting out Open the.mp4 movie file you want to dub (open as in any other program: File > Open) The.mp4 file can already have hard coded subtitles

More information

A THREAD IMPLEMENTATION PROJECT SUPPORTING AN OPERATING SYSTEMS COURSE

A THREAD IMPLEMENTATION PROJECT SUPPORTING AN OPERATING SYSTEMS COURSE A THREAD IMPLEMENTATION PROJECT SUPPORTING AN OPERATING SYSTEMS COURSE Tom Bennet Department of Computer Science Mississippi College Clinton, MS 39058 601 924 6622 bennet@mc.edu ABSTRACT This paper describes

More information

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1 Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies

More information

Lab 4. Out: Friday, February 25th, 2005

Lab 4. Out: Friday, February 25th, 2005 CS034 Intro to Systems Programming Doeppner & Van Hentenryck Lab 4 Out: Friday, February 25th, 2005 What you ll learn. In this lab, you ll learn to use function pointers in a variety of applications. You

More information

Chapter 17 vector and Free Store

Chapter 17 vector and Free Store Chapter 17 vector and Free Store Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/~hkaiser/fall_2010/csc1253.html Slides adapted from: Bjarne Stroustrup, Programming Principles and Practice using

More information

This video is part of the Microsoft Virtual Academy.

This video is part of the Microsoft Virtual Academy. This video is part of the Microsoft Virtual Academy. 1 In this session we re going to talk about building for the private cloud using the Microsoft deployment toolkit 2012, my name s Mike Niehaus, I m

More information

Chapter 17 vector and Free Store. Bjarne Stroustrup

Chapter 17 vector and Free Store. Bjarne Stroustrup Chapter 17 vector and Free Store Bjarne Stroustrup www.stroustrup.com/programming Overview Vector revisited How are they implemented? Pointers and free store Allocation (new) Access Arrays and subscripting:

More information

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005 Wrapping a complex C++ library for Eiffel FINAL REPORT July 1 st, 2005 Semester project Student: Supervising Assistant: Supervising Professor: Simon Reinhard simonrei@student.ethz.ch Bernd Schoeller Bertrand

More information

Concurrent Programming in C++ Venkat

Concurrent Programming in C++ Venkat Concurrent Programming in C++ Venkat Subramaniam venkats@agiledeveloper.com @venkat_s Platform Neutral The standard concurrency model makes it possible to write portable concurrent code Level of Concurrency

More information

SQL for Palm Zhiye LIU MSc in Information Systems 2002/2003

SQL for Palm Zhiye LIU MSc in Information Systems 2002/2003 Zhiye LIU MSc in Information Systems 2002/2003 The candidate confirms that the work submitted is their own and the appropriate credit has been given where reference has been made to the work of others.

More information

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2018 Lecture 20

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2018 Lecture 20 CS24: INTRODUCTION TO COMPUTING SYSTEMS Spring 2018 Lecture 20 LAST TIME: UNIX PROCESS MODEL Began covering the UNIX process model and API Information associated with each process: A PID (process ID) to

More information

LHCb Conditions Database Graphical User Interface

LHCb Conditions Database Graphical User Interface LHCb Conditions Database Graphical User Interface Introduction v0r3 This document is a description of the current features of the coolui program which allows to browse and edit a conditions database. It

More information

Wir schaffen Wissen heute für morgen

Wir schaffen Wissen heute für morgen Wir schaffen Wissen heute für morgen The MEXperience, Getting to Grips with MATLAB Executable Files Jan Chrin Paul Scherrer Institut Contents Motivation Context of SwissFEL Injector Test Facility (2010-2014)

More information

Slide Set 4. for ENCM 335 in Fall Steve Norman, PhD, PEng

Slide Set 4. for ENCM 335 in Fall Steve Norman, PhD, PEng Slide Set 4 for ENCM 335 in Fall 2018 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary September 2018 ENCM 335 Fall 2018 Slide Set 4 slide

More information

Building and Testing Packages with the Workbench

Building and Testing Packages with the Workbench Chapter 2 Building and Testing Packages with the Workbench The Scribe Workbench is where the development of your solutions will be performed. All mapping and connections to source and target data are done

More information

Compositional C++ Page 1 of 17

Compositional C++ Page 1 of 17 Compositional C++ Page 1 of 17 Compositional C++ is a small set of extensions to C++ for parallel programming. OVERVIEW OF C++ With a few exceptions, C++ is a pure extension of ANSI C. Its features: Strong

More information

Process Scheduling with Job Scheduler

Process Scheduling with Job Scheduler Process Scheduling with Job Scheduler On occasion it may be required to start an IBPM process at configurable times of the day or week. To automate this task, a scheduler must be employed. Scheduling is

More information

Sample Copy. Not for Distribution.

Sample Copy. Not for Distribution. A Practical Approach to Learn JAVA i EDUCREATION PUBLISHING RZ 94, Sector - 6, Dwarka, New Delhi - 110075 Shubham Vihar, Mangla, Bilaspur, Chhattisgarh - 495001 Website: www.educreation.in Copyright, 2018,

More information

Design Patterns. (and anti-patterns)

Design Patterns. (and anti-patterns) Design Patterns (and anti-patterns) Design Patterns The Gang of Four defined the most common object-oriented patterns used in software. These are only the named ones Lots more variations exist Design Patterns

More information

Structure of Programming Languages Lecture 10

Structure of Programming Languages Lecture 10 Structure of Programming Languages Lecture 10 CS 6636 4536 Spring 2017 CS 6636 4536 Lecture 10: Classes... 1/23 Spring 2017 1 / 23 Outline 1 1. Types Type Coercion and Conversion Type Classes, Generics,

More information

Topic Notes: Message Passing Interface (MPI)

Topic Notes: Message Passing Interface (MPI) Computer Science 400 Parallel Processing Siena College Fall 2008 Topic Notes: Message Passing Interface (MPI) The Message Passing Interface (MPI) was created by a standards committee in the early 1990

More information