You are on page 1of 42

Resourceful Code Reuse 1st Edition

Dmitry Zinoviev
Visit to download the full and correct content document:
https://textbookfull.com/product/resourceful-code-reuse-1st-edition-dmitry-zinoviev/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Data Science Essentials in Python Collect Organize


Explore Predict Value 1st Edition Dmitry Zinoviev

https://textbookfull.com/product/data-science-essentials-in-
python-collect-organize-explore-predict-value-1st-edition-dmitry-
zinoviev/

Wastewater treatment and reuse : theory and design


examples. Volume 2, Post-treatment, reuse, and disposal
1st Edition Qasim

https://textbookfull.com/product/wastewater-treatment-and-reuse-
theory-and-design-examples-volume-2-post-treatment-reuse-and-
disposal-1st-edition-qasim/

Quantum effects in tribology 1st Edition Dmitry


Nikolaevich Lyubimov

https://textbookfull.com/product/quantum-effects-in-
tribology-1st-edition-dmitry-nikolaevich-lyubimov/

The Zinoviev Letter: The Conspiracy That Never Dies


Gill Bennett

https://textbookfull.com/product/the-zinoviev-letter-the-
conspiracy-that-never-dies-gill-bennett/
Reuse in Intelligent Systems 1st Edition Stuart H Rubin
(Editor)

https://textbookfull.com/product/reuse-in-intelligent-
systems-1st-edition-stuart-h-rubin-editor/

Azure Data Factory Cookbook - Second Edition Dmitry


Foshin

https://textbookfull.com/product/azure-data-factory-cookbook-
second-edition-dmitry-foshin/

2018 International Building Code 1st Edition


International Code Council

https://textbookfull.com/product/2018-international-building-
code-1st-edition-international-code-council/

Wastewater Treatment and Reuse in the Food Industry 1st


Edition Marcella Barbera

https://textbookfull.com/product/wastewater-treatment-and-reuse-
in-the-food-industry-1st-edition-marcella-barbera/

Rescue and Reuse Communities Heritage and Architecture


1st Edition Ian Morrison (Author)

https://textbookfull.com/product/rescue-and-reuse-communities-
heritage-and-architecture-1st-edition-ian-morrison-author/
Resourceful Code Reuse
Write → Compile → Link → Run
by Dmitry Zinoviev

Version: P1.0 (April 2021)


Copyright © 2021 The Pragmatic Programmers, LLC. This book is licensed to the
individual who purchased it. We don't copy-protect it because that would limit your
ability to use it for your own purposes. Please don't break this trust—you can use this
across all of your devices but please do not share this copy with other members of your
team, with friends, or via file sharing services. Thanks.

Many of the designations used by manufacturers and sellers to distinguish their


products are claimed as trademarks. Where those designations appear in this book, and
The Pragmatic Programmers, LLC was aware of a trademark claim, the designations
have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit,
The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the
linking g device are trademarks of The Pragmatic Programmers, LLC.

Every precaution was taken in the preparation of this book. However, the publisher
assumes no responsibility for errors or omissions, or for damages that may result from
the use of information (including program listings) contained herein.
About the Pragmatic Bookshelf
The Pragmatic Bookshelf is an agile publishing company. We’re here because we want
to improve the lives of developers. We do this by creating timely, practical titles, written
by programmers for programmers.

Our Pragmatic courses, workshops, and other products can help you and your team
create better software and have more fun. For more information, as well as the latest
Pragmatic titles, please visit us at http://pragprog.com.

Our ebooks do not contain any Digital Restrictions Management, and have always been
DRM-free. We pioneered the beta book concept, where you can purchase and read a
book while it’s still being written, and provide feedback to the author to help make a
better book for everyone. Free resources for all purchasers include source code
downloads (if applicable), errata and discussion forums, all available on the book's
home page at pragprog.com. We’re here to make your life easier.

New Book Announcements


Want to keep up on our latest titles and announcements, and occasional special offers?
Just create an account on pragprog.com (an email address and a password is all it
takes) and select the checkbox to receive newsletters. You can also follow us on twitter
as @pragprog.

About Ebook Formats


If you buy directly from pragprog.com, you get ebooks in all available formats for one
price. You can synch your ebooks amongst all your devices (including iPhone/iPad,
Android, laptops, etc.) via Dropbox. You get free updates for the life of the edition. And,
of course, you can always come back and re-download your books when needed.
Ebooks bought from the Amazon Kindle store are subject to Amazon's polices.
Limitations in Amazon's file format may cause ebooks to display differently on different
devices. For more information, please see our FAQ at pragprog.com/#about-ebooks. To
learn more about this book and access the free resources, go to
https://pragprog.com/book/dzreuse, the book's homepage.

