category-group: address
layer(s): 2, 7, 8

header file(s): z_address.h z_arpaaddr.h z_emailaddr.h z_postaladdr.h z_progaddr.h z_fileaddr.h

synopsis.
Address objects are an integral part of the Z Directory. They provide necessary support in e-mail systems, transport-networking, and text processing. The postal address object (postal_address_o) is a very robust class for parsing an address stored in text. This object can break down almost any standard American postal address into every individual component. Since the base class (address_o) is a child class of the orthodox class, addresses can be readily read and written to a database.

classes in this group: internet_address_o, email_address_o, postal_address_o, file_address_o,
                                      directory_address_o

support/internal classes: address_o

function groups:
                              layer 03 functions group

description.
Vettrasoft introduces the concept of an address as a recursive entity. The most familiar example of an address is Home. Perhaps the place where you live (almost always true if you are American) has an "address" associated with it. The government's hope is that you can be found if they know the address of your home. However, when the police arrive to arrest you, the address is only an approximator, because the address does not specify exactly where you are. Within a postal address, you may be in the bathroom, or the bedroom, or hiding in the cellar or the attic. Within the attic, perhaps you are underneath a bed or behind a false panel. Consider computer addresses. A computer connected to the internet may have an address. Its address would be in the form of an IP address (a group of 4 numbers). The IP address is insufficient to identify the location of the home directory of a user of that computer (never mind the additional complications, like how Microsoft tries hard to deny you the concept of a home directory).

In the Z Directory, an address can contain another address. The perfect example is a directory in a file system. Directories can contain other directories. In some operating systems (mainly unixes) there is no limit to the level of recursion, excapt by the limits of the resources in the host machine (such as amount of memory used to store a directory path), or perhaps limitations imposed by bad code in the OS, security considerations, or downward compatibility requirements. For example, in IBM's AS/400 there can be at most 2 levels of [sub]directory (in the ILE environment).

There are some restrictions on addressing - it makes no sense to combine an e-mail address with a postal address, for example. In our scheme, one master class - address (address_o) is the parent class for many types of addresses. The layout of the classes in this group is basically 2 deep.

The American postal address class. The American postal address object has been folded into the postal address class. Although it exists as a separate class, which is a subclas of the postal address, this class is no longer intended for public consumption. It has been relegated to being part of the implementation of the postal address object and is slated to go away. It is an exception to the rule that all subclasses of orthodox_o are 1 inheritance level down, since it is subclassed from postal_address_o. Most of the focus on postal addresses has been those in America (USA). Other countries will enter the fold over time.

note.
The header-include files listed here do not indicate that all the files must be given for a given type of address. The only mandatory file is z_address.h (which is automatically included by the other headers for a given type of address).

classes for addresses may appear to be fairly useless to the uninitiated. Such was the case in the early 1990's -the author of this concept recieved criticism and derision for the idea from IBM, over 15 years ago. They thought the idea irrelevant and pointless.

history.

        Thu Jul 18, 2013: American postal addresses folded into postal address
        ??? Nov 15, 1995: overhaul begun, almost a new start
        ??? Jun 28, 1997: new class names
        Sat Jul 04, 1998: (18:14 EST) address moved, layer 2 -> layer 7
        Sun Oct 11, 1998: changed 2-char -> 3-char fields for "state", others
        Wed May 22, 2002: added testdriver for postal address
        ??? Jul 02, 2002: "" removed from foreign keys
        Tue Aug 20, 2002: added to 'common_street_names'; clean-up
        Sat Sep 07, 2002: took out t_start, t_end (in "orthodox")
        Wed Sep 18, 2002: fixing some database table columns
        ??? Oct 04, 2002: changed email_address_o parent; was internet_address_o

bugs.
classification of "file address" and "directory address" could go to both the file group and the address group. They have been lumped into the "address" group. Subtypes exist from these two classes for files and directories (Microsoft: 'folders').