MATLAB External Interfaces  COPYRIGHT 1984 - 2001 by the Mathworks, Inc

Total Page:16

File Type:pdf, Size:1020Kb

MATLAB External Interfaces  COPYRIGHT 1984 - 2001 by the Mathworks, Inc Computation Visualization Programming External Interfaces Version 6 How to Contact The MathWorks: www.mathworks.com Web comp.soft-sys.matlab Newsgroup [email protected] Technical support [email protected] Product enhancement suggestions [email protected] Bug reports [email protected] Documentation error reports [email protected] Order status, license renewals, passcodes [email protected] Sales, pricing, and general information 508-647-7000 Phone 508-647-7001 Fax The MathWorks, Inc. Mail 3 Apple Hill Drive Natick, MA 01760-2098 For contact information about worldwide offices, see the MathWorks Web site. MATLAB External Interfaces COPYRIGHT 1984 - 2001 by The MathWorks, Inc. The software described in this document is furnished under a license agreement. The software may be used or copied only under the terms of the license agreement. No part of this manual may be photocopied or repro- duced in any form without prior written consent from The MathWorks, Inc. FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation by or for the federal government of the United States. By accepting delivery of the Program, the government hereby agrees that this software qualifies as "commercial" computer software within the meaning of FAR Part 12.212, DFARS Part 227.7202-1, DFARS Part 227.7202-3, DFARS Part 252.227-7013, and DFARS Part 252.227-7014. The terms and conditions of The MathWorks, Inc. Software License Agreement shall pertain to the government’s use and disclosure of the Program and Documentation, and shall supersede any conflicting contractual terms or conditions. If this license fails to meet the government’s minimum needs or is inconsistent in any respect with federal procurement law, the government agrees to return the Program and Documentation, unused, to MathWorks. MATLAB, Simulink, Stateflow, Handle Graphics, and Real-Time Workshop are registered trademarks, and Target Language Compiler is a trademark of The MathWorks, Inc. Other product or brand names are trademarks or registered trademarks of their respective holders. Printing History: December 1996 First printing July 1997 Revised for 5.1 (online only) January 1998 Second printing Revised for MATLAB 5.2 October 1998 Third printing Revised for MATLAB 5.3 (Release 11) November 2000 Fourth printing Revised and renamed for MATLAB 6.0 (Release 12) June 2001 Online only Revised for MATLAB 6.1 (Release 12.1) Contents Calling C and Fortran Programs from MATLAB 1 Introducing MEX-Files . 1-3 Using MEX-Files . 1-3 The Distinction Between mx and mex Prefixes . 1-4 MATLAB Data . 1-6 The MATLAB Array . 1-6 Data Storage . 1-6 Data Types in MATLAB . 1-7 Using Data Types . 1-9 Building MEX-Files . 1-11 Compiler Requirements . 1-11 Testing Your Configuration on UNIX . 1-12 Testing Your Configuration on Windows . 1-14 Specifying an Options File . 1-17 Custom Building MEX-Files . 1-20 Who Should Read This Chapter . 1-20 MEX Script Switches . 1-20 Default Options File on UNIX . 1-22 Default Options File on Windows . 1-23 Custom Building on UNIX . 1-24 Custom Building on Windows . 1-26 Troubleshooting . 1-32 Configuration Issues . 1-32 Understanding MEX-File Problems . 1-33 Compiler and Platform-Specific Issues . 1-37 Memory Management Compatibility Issues . 1-37 Additional Information . 1-42 Files and Directories - UNIX Systems . 1-42 Files and Directories - Windows Systems . 1-44 i Examples . 1-46 Technical Support . 1-48 Creating C Language MEX-Files 2 C MEX-Files . 2-3 The Components of a C MEX-File . 2-3 Required Arguments to a MEX-File . 2-5 Examples of C MEX-Files . 2-7 A First Example — Passing a Scalar . 2-7 Passing Strings . 2-11 Passing Two or More Inputs or Outputs . 2-13 Passing Structures and Cell Arrays . 2-16 Handling Complex Data . 2-21 Handling 8-,16-, and 32-Bit Data . 2-23 Manipulating Multidimensional Numerical Arrays . 2-25 Handling Sparse Arrays . 2-29 Calling Functions from C MEX-Files . 2-33 Advanced Topics . 2-37 Help Files . 2-37 Linking Multiple Files . 2-37 Workspace for MEX-File Functions . 2-37 Memory Management . 2-38 Using LAPACK and BLAS Functions . 2-40 Debugging C Language MEX-Files . 2-47 Debugging on UNIX . 2-47 Debugging on Windows . 2-48 ii Contents Creating Fortran MEX-Files 3 Fortran MEX-Files . 3-3 The Components of a Fortran MEX-File . 3-3 The %val Construct . 3-8 Examples of Fortran MEX-Files . 3-9 A First Example — Passing a Scalar . 3-10 Passing Strings . 3-12 Passing Arrays of Strings . 3-14 Passing Matrices . 3-17 Passing Two or More Inputs or Outputs . 3-19 Handling Complex Data . 3-22 Dynamically Allocating Memory . 3-25 Handling Sparse Matrices . 3-28 Calling Functions from Fortran MEX-Files . 3-32 Advanced Topics . 3-36 Help Files . 3-36 Linking Multiple Files . 3-36 Workspace for MEX-File Functions . 3-36 Memory Management . 3-37 Debugging Fortran Language MEX-Files . 3-38 Debugging on UNIX . 3-38 Debugging on Windows . 3-39 Calling MATLAB from C and Fortran Programs 4 Using the MATLAB Engine . 4-3 The Engine Library . 4-3 GUI-Intensive Applications . 4-5 Examples of Calling Engine Functions . 4-6 Calling MATLAB From a C Application . 4-6 iii Calling MATLAB From a Fortran Application . 4-11 Attaching to an Existing MATLAB Session . 4-15 Compiling and Linking Engine Programs . 4-17 Masking Floating-Point Exceptions . 4-17 Compiling and Linking on UNIX . 4-18 Compiling and Linking on Windows . 4-19 Calling Java from MATLAB 5 Using Java from MATLAB: An Overview . 5-3 Java Interface Is Integral to MATLAB . 5-3 Benefits of the MATLAB Java Interface . 5-3 Who Should Use the MATLAB Java Interface . 5-3 To Learn More About Java Programming . 5-3 Platform Support for the Java Virtual Machine . 5-4 Bringing Java Classes into MATLAB . 5-5 Sources of Java Classes . 5-5 Defining New Java Classes . 5-5 Making Java Classes Available to MATLAB . 5-6 Loading Java Class Definitions . 5-7 Simplifying Java Class Names . 5-8 Creating and Using Java Objects . 5-10 Constructing Java Objects . 5-10 Concatenating Java Objects . 5-12 Saving and Loading Java Objects to MAT-Files . 5-14 Finding the Public Data Fields of an Object . 5-15 Accessing Private and Public Data . 5-16 Determining the Class of an Object . 5-17 Invoking Methods on Java Objects . 5-19 Using Java and MATLAB Calling Syntax . ..
Recommended publications
  • C Programming Language Review
    C Programming Language Review Embedded Systems 1 C: A High-Level Language Gives symbolic names to values – don’t need to know which register or memory location Provides abstraction of underlying hardware – operations do not depend on instruction set – example: can write “a = b * c”, even if CPU doesn’t have a multiply instruction Provides expressiveness – use meaningful symbols that convey meaning – simple expressions for common control patterns (if-then-else) Enhances code readability Safeguards against bugs – can enforce rules or conditions at compile-time or run-time Embedded Systems 2 A C Code “Project” • You will use an “Integrated Development Environment” (IDE) to develop, compile, load, and debug your code. • Your entire code package is called a project. Often you create several files to spilt the functionality: – Several C files – Several include (.h) files – Maybe some assembly language (.a30) files – Maybe some assembly language include (.inc) files • A lab, like “Lab7”, will be your project. You may have three .c, three .h, one .a30, and one .inc files. • More will be discussed in a later set of notes. Embedded Systems 3 Compiling a C Program C Source and Entire mechanism is usually called Header Files the “compiler” Preprocessor – macro substitution C Preprocessor – conditional compilation – “source-level” transformations • output is still C Compiler Source Code Compiler Analysis – generates object file Symbol Table Target Code • machine instructions Synthesis Linker – combine object files Library (including libraries) Linker into executable image Object Files Executable Image Embedded Systems 4 Compiler Source Code Analysis – “front end” – parses programs to identify its pieces • variables, expressions, statements, functions, etc.
    [Show full text]
  • Section “Common Predefined Macros” in the C Preprocessor
    The C Preprocessor For gcc version 12.0.0 (pre-release) (GCC) Richard M. Stallman, Zachary Weinberg Copyright c 1987-2021 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation. A copy of the license is included in the section entitled \GNU Free Documentation License". This manual contains no Invariant Sections. The Front-Cover Texts are (a) (see below), and the Back-Cover Texts are (b) (see below). (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. i Table of Contents 1 Overview :::::::::::::::::::::::::::::::::::::::: 1 1.1 Character sets:::::::::::::::::::::::::::::::::::::::::::::::::: 1 1.2 Initial processing ::::::::::::::::::::::::::::::::::::::::::::::: 2 1.3 Tokenization ::::::::::::::::::::::::::::::::::::::::::::::::::: 4 1.4 The preprocessing language :::::::::::::::::::::::::::::::::::: 6 2 Header Files::::::::::::::::::::::::::::::::::::: 7 2.1 Include Syntax ::::::::::::::::::::::::::::::::::::::::::::::::: 7 2.2 Include Operation :::::::::::::::::::::::::::::::::::::::::::::: 8 2.3 Search Path :::::::::::::::::::::::::::::::::::::::::::::::::::: 9 2.4 Once-Only Headers::::::::::::::::::::::::::::::::::::::::::::: 9 2.5 Alternatives to Wrapper #ifndef ::::::::::::::::::::::::::::::
    [Show full text]
  • SIPB's IAP Programming in C
    SIPB’s IAP Programming in C C was developed at AT&T Bell Labs between 1971 and 1973, by Dennis Ritchie. It was derived from an experimental language called B, which itself was a stripped-down version of BCPL. All of these are derivatives of the ALGOL family of languages, dating from the 1950s. This work was done on a PDP-11, a machine with a 16 bit address bus. While a PDP-11 should be able to address up to 64K of memory, these machines only had 24K. The C compiler was written in C, and was able to compile itself on these machines, running under the nascent Unix operating system. #include <stdio.h> main() The classic { printf("hello, world\n"); } /* * %% - a percent sign * %s - a string * %d - 32-bit integer, base 10 * %lld - 64-bit integer, base 10 * %x - 32-bit integer, base 16 * %llx - 64-bit integer, base 16 * %f, %e, %g - double precision * floating point number */ /* * the following should produce: A word on printf() * * printf() test: * string: 'string test' * number: 22 * float: 18.19 */ printf("printf() test:\n" " string: '%s'\n" " number: %d\n" " float: %g\n", "string test", 22, 18.19); Language Structure char i_8; There are five different /* -128 to 127 */ kinds of integer: unsigned char ui_8; /* 0 to 255 */ - char short i_16; - short /* -32768 to 32767 */ unsigned short ui_16; - int /* 0 to 65536 */ int i_32; - long /* -2147483648 to 2147483647 */ unsigned int ui_32; - long long /* 0 to 4294967295U */ long i_arch; unsigned ui_arch; Each of these can be /* architecture either: * dependent */ long long i64; - signed (the default)
    [Show full text]
  • Release 0.11 Todd Gamblin
    Spack Documentation Release 0.11 Todd Gamblin Feb 07, 2018 Basics 1 Feature Overview 3 1.1 Simple package installation.......................................3 1.2 Custom versions & configurations....................................3 1.3 Customize dependencies.........................................4 1.4 Non-destructive installs.........................................4 1.5 Packages can peacefully coexist.....................................4 1.6 Creating packages is easy........................................4 2 Getting Started 7 2.1 Prerequisites...............................................7 2.2 Installation................................................7 2.3 Compiler configuration..........................................9 2.4 Vendor-Specific Compiler Configuration................................ 13 2.5 System Packages............................................. 16 2.6 Utilities Configuration.......................................... 18 2.7 GPG Signing............................................... 20 2.8 Spack on Cray.............................................. 21 3 Basic Usage 25 3.1 Listing available packages........................................ 25 3.2 Installing and uninstalling........................................ 42 3.3 Seeing installed packages........................................ 44 3.4 Specs & dependencies.......................................... 46 3.5 Virtual dependencies........................................... 50 3.6 Extensions & Python support...................................... 53 3.7 Filesystem requirements........................................
    [Show full text]
  • Tinyos Programming Philip Levis and David Gay Frontmatter More Information
    Cambridge University Press 978-0-521-89606-1 - TinyOS Programming Philip Levis and David Gay Frontmatter More information TinyOS Programming Do you need to know how to write systems, services, and applications using the TinyOS operating system? Learn how to write nesC code and efficient applications with this indispensable guide to TinyOS programming. Detailed examples show you how to write TinyOS code in full, from basic applications right up to new low-level systems and high-performance applications. Two leading figures in the development of TinyOS also explain the reasons behind many of the design decisions made and explain for the first time how nesC relates to and differs from other C dialects. Handy features such as a library of software design patterns, programming hints and tips, end-of-chapter exercises, and an appendix summarizing the basic application-level TinyOS APIs make this the ultimate guide to TinyOS for embedded systems programmers, developers, designers, and graduate students. Philip Levis is Assistant Professor of Computer Science and Electrical Engineering at Stanford University. A Fellow of the Microsoft Research Faculty, he is also Chair of the TinyOS Core Working Group and a Member of the TinyOS Network Protocol (net2), Simulation (sim), and Documentation (doc) Working Groups. David Gay joined Intel Research in Berkeley in 2001, where he has been a designer and the principal implementer of the nesC language, the C dialect used to implement the TinyOS sensor network operating system, and its applications. He has a diploma in Computer Science from the Swiss Federal Institute of Technology in Lausanne and a Ph.D.
    [Show full text]
  • A Type-Checking Preprocessor for Cilk 2, a Multithreaded C Language
    A Typechecking Prepro cessor for Cilk a Multithreaded C Language by Rob ert C Miller Submitted to the Department of Electrical Engineering and Computer Science in partial fulllment of the requirements for the degrees of Bachelor of Science in Computer Science and Engineering and Master of Engineering in Electrical Engineering and Computer Science at the Massachusetts Institute of Technology May Copyright Massachusetts Institute of Technology All rights reserved Author ::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::: Department of Electrical Engineering and Computer Science May Certied by ::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::: Charles E Leiserson Thesis Sup ervisor Accepted by ::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::: F R Morgenthaler Chairman Department Committee on Graduate Theses A Typechecking Prepro cessor for Cilk a Multithreaded C Language by Rob ert C Miller Submitted to the Department of Electrical Engineering and Computer Science on May in partial fulllment of the requirements for the degrees of Bachelor of Science in Computer Science and Engineering and Master of Engineering in Electrical Engineering and Computer Science Abstract This thesis describ es the typechecking optimizing translator that translates Cilk a C ex tension language for multithreaded parallel programming into C The CilktoC translator is based on CtoC a to ol I developed that parses type checks analyzes and regenerates a C program With a translator based on CtoC
    [Show full text]
  • Nesc 1.2 Language Reference Manual
    nesC 1.2 Language Reference Manual David Gay, Philip Levis, David Culler, Eric Brewer August 2005 1 Introduction nesC is an extension to C [3] designed to embody the structuring concepts and execution model of TinyOS [2]. TinyOS is an event-driven operating system designed for sensor network nodes that have very limited resources (e.g., 8K bytes of program memory, 512 bytes of RAM). TinyOS has been reimplemented in nesC. This manual describes v1.2 of nesC, changes from v1.0 and v1.1 are summarised in Section 2. The basic concepts behind nesC are: • Separation of construction and composition: programs are built out of components, which are assembled (“wired”) to form whole programs. Components define two scopes, one for their specification (containing the names of their interfaces) and one for their implementation. Components have internal concurrency in the form of tasks. Threads of control may pass into a component through its interfaces. These threads are rooted either in a task or a hardware interrupt. • Specification of component behaviour in terms of set of interfaces. Interfaces may be provided or used by the component. The provided interfaces are intended to represent the functionality that the component provides to its user, the used interfaces represent the functionality the component needs to perform its job. • Interfaces are bidirectional: they specify a set of functions to be implemented by the inter- face’s provider (commands) and a set to be implemented by the interface’s user (events). This allows a single interface to represent a complex interaction between components (e.g., registration of interest in some event, followed by a callback when that event happens).
    [Show full text]
  • C Programming
    C PROGRAMMING 6996 Columbia Gateway Drive Suite 100 Columbia, MD 21046 Tel: 443-692-6600 http://www.umbctraining.com C PROGRAMMING Course # TCPRG3000 Rev. 10/14/2016 ©2016 UMBC Training Centers 1 C PROGRAMMING This Page Intentionally Left Blank ©2016 UMBC Training Centers 2 C PROGRAMMING Course Objectives ● At the conclusion of this course, students will be able to: ⏵ Write non-trivial C programs. ⏵ Use data types appropriate to specific programming problems. ⏵ Utilize the modular features of the C languages. ⏵ Demonstrate efficiency and readability. ⏵ Use the various control flow constructs. ⏵ Create and traverse arrays. ⏵ Utilize pointers to efficiently solve problems. ⏵ Create and use structures to implement new data types. ⏵ Use functions from the C runtime library. ©2016 UMBC Training Centers 3 C PROGRAMMING This Page Intentionally Left Blank ©2016 UMBC Training Centers 4 C PROGRAMMING Table of Contents Chapter 1: Getting Started..............................................................................................9 What is C?..................................................................................................................10 Sample Program.........................................................................................................11 Components of a C Program......................................................................................13 Data Types.................................................................................................................14 Variables.....................................................................................................................16
    [Show full text]
  • Tinyos Programming
    TinyOS Programming Philip Levis and David Gay July 16, 2009 ii Acknolwedgements We’d like to thank several people for their contributions to this book. First is Mike Horton, of Crossbow, Inc., who first proposed writing it. Second is Pablo Guerrero, who gave detailed comments and corrections. Third is Joe Polastre of Moteiv, who gave valable feedback on how to better introduce generic components. Fourth, we’d like to thank Phil’s father, who although he doesn’t program, read the entire thing! Fifth, John Regehr, Ben Greenstein and David Culler provided valuable feedback on this expanded edition. Last but not least, we would like to thank the TinyOS community and its developers. Many of the concepts in this book – power locks, tree routing, and interface type checking – are the work and ideas of others, which we merely present. Chapter 10 of this book is based on: Software design patterns for TinyOS, in ACM Transactions on Embedded Computing Systems (TECS), Volume 6, Issue 4 (September 2007), c ACM, 2007. http://doi.acm.org/10.1145/1274858.1274860 Contents I TinyOS and nesC 1 1 Introduction 3 1.1 Networked, Embedded Sensors . 3 1.1.1 Anatomy of a Sensor Node (Mote) . 4 1.2 TinyOS . 5 1.2.1 What TinyOS provides . 5 1.3 Example Application . 6 1.4 Compiling and Installing Applications . 7 1.5 The rest of this book . 7 2 Names and Program Structure 9 2.1 Hello World! . 9 2.2 Essential Differences: Components, Interfaces and Wiring . 12 2.3 Wiring and Callbacks . 13 2.4 Summary .
    [Show full text]
  • Compiler Information
    Compiler Information ©1995, Intel Corporation Intro • Compilers for Intel Architecture processors have been continuously improved over the past 2-3 years • Application performance has been improved > 25% during this period of time • All improvements have come from processor independent compiler techniques and enhancements Use a “new generation” compiler as a part of your APP development With on-going compiler improvements, there is tremendous benefit to be realized by using the latest compilers in your application development. These can provide performance enhancements for your applications when running on an Intel486™, Pentium®, or P6 processor. Compiler Program Status Versions of Compilers* w/Optimizations including Pentium® Processor Awareness Gen’l Availability – Absoft: Ftn, C for UNIX Now (4/93) – Borland: C/C++ for NT, Win32s, DOS32 Now (Q4’93) – IBM: C/C++ for OS/2 Now (6/93) – Lahey Ftn90 for DOS32 Now – Liant: Ftn, C for UNIX Now – MetaWare: C/C++ for UNIX Now (6/93) – Microsoft: C/C++ for NT, Win32s Now (8/93) – Microsoft: Fortran for NT, Win32s Now (11/93) – SCO: C for SCO UNIX Now (3/93) – SunPro: C/C++, Ftn for Solaris Now (5/93) – USL: C for UNIX SVR4 Now (Q4’92) – WATCOM: C/C++, Ftn for NT, Win32s, Now (6/93) DOS32, OS/2 Most optimizing compilers have been available since Summer ‘93! *other brands and names are property of their respective owners. Above is a quick list of compilers optimized for the Intel Architecture in general (with Pentium® processor awareness built into the code scheduling) over the last 2 years. The first formal release of Proton (Intel’s reference compiler whose purpose is to offer new compiler technology to the industry) was in March ‘93.
    [Show full text]
  • Supported and Compatible Compilers – Release 2020A
    Supported and Compatible Compilers – Release 2020a A number of MathWorks products or product features require that you have a third-party compiler installed on your system. The tables below outline the compilers that are supported by various MathWorks products. These compilers are provided by a number of vendors and are available under a variety of commercial, academic, or open source terms; visit the providers’ websites for further information. Please see Polyspace documentation for the list of compilers that Polyspace supports in the current release. See Supported Interfaces to Other Languages for information about using MATLAB with other programming languages. Windows MinGW is a supported C/C++ compiler which is available free of charge. Download MinGW now. Note: • MinGW will be updated to version 8.3 in a future release. mathworks.com MATLAB Product Family – Release 2020a Fixed Point HDL HDL Audio ROS MATLAB MATLAB Coder GPU Coder SimBiology Designer Coder Verifier Toolbox Toolbox For MEX-file For all features For all features For For For For DPI For For ROS 2 compilation, accelerated accelerated accelerated and TLM validating and custom Compiler loadlibrary, computation computation testbench component generating messages and external simulation generation audio and code usage of plugins generation MATLAB Engine and MAT-file APIs MinGW 6.3 C/C++ (Distributor: mingw-w64) Download Now Available at no charge Microsoft Visual C++ Update 3 Update 5 Update 5 Update 5 Update 5 2019 product family Microsoft Visual C++ 2017 product family11
    [Show full text]
  • The Definitive Guide to GCC
    The Definitive Guide to GCC KURT WALL AND WILLIAM VON HAGEN APress Media, LLC The Definitive Guide to GCC Copyright ©2004 by Kurt Wall and William von Hagen Originally published by Apress in 2004 All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN 978-1-59059-109-3 ISBN 978-1-4302-0704-7 (eBook) DOI 10.1007/978-1-4302-0704-7 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Technical Reviewer: Gene Sally Editorial Board: Steve Anglin, Dan Appleman, Gary Cornell, James Cox, Tony Davis, John Franklin, Chris Mills, Steven Rycroft, Dominic Shakeshaft, Julian Skinner, Martin Streicher, Jim Sumser, Karen Watterson, Gavin Wray, John Zukowski Assistant Publisher: Grace Wong Project Manager: Sofia Marchant Copy Editor: Ami Knox Production Manager: Kari Brooks Production Editor: Janet Vaii Proofreader: Elizabeth Berry Compositor and Artist: Kinetic Publishing Services, llC Indexer: Valerie Perry Cover Designer: Kurt Krames Manufacturing Manager: Tom Debolski The information in this book is distributed on an "as is" hasis, without warranty. Although every precaution bas been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work.
    [Show full text]