Thanks for your continued support,

Andy Hunt
The Pragmatic Programmers

The team that produced this book includes: Dave Rankin (CEO),
Janet Furlow (COO), Tammy Coron (Managing Editor),
Adaobi Obi Tulton (Development Editor), Corina Lebegioara (Copy Editor),
Andy Hunt and Dave Thomas (Founders)

For customer support, please contact support@pragprog.com.

For international rights, please contact rights@pragprog.com.


Table of Contents

Acknowledgments

Preface
About the Reader
About the Book
About the Software

Introduction: Why Reuse Code?


C vs. Python
Running Example

1. Reuse Code at Compile Time (C and


Python)
Arranging Source and Header Files (the C Way)
Modularizing Code (the Python Way)

2. Reuse Code at Link Time (C Only)


Compiling Object Files
Building Static Libraries
Building Dynamic Libraries

3. Reuse Code at Runtime (C and Python)


Harnessing Dynamic Loading
Getting a Taste of Remote Procedure Calls

Bibliography

Copyright © 2021, The Pragmatic Bookshelf.


Early Praise for Resourceful
Code Reuse
Resourceful Code Reuse offers readers a quick way to understand
how code is compiled and linked using the C language within the
modern context of consuming and processing JSON.

→ Mike Riley
President, Ingenious Solutions, Inc.
Every developer should know about the concepts described in this
book. Even if you don’t use C and Python in your daily work, you will
learn something about software development and how to reuse
code.

→ Dominik Hauser
Author of Build Location-Based Projects for iOS
Everyone can code, but writing beautiful code requires code reuse
skills. Whether you are starting coding or you have broad
experience, this book offers a practical guide that allows you to
optimize your code by applying code reuse techniques.

→ Jose Arturo Mora Soto


Senior Curriculum Engineer, 2U Inc.
Acknowledgments
This is my second book edited by Adaobi Obi Tulton and, just like the
first book, it would not be possible without her enthusiasm,
dedication, and highest professionalism. Thank you, Adaobi.

I am grateful to my reviewers (in alphabetical order): Ludovico


Fischer, Dominik Houser, Andy Lester, Mike Riley, Jose Arturo Mora
Soto, and Ilya Usvyatsky. Their criticism was refreshening and
energizing. Their reviews greatly improved the structure, usability,
and style of the book. Thank you, reviewers.

My wife, Anna; my children, Eugenia and Roman; my colleagues


from Suffolk University (especially Pelin Bicen) and my friends
(especially Dmitry and Tanya Cherevik) provided much-needed
emotional support. Thank you, my supporters.

Last but not least, I am grateful to Desbenoit


https://thenounproject.com/term/reuse/6786/ for the royalty-free
image here.

Copyright © 2021, The Pragmatic Bookshelf.


Preface
I took my first and only academic course in software engineering in
the fall of 1994. The course was taught by Professor Peter
Henderson, who had spent a quarter of a century at Stony Brook
University and retired shortly after my graduation. The course was
taught in Smalltalk, the mother of all object-oriented languages, and
was undeniably excellent. Sadly, I have never had another chance to
write a line of code in Smalltalk and barely remember what it looked
like.

What I do remember is the mantra that Professor Henderson recited


over and over again, until it got imprinted into my mind, from the
top of my head to my fingertips: “Thou shalt use make files and
reuse your code.” Ever since, I’ve started every new non-trivial
project by writing a makefile and spending a ridiculous amount of
time dissecting the job into potentially reusable units. In this book, I
want to share with you my passion for code reuse and code
organization and the skills that support that passion.
About the Reader
This book is mainly intended for beginner through intermediate
software developers in C and, to a much lesser extent, in Python,
who want to achieve higher productivity, better code quality, and
more flexible and adaptable products by reusing and organizing
previously written code. Experience with command-line software
development tools is helpful but not required.
About the Book
After the mandatory introduction that sets the scene for the story,
the book goes over three stages of small project development:
editing (producing the project’s text in a programming language),
compiling (converting the text into object files with machine code),
and linking (combining the pre-compiled object files into one
executable program file). Any unit produced at any stage can be
reused and shared at a later stage, including the runtime when there
is no more development. The rest of the book is organized into three
chapters focused on these topics: compile-time reuse, link-time
reuse, and runtime reuse.

I tried to keep the chapters as independent as possible but still


