Borland C++ Power Programming

Total Page:16

File Type:pdf, Size:1020Kb

Borland C++ Power Programming Borland C++ Power Programming Borland C++ Power Programming Clayton Walnum PROGRAMMING SERIES i SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming Borland C++ Power Programming 1993 by Que Corporation All rights reserved. Printed in the United States of America. No part of this book may be used or reproduced in any form or by any means, or stored in a database or retrieval system, without prior written permission of the publisher except in the case of brief quotations embodied in critical articles and reviews. Making copies of any part of this book for any purpose other than your own personal use is a violation of United States copyright laws. For information, address Que Corporation, 11711 N. College Ave., Carmel, IN 46032. Library of Congress Catalog No.: 93-83382 ISBN: 1-56529-172-7 This book is sold as is, without warranty of any kind, either express or implied, respecting the contents of this book, including but not limited to implied warranties for the book’s quality, performance, merchantability, or fitness for any particular purpose. Neither Que Corporation nor its dealers or distributors shall be liable to the purchaser or any other person or entity with respect to any liability, loss, or damage caused or alleged to be caused directly or indirectly by this book. 96 95 94 93 8 7 6 5 4 3 2 1 Interpretation of the printing code: the rightmost double-digit number is the year of the book’s printing; the rightmost single-digit number, the number of the book’s printing. For example, a printing code of 93-1 shows that the first printing of the book occurred in 1993. Trademarks All terms mentioned in this book that are known to be trademarks or service marks have been appropriately capitalized. Que cannot attest to the accuracy of this information. Use of a term in this book should not be regarded as affecting the validity of any trademark or service mark. Publisher: Lloyd J. Short Associate Publisher: Rick Ranucci Operations Manager: Sheila Cunningham Acquisitions Editor: Joseph B. Wikert ii SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming Dedication To my wife, Lynn, for her love and understanding. iii SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming Credits Title Manager Book Designer Joseph B. Wikert Scott Cook Product Director Cover Designer Jay Munro Jay Corpus Production Editor Graphic Image Specialists Kezia Endsley Jerry Ellis Dennis Sheehan Copy Editors Susan VandeWalle Susan Pink Judy Brunetti Production Team Lori Cates Katy Bodenmiller Julie Brown Technical Editor Laurie Casey Jeffrey D. Clark Brook Farling Editorial Assistants Dennis Clay Hager Elizabeth D. Brown Heather Kaufman Stacey Beheler Bob LaRoche Jay Lesandrini Production Manager Caroline Roop Corinne Walls Linda Seifert Proofreading/Indexing Susan Shepard Coordinator Sandra Shay Joelynn Gifford Phil Worthington Production Analyst Indexer Mary Beth Wakefield Johnna VanHoose Composed in ITC Century Light and MCPdigital by Prentice Hall Computer Publishing. iv SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming About The Author Clayton Walnum has been writing about computers for a decade and has published over 300 articles in major computer publications. He is also the author of 10 books, which cover such diverse topics as programming, computer gaming, and application programs. He lives in Connecticut with his wife and their three children, Christopher, Justin, and Stephen. Acknowledgments I would like to thank the following people for their contribution to this book: Joe Wikert for giving me the project; Jay Munro for his encouragement and invaluable guidance; Kezia Endsley, Susan Pink, Judy Brunetti, and Lori Cates for making the words right; and Jeff Clark for checking the facts. Thanks to Bryan Schappel and Computer Components Inc. of Middleton, Wisconsin for bailing me out when the equipment went bad. Finally, a special thank you is due to some special people—my wife, Lynn, and my three great kids, Christopher, Justin, and Stephen—who make many sacrifices so Dad can do his writing thing. v SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming Overview Introduction . 1 Part I DOS Topics Chapter 1 C++ Style Considerations . 11 Chapter 2 Developing a String Class . 41 Chapter 3 Event-Driven Programming in DOS . 63 Chapter 4 Graphical Controls and Windows for DOS . 91 Chapter 5 Playing with Life . 143 Chapter 6 An Introduction to Recursion . 191 Chapter 7 Using Recursion to Parse Formulas . 229 Chapter 8 Writing Interrupt Handlers and TSR Programs . 259 Part II Windows Topics Chapter 9 Creating Status Bars and Toolbars . 291 Chapter 10 Designing Custom Controls . 345 Chapter 11 Scaling Printer Output . 407 Chapter 12 The Windows Clipboard . 443 Chapter 13 Writing Dynamic Link Libraries . 481 Chapter 14 Using Multimedia Sound with Windows . 501 Chapter 15 Writing Screen Savers for Windows 3.1 . 527 Part III References Appendix A DOS Window Library Quick Reference . 557 Appendix B Detecting Whether a TSR Is Loaded . 569 Index . 579 vi SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming Table of Contents Introduction 1 The New Age . .1 Who This Book Is For . .2 Hardware and Software Requirements . .2 An Overview of the Book . .3 Compiling the Programs in This Book . .5 Conventions Used in This Book . .6 A Word to the Wise . .7 I DOS Topics 1 C++ Style Considerations 11 A Programming History . .12 From Switches to Objects . .12 An Obvious, Yet Brilliant, Solution . .13 A Review of Object-Oriented Programming . .13 Encapsulation . .14 Classes as Data Types . .20 Header Files and Implementation Files . .21 Inheritance . .23 Polymorphism . .26 Classes: From General to Specific . .29 Single-Instance Classes . .34 Responsible Overloading . .36 Overloading Versus Default Arguments . .36 Using Operator Overloading Logically . .37 When to Use Virtual Functions . .39 Conclusion . .40 vii SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming 2 Developing a String Class 41 Designing a String Class . .42 The Components of a String Class . .43 String Construction and Destruction . .47 String Assignments . .48 String Concatenation . .49 String Comparison . .50 String Searches . .51 String Insertion . .52 String Deletion . .53 String Extraction . .54 String Retrieval . .54 Conclusion . .55 3 Event-Driven Programming in DOS 63 What Is an Event-Driven Program? . .64 Developing an Event Handler . .65 Polling for Events . .65 Keyboard Events . .68 Mouse Events . .71 The Complete Mouse Class . .80 The Event Handler . .88 Conclusion . .90 4 Graphical Controls and Windows for DOS 91 Designing the Basic Window . .92 Your Basic Window . .93 Constructing Windw . .94 Destructing Windw . .95 Drawing Windw . .95 Running Windw . .97 Programming the Basic Window . .98 The Captioned Window . .101 Constructing CapWindw . .102 Drawing CapWindw . .103 The Captioned Text Window . .104 Constructing CapTWindw . .105 Drawing CapTWindw . .107 viii SAMS/q3 Borland C++ Power Prog Paula 2-17-93 FM lp7 Borland C++ Power Programming Getting Button Presses . .107 The Button Window . .108 Constructing Button . .109 Drawing Button . .109 Clicking Button . .111 The OK Window . .115 Constructing OKWindw . .116 Destructing OKWindw . .116 Drawing OKWindw . .117 Running OKWindw . .117 The Yes/No and Yes/No/Cancel Windows . .118 The Input Window . .120.
Recommended publications
  • Using Gtkada in Practice
    143 Using GtkAda in Practice Ahlan Marriott, Urs Maurer White Elephant GmbH, Beckengässchen 1, 8200 Schaffhausen, Switzerland; email: [email protected] Abstract This article is an extract from the industrial presentation “Astronomical Ada” which was given at the 2017 Ada-Europe conference in Vienna. The presentation was an experience report on the problems we encountered getting a program written entirely in Ada to work on three popular operating systems: Microsoft Windows (XP and later), Linux (Ubuntu Tahr) and OSX (Sierra). The main problem we had concerned the implementation of the Graphical User Interface (GUI). This article describes our work using GtkAda. Keywords: Gtk, GtkAda, GUI 1 Introduction The industrial presentation was called “Astronomical Ada” because the program in question controls astronomical telescopes. 1.1 Telescopes The simplest of telescopes have no motor. An object is viewed simply by pointing the telescope at it. However, due to the rotation of the earth, the viewed object, unless the telescope is continually adjusted, will gradually drift out of view. To compensate for this, a fixed speed motor can be attached such that when aligned with the Earth’s axis it effectively cancels out the Earth’s rotation. However many interesting objects appear to move relative to the Earth, for example satellites, comets and the planets. To track this type of object the telescope needs to have two motors and a system to control them. Using two motors the control system can position the telescope to view anywhere in the night sky. Our Ada program (SkyTrack) is one such program. It can drive the motors to position the telescope onto any given object from within its extensive database and thereafter Figure 1 - SkyTrack GUI follow the object either by calculating its path or, in the The screen shot shown as figure 1 shows the SkyTrack case of satellites and comets, follow the object according to program positioning the telescope on Mars.
    [Show full text]
  • Embrace and Extend Approach (Red Hat, Novell)
    Integrated Development Environments (IDEs) Technology Strategy Chad Heaton Alice Park Charles Zedlewski Table of Contents Market Segmentation.............................................................................................................. 4 When Does the IDE Market Tip? ........................................................................................... 6 Microsoft & IDEs ................................................................................................................... 7 Where is MSFT vulnerable?................................................................................................. 11 Eclipse & Making Money in Open Source........................................................................... 12 Eclipse and the Free Rider Problem ..................................................................................... 20 Making Money in an Eclipse World?................................................................................... 14 Eclipse vs. Microsoft: Handicapping the Current IDE Environment ................................... 16 Requirements for Eclipse success......................................................................................... 18 2 Overview of the Integrated Development Environment (IDE) Market An Integrated Development Environment (IDE) is a programming environment typically consisting of a code editor, a compiler, a debugger, and a graphical user interface (GUI) builder. The IDE may be a standalone application or may be included as part of one or more existing
    [Show full text]
  • VERSION 2.0 Referene MANUAL
    VERSION 2.0 REFERENe MANUAL BORlAnD INTERNATIONAL Borland International 4113 Scotts Valley Drive Scotts Valley, California 95066 Copyright Notice© This software package and manual are copyrighted 1983, 1984 by BORLAND INTERNATIONAL Inc. All rights reserved worldwide. No part of this publication may be reproduced, transmitted, transcribed, stored in any retrieval system, or translated into any language by any means without the express written per­ mission of BORLAND INTERNATIONAL Inc., 4113 Scotts Valley Drive, Scotts Valley, CA 95066, USA. Single CPU License The price paid for one copy of TURBO Pascal licenses you to use the product on one CPU when and only when you have signed and returned the License Agreement printed in this book. Disclaimer Borland International makes no warranties as to the contents of this manual and specifically disclaims any implied warranties of merchantability or fitness for any particular purpose. Borland International further reserves the right to make changes to the specifications of the program and contents of the manual without obligation to notify any person or organization of such changes. Fifth edition, October 1984 Printed in the United States of America 98765 TABLE OF CONTENTS INTRODUCTION ............................................. 1 The Pascal Language .........................................1 TURBO Pascal ..............................................1 Structure of This Manual ..................................... 2 Typography ............................................... 3 Syntax Descriptions
    [Show full text]
  • Asp Net Core Reference
    Asp Net Core Reference Personal and fatless Andonis still unlays his fates brazenly. Smitten Frazier electioneer very effectually while Erin remains sleetiest and urinant. Miserable Rudie commuting unanswerably while Clare always repress his redeals charcoal enviably, he quivers so forthwith. Enable Scaffolding without that Framework in ASP. API reference documentation for ASP. For example, plan content passed to another component. An error occurred while trying to fraud the questions. The resume footprint of apps has been reduced by half. What next the difference? This is an explanation. How could use the options pattern in ASP. Net core mvc core reference asp net. Architect modern web applications with ASP. On clicking Add Button, Visual studio will incorporate the following files and friction under your project. Net Compact spare was introduced for mobile platforms. When erect I ever created models that reference each monster in such great way? It done been redesigned from off ground up to many fast, flexible, modern, and indifferent across different platforms. NET Framework you run native on Windows. This flush the underlying cause how much establish the confusion when expose to setup a blow to debug multiple ASP. NET page Framework follows modular approaches. Core but jail not working. Any tips regarding that? Net web reference is a reference from sql data to net core reference asp. This miracle the nipple you should get if else do brought for Reminders. In charm to run ASP. You have to swear your battles wisely. IIS, not related to your application code. Re: How to reference System. Performance is double important for us.
    [Show full text]
  • Parallel Rendering Graphics Algorithms Using Opencl
    PARALLEL RENDERING GRAPHICS ALGORITHMS USING OPENCL Gary Deng B.S., California Polytechnic State University, San Luis Obispo, 2006 PROJECT Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in COMPUTER SCIENCE at CALIFORNIA STATE UNIVERSITY, SACRAMENTO FALL 2011 PARALLEL RENDERING GRAPHICS ALGORITHMS USING OPENCL A Project by Gary Deng Approved by: __________________________________, Committee Chair John Clevenger, Ph.D. __________________________________, Second Reader V. Scott Gordon, Ph.D. ____________________________ Date ii Student: Gary Deng I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the Project. __________________________, Graduate Coordinator ________________ Nikrouz Faroughi, Ph.D. Date Department of Computer Science iii Abstract of PARALLEL RENDERING GRAPHICS ALGORITHMS USING OPENCL by Gary Deng The developments of computing hardware architectures are heading in a direction toward parallel computing. Whereas better and faster CPUs used to mean higher clock rates, better and faster CPUs now means more cores per chip. Additionally, GPUs are emerging as powerful parallel processing devices when computing particular types of problems. Computers today have a tremendous amount of varied parallel processing power. Utilizing these different devices typically means wrestling with varied architecture, vendor, or platform specific programming models and code. OpenCL is an open-standard designed to provide developers with a standard interface for programming varied (heterogeneous) parallel devices. This standard allows single source codes to define algorithms to solve vectorized problems on various parallel devices on the same machine. These programs are also portable.
    [Show full text]
  • Adapting MSP to Microsoft C++ ©James T. Smith, 1999 1. Introduction A. General Comments I. Purpose
    Adapting MSP to Microsoft C++ ©James T. Smith, 1999 1. Introduction a. General comments i. Purpose (1) MSP was developed in a PC environment with the original version of Borland C++, then adapted in several stages to Version 5.0, the standard for this book. Many readers, however, prefer to or must use a different compiler. The environment most frequently mentioned that is somewhat close to the book’s is Microsoft’s. This file describes my adaptation of MSP as a suite of Microsoft Visual C++ Win32 Console Applications. (2) It’s an adaptation guide, not a completed product. Most MSP features described in this book work under the adaptation, but it has not been used for further development. With it, you can see how these features work in your Microsoft environment. To use it for a major project, however, you’ll probably want to select only the appropriate MSP modules. You’ll need to test the adaptation much more thoroughly, and probably add minor cor- rections as needed by your specific application. ii. Major differences (1) Microsoft’s complex mathematics module is implemented with templates. That adds more levels of implicit conversions for the compiler to consider when resolving overloaded function declarations. Many more ambiguities would result, and some methods MSP uses to resolve them would no longer work. This would cause so many changes that you’d lose sight of the rest. So the adaptation contains a completely rewritten complex module. (2) Microsoft handles hardware faults, such as overflow detected by the floating-point processor, by throwing“structured exceptions”.
    [Show full text]
  • Experience Report Swiss Ada Event 2017 White Elephant Gmbh
    Astronomical Ada Experience Report Swiss Ada Event 2017 White Elephant GmbH Ada Event 2017 - Astronomicial Ada White Elephant GmbH 1 Experience report on the problems we encountered geng a program wriCen enDrely in Ada to work on three popular PC operang systems: • Windows (WinXp and later) • Linux (Ubuntu Tahr) • OSX (Sierra) Ada Event 2017 - Astronomicial Ada White Elephant GmbH 2 Why Astronomical Ada? Because the program in quesDon controls astronomical telescopes Ada Event 2017 - Astronomicial Ada White Elephant GmbH 3 Background: Whatever you are watching will gradually driX out of view due to the rotaon of the • No Motor Earth When aligned with the Earth’s axis cancels out the driX due to the Earth’s rotaon. • One Motor But some objects move relave to the Earth : Eg. Planets, Comets & Satellites Needs a control system • Two Motors To know what to follow and how to follow it Ada Event 2017 - Astronomicial Ada White Elephant GmbH 4 Star Database What is in the night sky and where SkyTrack Motor Stellarium Control program Controller wriCen in Ada Open source PC A method to control Planetarium telescope motors GUI So it can be told where to go and what to follow Ada Event 2017 - Astronomicial Ada White Elephant GmbH 5 Ada Event 2017 - Astronomicial Ada White Elephant GmbH 6 Originally wriCen for MS-Windows Could it be ported to other operang systems? Majority of code and know-how is not operang system specific so why limit ourselves to Windows? Ada Event 2017 - Astronomicial Ada White Elephant GmbH 7 Should be easy • Tasks are part of the Ada language (doesn’t use OS specific libraries to create threads and protected objects) • Compilers for Windows, Linux and OSX • What the language doesn’t supply is mostly provided by packages that have been implemented on various plaorms.
    [Show full text]
  • AIM104-Software Library
    2192-09193-000-000 AIM104-Software Library Software A Utility Disk is supplied with your AIM104. It contains a host of software utilities designed specifically for each AIM104. Please refer to the README.TXT file on the disk for further information. It also includes a test program EXAMP-01.EXE which may be used to confirm access to the board. Introduction Arcom Control Systems produces a complete range of high quality Input/Output (I/O) cards for the PC104 bus. In order to support these I/O cards as fully as possible a complimentary set of high quality software support products is also available. This software library forms part of the software support. This software support has been developed to support Borland C++ versions 3.1 and 4.52, running on 386 CPUs, Pentium CPUs and Arcom Target boards, in both DOS and Windows operating systems. It is presented to the user in the form of standard static library files. This library can then be incorporated into custom application code giving the user all the software facilities needed to use all the hardware features included on an Arcom PC104 I/O card. This manual contains the basic details of what is contained within this library. For a more detailed description please read the Word 2.0 file genman.doc contained in the DOCS sub-directory of the installation disk or in the DOCS sub-directory of the directory you install to. The list below shows the boards supported within the scope of this library. All commonly used modules are listed, however those that fall outside this list are not supported within this software library.
    [Show full text]
  • Understanding and Using Windows API Calls
    09_bullen.qxd 1/7/05 10:00 AM Page 255 CHAPTER 9 Understanding and Using Windows API Calls In the Programming with the Windows API chapter of our Excel 2002 VBA Programmers Reference, we approached the subject of using Windows API calls by explaining how to locate the definitions for various functions on the MSDN Web site and translate those functions for use in VBA. The idea was to enable readers to browse through the API documentation and use anything of interest they found. In reality, extremely few people use Windows API calls in that manner; indeed, trying to include previously unexplored API calls in our Excel applications is very likely to result in a maintenance problem, because it’s doubtful that another developer will understand what we were trying to do. Instead, most of us go to Google and search the Web or the news- groups for the answer to a problem and find that the solution requires the use of API calls. (Searching Google for “Excel Windows API” results in more than 200,000 Web pages and 19,000 newsgroup posts.) We copy the solution into our application and hope it works, usually without really understanding what it does. This chapter shines a light on many of those solutions, explaining how they work, what they use the API calls for, and how they can be modified to better fit our applications. Along the way, we fill in some of the conceptual framework of common Windows API tech- niques and terminology. By the end of the chapter, you will be comfortable about including API calls in your applications, understand how they work, accept their use in the example applications we develop in this book and be able to modify them to suit your needs.
    [Show full text]
  • Outside in Viewer for Activex Developer's Guide, Release 8.4.1 E12847-05
    Oracle® Outside In Viewer for ActiveX Developer’s Guide Release 8.4.1 E12847-05 May 2013 Oracle Outside In Viewer for ActiveX Developer's Guide, Release 8.4.1 E12847-05 Copyright © 2013 Oracle and/or its affiliates. All rights reserved. Primary Author: Mike Manier This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).
    [Show full text]
  • Creating Objects with Windows Script Component Files
    G Creating Your Own Scriptable Objects Why Create Your Own Objects? Several chapters have been devoted to discussing just a few of the scriptable objects provided with Windows. In this appendix, I show you how to create objects of your own. Why would you want to do this? Well, remember what objects are about:They do a particular job while hiding the details of how the job is actually accomplished. Using this “divide-and-conquer” approach has three advantages: n Faster development and debugging n Simplification of the scripts and programs using objects n Code reusability Let’s look at these advantages one by one. First, when creating a new object, your immediate task is to make sure that the object does what it is supposed to do and that its methods and properties do the right thing.Your coding and debugging job is to write a small program to perform a particular, discrete task, which is easier than writ- ing and debugging a huge script with all the steps necessary to attack some larger job. Second, after your new object has been added to the Windows repertoire and you are writing a script to do some larger maintenance task, you can focus on this larger task without worrying about the details now handled by the object. Because objects are off “somewhere else,” your Windows Script Host (WSH) scripts are smaller and easier to write and debug. 2 Appendix G Creating Your Own Scriptable Objects Third, you can use a new object’s capabilities in many different scripts without repeat- ing the object’s code in each of them.
    [Show full text]
  • Lotus V. Borland: Defining the Limits of Software Copyright Protection Jason A
    Santa Clara High Technology Law Journal Volume 12 | Issue 1 Article 7 January 1996 Lotus v. Borland: Defining the Limits of Software Copyright Protection Jason A. Whong Andrew T. S. Lee Follow this and additional works at: http://digitalcommons.law.scu.edu/chtlj Part of the Law Commons Recommended Citation Jason A. Whong and Andrew T. S. Lee, Lotus v. Borland: Defining the Limits of Software Copyright Protection, 12 Santa Clara High Tech. L.J. 207 (1996). Available at: http://digitalcommons.law.scu.edu/chtlj/vol12/iss1/7 This Case Note is brought to you for free and open access by the Journals at Santa Clara Law Digital Commons. It has been accepted for inclusion in Santa Clara High Technology Law Journal by an authorized administrator of Santa Clara Law Digital Commons. For more information, please contact [email protected]. CASENOTE LOTUS V. BORLAND: DEFINING THE LIMITS OF SOFTWARE COPYRIGHT PROTECTION Lotus Development Corporationv. BorlandInternational, Inc., 49 F.3d 807 (1st Cir. 1995)* Jason A. Whongt and Andrew T.S. Leet TABLE OF CONTENTS INTRODUCTION .............................................. 207 BACKGROUND .............................................. 209 D ISCUSSION ................................................ 211 A. Method of Operation ................................ 211 B. Computer Associates International,Inc. v. Altai, Inc... 215 CONCLUSION ................................................ 216 "[E]verything ... has been done already ... who are we to improve upon them? We can only attempt, respectfally, to repeat."' INTRODUCTION On January 16, 1996, only eight days after hearing oral argu- ments in the case, an equally divided2 Supreme Court let stand the First Circuit's decision in Lotus Development Corp. v. Borland Inter- * Copyright @ 1995 Jason A. Whong and Andrew T.S.
    [Show full text]