ended up with some backward and forward references. The forward
references are not so essential for understanding the material, but if
you open the book in the middle and come across a backward
reference that you do not recognize, I strongly suggest visiting it.
About the Software
To compile and run the C examples mentioned in the book, you need
a decent C compiler (gcc is the best, but Intel and Microsoft would
probably work, too) and a set of C development tools: maker (make),
linker (ld), file, strip, ldd, and ranlib. The GNU development toolset
works marvels; other toolsets may or may not work. All examples in
the book have been tested on a Linux computer but will most likely
work on macOS.

For the Python examples, a Python-3.x interpreter (python) is all you


want. No third-party modules are required.

Shall we start?

Dmitry Zinoviev
mailto:dzinoviev@gmail.com
February 2021

Copyright © 2021, The Pragmatic Bookshelf.


Introduction: Why Reuse
Code?
Despite its name, modern computer science isn’t just a science—it’s
also a 200-year-old arcane art, if we accept Charles Babbage as the
first theoretical computer scientist. It comes loaded with legends,
anecdotes, apocrypha, unwritten rules, and other words of wisdom.
One example is the proudly found elsewhere (PFE) or invented
elsewhere (IE) predisposition: if the wheel has been already
invented, you shouldn’t design it again without a strong reason but
reuse the existing design. PFE/IE is a special case of the more
general philosophical Occam’s razor principle: entities shouldn’t be
multiplied without necessity.

As far as this book is concerned, both Occam’s razor and PFE/IE


apply to a simple concept: you should write a large code fragment
only if you or someone else hasn’t written that code fragment
before. If the fragment has been written, use it again—reuse it.

Several reasons exist for code reuse:

1. Code reuse puts into practice the advice of none other than
William of Occam (or Ockham, depending on whom you ask). If
you and I were philosophers, that alone would suffice.

2. Code reuse improves your productivity. Code fragments that you


develop to deal with frequently occurring tasks (for example,
reading from and writing to JSON files or supporting
heterogeneous arrays and maps) become parts of your
programming portfolio. You can readily incorporate them into
your new projects, most likely bypassing the unit testing stage.
Third-party libraries (for example, libjson) are usually even more
powerful and more reliable. Ideally, you’d like to build your new
program out of existing pieces with as little new code of your
own as possible.
3. Code reuse improves software quality. A reuseable code unit
that has been a part of another project must have been
thoroughly debugged and tested in the past. It never hurts to
test it again, but at least you can expect to have a good
baseline.

4. Code reuse improves software configurability. Runtime code


reuse techniques from Chapter 3, ​Reuse Code at Runtime (C
and Python)​, allow your program to postpone deciding what
code to use until the program runs. You can develop a skeletal
program (a framework) with slots for future code fragments to
be filled as needed. In a sense, you get a program that may
configure itself or be configured by the user on the fly.

You can reuse code in many ways and at many stages. This book
will explain how to reuse your source code (the program’s text
written in a human-readable programming language, such as C or
Python) in Chapter 1, Reuse Code at Compile Time (C and Python)​.
You’ll learn how to speed up program build time and avoid disclosing
the source code (if desirable) by creating object files and libraries in
Chapter 2, ​Reuse Code at Link Time (C Only)​. Finally, in Chapter 3, ​
Reuse Code at Runtime (C and Python)​, you’ll learn how to
physically separate the proper program code and the reusable
fragments and either bind them when the program runs (​Harnessing
Dynamic Loading​) or not bind them at all and instead use a network
communication protocol to request services and obtain results (​
Getting a Taste of Remote Procedure Calls​). Incidentally, the latter
form of reuse makes your code available to both your own programs
and any other programs you authorize.
C vs. Python
You’ll see that C and Python software each require different code
reuse techniques.

C programs are usually compiled—they’re converted into files that


contain native CPU instructions with little or no “memory” of the
original development language. These converted files are relatively
language-agnostic and can be combined with other files developed
in other compiled programming languages (such as C++ or Rust). It
makes sense then to organize them into libraries for further reuse.

Python programs are usually interpreted by an interpreter or byte-


compiled—they’re converted into files that contain instructions for a
virtual machine. These converted files have more limited reusability,
get along only with other Python files, and often have to be byte-
compiled again before reuse. This limitation makes building complex
shared Python libraries impractical.
Running Example
Throughout the book, I’ll show you how to reuse code written mostly
in the C language and occasionally in Python. For that, we’re going to
need a running example. We’ll start with a program in C that isn’t
necessarily unstructured, cluttered, or hard to maintain, but it’s also
not designed to be reused in the future. We’ll slice, dice, and even
tear this program apart and put it on different computers to make the
code more reusable.

Interestingly, you don’t even need to know anything about the


problem that the program solves to understand the reuse
mechanisms. A differential equation solver is as good as a web
browser, which, in turn, is as good as a program that controls a
unicorn feeder. So, let’s pick a common problem that has been
automated time and again: a program that reads the content of a
JSON file into a C or Python data structure, modifies it somehow, and
writes the modified data structure to another JSON file.

A Note on JSON
The name “JavaScript Object Notation” (JSON) is misleading in almost every
aspect. For starters, JavaScript itself may have more in common with Java
coffee than Java language, but that’s not JSON’s fault. Second, JSON was
designed to work with JavaScript, but now it’s used as a programming
language--agnostic data exchange language and isn’t attached to JavaScript
anymore. Third, JSON doesn’t describe objects as we know them in OOP.
JSON supports the following data types (with the C and Python equivalents
shown in parentheses):

null (NULL, None)

Booleans: true (1, True) and false (0, False)

Numbers (same as in C and Python)


All Things Static
The static keyword, when applied to a local variable,
means something entirely different. A static variable in a
function preserves its value after it goes out of scope
(when the enclosing function exits or calls another
function or itself recursively). The following little function
implements a self-contained up-counter. Every time you
call it, it increments the embedded static counter count
and returns its new value.

counter.c

​ ​unsigned​​counter​() {
​ ​static​​unsigned​count = 0;
​ ​return​++count;
​ }

As in the case of global variables, the static keyword


protects count from any external access. But the main
benefit of static in this context is that count isn’t initialized
every time you call the function. That’s what makes
counting possible.

Now that you know how to hide code components, let’s find out how
to expose them across file boundaries.

Creating a Header File


When a compiler compiles myjsontool.c or json_syntax.c, it needs to be
aware that the former depends on the latter and both depend,
implicitly or explicitly, on json_tokens.c. The compiler needs to know
the definitions of the data structures from those files. It also needs to
Another random document with
no related content on Scribd:
Pettit, John, 29n
Peters, Mrs., 186
Phillips, John, 7
Phillips Rents, 7
Pickering, Joseph, 84
Pierrepoint, Lady Anne, 91
Pierrepont, Lady Mary (afterwards Lady Mary Wortley Montagu), 89
Pillar at Seven Dials, 113–114
Pindar, Peter (Dr. Wolcot), 83
Piozzi, Mrs., 85
Plowden, —, 71
Plumer, John, 21n
Pole, —, 165
Pole, Peter, 180
Pollard, Eliz., 83
Polton, John de, 109
Pont, Mrs., 71
Pope, Thos., 83
Popham, Colonel Alexander, 73
Port of London, scheme for improving, 187
Porter, Endymion, 88
Porter, George, 88
Porter, Lady Diana (Ann), 88
Porter, T. C., 185
Portsmouth, Duchess of (formerly Mdlle. de Keroualle), 54
Portsmouth Street, No. 2, 46
Portuguese Embassy, 65–66, 96, 97
Pound, St. Giles’, 144
Povey, Justinian, 12
Povey, Thomas, 11, 12
Powell, Giles, 106n
Powell, Richard, 36n
Powlet, Lady Ann (afterwards Belasyse), 137
Powlett, Charles, Earl of Wiltshire (afterwards Duke of Bolton), 65
Praed, Wm. Mackworth, 11
Prescott, Jeoffery, 35n, 37n, 40n
Princes Street, 10
Pritchard, —, 56
Pritchard, William, 90
Purcell, Dr. John, 142
Purse Field, 4, 6, 10, 24, 34
Purse Rents, 5, 7
Pynchon, John, 11n
“Pyramide de la Tremblade”, 115

Queen Anne Street West, 58


Queen Anne’s Bath, Endell Street, 105
Queen Anne’s Bounty, 76
Queen Anne’s Wardrobe, 45n, 66
Queenhithe, 117
Queen’s Court, 60
Queen Street. (See Great Queen Street, Little Queen Street.)
Quire, Matthew, 107
Radcliffe, Dr., 56
Radclyff, Thomas, 124
Raftor, William, 71
Ragged Staff Court, 108
Ralph, James, 131
Rawlinson, Mary, 106n, 108n
Raye, Thomas, 60n
Raymond, Ch., 84
Raymond, John, 180
Raynbowe, Richard, 25
Raynseford, Thomas, 6, 7
Read, Jonathan, 3n
Reade, Richard, 14
Reading, Roger, 15n
Redditt, Nicholas, 38n
Reede, Margaret (late Margaret Pennell), 186
Reede, Richard, 186, 187
Reid, Andrew, 179
Reneger, Thomas, 80n
Reynolds, Joshua, 76–77
Rich, Sir Henry, 126
Rich, Henry, 1st Earl of Holland, Baron Kensington, 88
Rich, Robert, Baron Kensington, 5th Earl of Warwick, 88
Richard II., 23
Richard, Lewis, 10n
Richardes, Lewis, 40n
Richardson, C. J., 63
Richardson, Jas., 163
Richardson, Jonathan, 76
Richardson, W. Westbrook, 83
Richold, —, 83
Ride, Miss, 71
Ridge, Jeremiah, 106n
Risley, Thos., 126
Rivers, Arabella, Lady, 69
Rivers, Elizabeth Scroope (afterwards Countess), 68
Rivers, Elizabeth, Countess of (née Darcy), 59, 67–68, 73n, 90
Rivers, John Savage, 2nd Earl, 68
Rivers, Margaret, Lady (formerly Tryon), 69
Rivers, Mary, Countess Dowager, 68n
Rivers, Penelope, Lady, 69
Rivers, Richard, 4th Earl (“Tyburn Dick”), 69, 70
Rivers, Thomas Darcy, Baron Darcy of Chich (afterwards Earl), 67
Rivers, Thomas Savage, 3rd Earl, 68, 69
Rivers House, Great Queen Street, 59, 63, 67
Roberts, Thomas, 13, 14
Robins, Richard, 107
Robinson, Mr., 77–78
Robinson (née Darby), Mary (“Perdita”), 77–78
Rochford, Bessy, Countess of, 70
Rochford, Frederick Nassau de Zuylestein, 3rd Earl of, 70
Rochford, William Henry, Earl of, 70n
Roger, son of Alan, 107
Ronquillio, Don Pedro de, 97n
Rookery, St. Giles, 145–146
Roos (Rous), Lord, 80n, 91, 92
Rope, Master, 126n
Roper, Poyser, 39
Ros of Hamlake, Barony of, 91n
Ros of Roos, Barony of, 91n
Rose Inn, 27, 28, 123
Rose, tenement in Lewknor’s Lane, 28
Rose Field, 18, 20, 27–32, 34
Rosslyn, Alexander Wedderburn, Earl of, 155
Round Rents (Middle Row), Holborn, 125
Rous. (See Roos.)
Rowland, Percival, 122n
Rowlandson, William, 139
Rowley, —, 90
Royal, Mrs., 163
Rudd, Ric., 92
Rudd, Thos., 92
Russell, Francis, Earl of Bedford, 23n, 51n
Russell, Lady Rachel, 126
Russell, Thos., 115n
Russell, William, Lord, 75
Rutland, Duchess of, 70n
Rutland, Earls of, 91
Rutland, John Manners, 9th Earl of. (See Roos.)
Rymes, William, 3n
“Sacharissa” (Dorothy Spencer, Countess of Sunderland), 54
Sadler, Ric., 89
Sadler (alias Clarke), Thomas, 80
St. Albans, Earl of (Marquess of Clanricarde), 46, 47, 50, 59
St. Amond, Jas., 65n
St. Andrew Street, 113
St. Giles, Cripplegate, Charity Schools, 112
St. Giles-in-the-Fields Church, 127–140
St. Giles-in-the-Fields, Hospital of, 20, 23, 34, 107, 109, 111, 117–126,
186
St. Giles-in-the-Fields, Rectors of, 87, 139
St. Giles’s Lane, 23n, 35n
St. Giles’s Pound, 144
St. Giles, Vestry of, 26
St. Giles’ Wood, Edmonton, 125
St. Giles’ Workhouse, 109, 110
St. John, Lord, Earl of Wilts., and Marquess of Winchester, 95, 96,
137
St. John of Jerusalem, Priory of, 3, 7
St. John’s Court, 76
St. Lazarus of Jerusalem, Order of, 118
St. Mary Graces, Abbot of, 117–118
St. Thomas’s Street (now Shelton Street), 27, 31
Salisbury, Gilbert Burnet, Bishop of, 75
Salisbury, Robert Cecil, Earl of, 36
Salisbury, Thomas, 139
Salvadore, —, 66
Sandby, Thomas, 61, 62, 63
Sanders (Saunders), Mary, 96
Sandfeild, William, 38
Sandwich, Edward Montagu, 1st Earl of, 89
Sardinia Ambassador, 45n
Sardinia Place, 34
Sardinia Street, 93, 94, 100
Saunders, —, 89
Savage, —, 84
Savage, Miss Bessy (afterwards Countess of Rochford), 70
Savage, Elizabeth (afterwards Lady Thimbleby), 90
Savage, Elizabeth (née Darcy), Countess Rivers, 59, 67, 68, 73n, 90
Savage, J., 89
Savage, John, 2nd Earl Rivers, 68
Savage, Lady Mary, 68
Savage, Sir Thomas (afterwards Viscount Savage), 67, 90
Savage, Thomas, 3rd Earl Rivers, 68, 69
Savill, Miss, 71
Sayes Court, Addlestone, 114
Saywell (née Lloyd), Elizabeth, 119–120
Schmidt, Bernard (Father Smith), 132
Scott, —, 172
Scott, John, 1st Earl of Eldon, 155
Scott, Sir John, 186
Scott, John (Rector), 139
Scott, William, 150
Scott, William (afterwards Lord Stowell), 155
Scroope, Adrian, 102
Scroope, Elizabeth (afterwards Countess Rivers), 68
Scroope, Sir Gervase, 102
Seagood, Henry, 35, 37, 40, 41
Seal, Office of the Lord Keeper of, 79, 80, 81
Seales, Major, 91
Segar (Seager), Sir William and Lady, 6n
Seven Dials, 113–114
Seven Dials. (See also Marshland.)
Seven Dials Mission, 116
Seymour, Francis, 5th Baron Conway, 61n
Seymour (alias Conway), Popham, 78, 82
Shaftesbury Avenue, 112n, 113, 118
Sharp, John, 139
Shaw, Charles (afterwards Shaw-Lefevre), 160
Shaw-Lefevre, Charles (afterwards Viscount Eversley), 160
Shaw-Lefevre, Sir John George, 160
Sheffield, Edmund, 2nd Earl of Mulgrave, 73
Sheffield, John, Marquess of Normanby, 73–74
Sheffield Street, boundary stone in, 1
Sheldon, Lady Henrietta Maria, 90
Sheldon, John, 147, 149
Sheldon, Ralph, 90
Shelton Street, 27, 30–31
Shenton, Mrs., 17
Shenton’s Tenements, 16, 17
Sherbourne, Richd., 11
Sheridan, Richard Brinsley, 66–67
Sheridan, Thomas, 66
Shiffner, Henry, 84
Ship Tavern, Gate Street, 12
Short, Dudley, 109
Short, Gregory, 18n
Short, Thomas, 106, 108, 109
Short, William (the Elder), 28, 101, 106
Short, William (the Younger), 18, 19, 27n, 28, 29, 30, 31n, 101, 110,
112
Short’s Gardens, 101, 106–111
Sidney, Algernon, 81
Sidney, Henry, 54
Skinner, Sir John, 175
Slingsby, —, 79
Slingsby, Henry, 53n, 79
Smallbone, Sir John, 110n
Smart, John, 22
Smart, Lewis, 22
Smart, William, 22
Smart’s Buildings, 18–22
Smith, Edward, 80n
Smith (Smyth), Edward, 106, 110, 121
Smith, Father (Bernard Schmidt), 132
Smith, John, 125
Smith, John, of Tudworth, 76
Smith, Lilley, 89
Smith, Thomas, 67, 72n
Smith, Thomas, 11
Smithfield Gallows, 144
Smithson, George, 6n, 8n
Smyth, John, 139
Smyth, Katherine (alias Katherine Clerke), 24
Soane, Sir John, 63
Soho Square, 76
Somaster, Sir Samuel, 19n
Southampton, Henry, 3rd Earl of, 126
Southampton Buildings, 77
Southampton Square, 56
South Crescent, 186
Southgate, Rev. Richard, 136
Spanish Ambassador, 47, 59, 67, 96, 97
Sparkes, John, 41
Speaks, Hugh, 6n
Speckard, Abraham, 122
Speckard, Dorothy, 122
Spencer, Lady, 95
Spencer, Anne (née Digby), Countess of Sunderland, 54
Spencer, Lady Diana (afterwards Beauclerk), 149
Spencer, Dorothy (Countess of Sunderland) (“Sacharissa”), 54
Spencer, Henry, 1st Earl of Sunderland, 54
Spencer, Robert, 2nd Earl of Sunderland, 54
Spiller, Sir Henry, 29n
Spittle Houses, St. Giles’s Hospital, 118, 121–122, 125
Stafey, John, 119n, 121n
Stainsforth, George, 151
Stamford, Thomas Grey, 2nd Earl of, 65
Star, High Holborn, 3n
Statue of Queen Henrietta Maria, 44, 59, 60, 61, 71–77
Steers, Charles, 149
Stephenson, Jno., 165
Stephenson, Mrs., 165
Steward, P. G., 61
Steward, William, 139
Stewart, G., 92
Stidwell Street, 123, 141
Stoake, Thomas, 40n
Stockwood, Edward, 3
Stonor, Thos., 47, 48, 54n, 55
Stowell, William, Lord, 155
Stradling, Sir Edward, 42, 43, 93, 94, 100n
Stradling, Sir Edward (Junior), 94n
Stradling House, 95
Strange, Sir Robert, 44n
Stratton, Edward, 94n
Stratton, Elizabeth, 17n
Stratton, Henry, 110
Stratton, Robert, 35n
Strode, George, 42, 93
Stuart, Esmé, Seigneur D’Aubigny, Earl of March (afterwards Duke
of Lennox), 72, 101
Stuart, George Seigneur D’Aubigny, 60, 72
Stydolph, Sir Francis, 112, 113
Stydolph, Sir Richard, 113, 122, 123
Stydolph, Thomas, 112
Suffolk, Earl of, 72
Sun and Dolphin, High Holborn, 3n
Sunderland, Anne, Countess of, 54
Sunderland, Dorothy Spencer, Countess of (“Sacharissa”), 54
Sunderland, Henry Spencer, 1st Earl of, 54
Sunderland, Robert Spencer, 2nd Earl of, 54
Sussex, Duke of, 62
Sutton, George, 27–28
Swan, The, 107, 108
Swan on le Hop, 108
Symonds, R., 11

Tahairdin, Peter, 67n


Talbot, Hon. Catherine, 136
Talbot, Hon. John, 136
Tamworth, Viscount, 75n
Tatnell, Wm., 171
Tattershall, Widow, 96
Tavistock, Francis, Marquess of, 149
Tavistock, Lady, 149
Taylor, Ed., 56
Taylor, Dr. John, 89
Taylor, Richard, 28n
Taylor, W. A., 113–114
Taylor, William, 15n
Temple, Freemasons’ Tavern, 61, 62
Thanet, Thomas Tufton, 6th Earl of, 147, 148
Thanet House, 147–149
Theedham, Edward, 108
Thelwall, Daniel, 6, 8n
Theobalds, Hertfordshire, road to, 36, 42
Thimbleby, Elizabeth, Lady, 89–90
Thimbleby, John, 90
Thimbleby, Sir John, 11n, 90
Thomas, —, 92
Thomas, Mrs., 92
Thomson, Mrs. Anne, 11
Thomson, William, 11
Thornton, Beatrice, 9
Thornton, John, 9
Thornton’s Alley, 9
Thorold, Anthony W., 138
Three Anchors, Salisbury Court, 82n
Three Feathers Tavern, High Holborn, 8
Thriscrosse, Francis, 38
Tomkins, Packington, 73n
Tompson, Elizabeth (afterwards Hollinghurst), 8
Tooke, Edward, 27n, 28, 30n
Tottenham Court Road, 187, 188
Tower Street, 113n
Trinity College, 16
Troughton, —, 119
Trueman (alias Johnson), William, 80n
Tryon, Charles, 122
Tryon, Mrs. Margaret, 69
Tubb, Marchant, 163
Tubbs, Robt., 165
Tufton, Lady Margaret, 148
Tufton, Thomas, 6th Earl of Thanet, 147, 148
Turngatlane, 3
Turnpiklane, 3
Turpin, Jeremiah, 19
Twelves, John, 71
Twiney, J., 83
Twisden, Sir Thomas, 11
Twisden, Sir William, 11
Twyford Buildings, Gate Street, 12
“Tyburn Dick”, 69
Tyburn Gallows, 144
Tye, Dr., 162
Tyler, Rev. James Endell, 105
Tyler, William, 61, 62

Umfreville, Chas., 103n


Umfreville, Gilbert, 103n
Unicorn Inn, High Holborn, 8, 9
Unicorn Yard, High Holborn, 8
Vanblew, —, 76, 77n
Van Helmont, —, 78
Varney, Frances, 120
Vaughan, Elinor, 18
Vaughan, Thomas, 18
Vaughan, Thomas (“Dapper”), 71
Vaune, Mr., 90
Vavasour, Anne, 20
Vavasour, John, 20, 101, 107, 108, 110, 144
Vavasour, Nicholas, 144
Vere, Lady, 31
Vere, Sir Horace, 51
Verney, Edmund, 121
Verney, Sir R., 120n
Vernon, Mr., 77
Verrinder, Dr. G. C., 132
Vertue, —, 44
Vestry of St. Giles, 26
Villiers, George, 1st Duke of Buckingham, 91n
Villiers, George, 2nd Duke of Buckingham, 91n
Villiers House, 53n
Vine, The, High Holborn, 123, 124
Vine Street (now Grape Street), 124
Violetti, Eva Maria, 90n
Vuidele, Anthony, 119

Waldron, John, 6
Wales, George, Prince of (afterwards George IV.), 78
Walgrave, John, 28, 107
Walker, Dr. Jas., 11
Walker, John, 13, 14
Walker, Richard, 163
Walker, Thomas, 29n, 31n
Walpole, Horace, 44, 46, 56n, 71
Walter, Peter, 105
Walton, Brian, 139
Ward, James, 92
Wardrobe, Great Queen Street, 45n, 66
Warner, Henry, 34n
Warwick, Charles, Earl of, 88
Warwick, Robert, Earl of, 88
Watson, Mrs., 96
Watson, Henry, 149
Watson, Mary, 96
Watson, Rowland, 5, 6
Watson, William, 5
Watson, Sir William, 133
Wayte, Edward, 79
Webb, Barbara (afterwards Viscountess Montagu), 65
Webb, Lady Barbara, 65, 136
Webb, Sir John, 47n, 65n, 136
Webb, John, Architect, 44
Webb, Philip Carteret, 73n, 74
Webb, Rhoda (afterwards Beavor), 75
Webb, Richard, 38
Webb, Thos., 71
Wedderburn, Alexander, Lord Loughborough (afterwards Earl of
Rosslyn), 155
Weedon, Thomas, 96
Weld, Lady Frances, 94, 95n
Weld (Wild, Wield), Humfrey, 59, 60, 94, 95n, 96, 97n, 100
Weld House, 93–97, 99
Weld Street. (See Wild Street.)
Wesley, John, 115, 116
Wesleyan Chapel, Great Queen Street, 86–92
West London Mission, 88, 115
West Street, 112n, 115
West Street Chapel, Seven Dials, 87
Western, Thomas, 11
Weston (Whetstone), John, 5n
Westone, William, 109n
Wetherell, Philip, 21n
Wharton, Philip, 4th Lord, 79, 120
Whetstone, William, 6–7
Whetstone Park, 4, 8
White, James, 28, 112
White Hart, 14, 19, 20, 23, 24, 25, 28, 29n, 30n, 123
White Hart Feilde, 6
—(See also Pursefield.)
White Hart Yard, 26
White Horse in Drury Lane, 35
White House, St. Giles’s Precinct, 121
White Lion Street, 113n, 114
Whitesaunder, Thomas, 119
White Swan in Queen Street, 37n
Whitfield, Henry Fotherley, 31n
Whitfield, Thomas, 110n, 111n
Wigg, William, 110n, 111n
Wild. (See Weld.)
Wild Boare Alley, 18
Wild Court, Nos. 6 and 7, 98
Wild Street (Weld Street), 34, 93–97
—(See also Little Wild Street.)
Wilkes, John, 74–75
Wilkinson, William, 125
Wilkinson’s Close, 125n, 187
Williams, Jas., 165
Williams, John, 84
Williams, Paul, 40n
Williamson, Sir Joseph, 69
Williamsfeild (alias Church Close), 145
Willoughby, Philip, 60n
Willson, Thomas, 138
Wilson, Benjamin, 56, 57, 66, 67n
Wilson, Jas., 56
Wilson, Major, 57
Wilton House, Picture of Lincoln’s Inn Fields, 46
Wiltshire, Charles Powlett, Earl of (afterwards Duke of Bolton), 65
Winchester, John, Marquiss of, 95, 96, 137
Windell, Richard, 109n
Windham, W., 67
Winstanley, J., 11
Wise (Wyse), Joan (afterwards Briscowe), 107, 119
Wise, John, 107n
Wise, Robert, 20
Wither, Thomas, 60n
Withers (Wither, Wyther), Anthony, 51, 60, 73n
Withers, William, 74
Wolcot, Dr. (Peter Pindar), 83
Wolstenholme, John, 96
Wood, Anthony, 80
Woodville, Thomas, 130
Woodward, William, 14
Worcester, Edward (1st Marquess of), 73
Worliche, Mary, 9n
Worlidge, Mrs., 77
Worlidge, Thomas 58, 67n, 76, 77
Worsley, John, 96
Wortley, Sir Francis, 89
Wray, Sir John, 95n
Wren, Sir Christopher, 123, 147
Wren, Stephen, 147
Wright, —, 96n
Wright, Martin, 89
Wriothesley, Lord, 124
Wylson, —, 119
Wynter, Master, 119
Wyse. (See Wise.)

Yarmouth, 1st Earl of, 52


York, Frederica, Duchess of, 114
York, Sir William Dawes, Archbishop of, 110n
Young, Thomas, 110

Zucchi, Antonio, 151, 153, 163, 176


Zuylestein, Frederick Nassau de, 3rd Earl of Rochford, 70

You might also like