Plain Old Documentation. POD is a very simple format for documentation, which can be automatically translated to text, troff/nroff/groff man format, HTML, FrameMaker, and who knows what else.

But that's not the cool thing about POD. The Perl compiler knows to ignore anything between a line starting with an `=' sign and a line `=cut'; all POD commands start with an `=' sign, and `=cut' tells POD to ignore everything up to the next POD command, so you can embed you POD in your Perl module! (You can also just keep it in a file, of course) This isn't quite literate programming, but it does mean that you have no excuses for not documenting your Perl!

(I do have excuses, but I'm not going to give them to you so easily)

Plain Old Data

It seems perverse that the C++ gods had to go back and make up a special term for unadorned data, but that's what happened.

Bjarne Stroustrup's C with Classes and later C++ provided programmers with all sorts of powerful capabilities. However, some features, most importantly virtual methods and multiple inheritance, affected the internal structure of classes that used them. Not only that, different implementers of C++ were free to implement the structure changes in whatever way they desired, as long as it worked. The same source code compiled on different compilers on the same platform might result in radically different object structures.

At first glance, this appeared to go against a fundamental goal that Bjarne Stroustrup had set for C++, the notion that you don't pay for what you don't use. Looking further, however, it was clear that any implementation of these features carried some overhead, and leaving it up to the implementer was the best decision.

Another important design goal of C++ was for its code to be linkable to libraries written in other languages, especially C. This goal would have been defeated if the C++ implementation could interfere with all classes. To the rescue came "you don't pay for what you don't use": After identifying all of the features that had to interfere with an object structure, the classes that didn't use these features had to be left unmolested.

And so the notion of a "plain old data" type developed.

The 1998 C++ Standard1 defines (9.0.4):
A POD-struct is an aggregate class2 that has no non-static data members of type pointer-to-member, non-POD-struct, non-POD-union (or array of such types) and has no user-defined copy assignment operator and no user defined destructor. Similarly a POD-union is an aggregate union...

In other words, a POD-struct (union) is a struct (union) that would compile in C, with the additional possibility of (non-virtual) function members that aren't in the Big Three.

Earlier3 in the standard, (, basic.types,
Scalar types, POD-struct types, POD-union types, arrays of such types, and cv-qualified versions of such types are collectively called POD types.
A C++ programmer is permitted to do all sorts of tricks with POD types, things familiar to C hackers. Consider the following declarations, all of POD types:

struct pt2 { int x, y };
struct pt3 { int x, y, z };
union u23 {
           pt2 p2;
           pt3 p3;
struct m { int x; const int y; };

  • A POD occupies contiguous bytes of storage.
  • You can use a POD as an argument to a function declared with an ellipsis and retrieve it with va_arg.
  • A POD created as an automatic variable or with a new-expression without an initializer has an indeterminate value (saving the time it takes to zero-initialize the variable).  You can jump into a block past such a declaration!

     int y;       // y is garbage, but ok
     pt2 *p;      // p is garbage, but ok
     p = new pt2; // *p is garbage, but ok
     y = 5;       // now y == 5
     goto bar;    // evil, but well-formed
      pt2 q;      // q is garbage, but ok
      bar: y = 6; // now y == 6

  • You can use an initializer-list in curly braces to initialize a POD-struct, since it is an aggregate:

    pt2 p = { 3, 5 };

  • (9.2.17) You can reinterpret_cast a pointer to a POD struct to a pointer to its first member.

    pt2 p = { 3, 5 };
    int *q;
    q = reinterpret_cast<int *>(&p); // *q == 3

  • You can memcpy the object to an array of char and back and it will retain the same value:

    unsigned char ac sizeof(pt3);
    pt3 p = {34, 65, 78};
    pt3 q;
    memcpy (ac, &p, sizeof (pt3));
    memcpy (&q, ac, sizeof (pt3);  // now p == q

  • Common initial sections of unions are layout-compatible, and so the following is not undefined behavior:

    u23 u;
    int y;
    u.p2.y = 5;
    y = u.p3.y; // now y == 5

  • a std::basic_string or std::basic_xstream template can be specialized with any POD type (so long as you fulfill the other requirements).

1International Standard ISO-IEC 14882, Programming Languages -- C++, published by the American National Standards Institute, © 1998 Information Technology Industry Council.
2a class which can be initialized with a list of constants enclosed in curly braces, leaving out anything with protected or private data members, base classes, user-declared-constructors, or virtual function members.
3One of the things that makes the Standard so diffcult to interpret its the fact that things are not defined sequentially. Concepts are frequently referenced before they are defined.

A restaurant review by The Custodian

Pod is a too-hip-for-its-own-good sushi-plus restaurant in Philadelphia, PA. The main reason I can see for going there is the design aesthetic, which I can best describe as retro-Kubrickian; the joint is designed to immediately evoke memories (or nightmares) of the ultra-airline future shown in the early parts of the film 2001.

The restaurant is decorated entirely in white. Tables and chairs are plastic/composite, and shaped in "Sixties-ultramodern," which seems to comprise improbable-looking shapes intended to trigger awe at the implied materials science and engineering of the makers. Unfortunately, this also means that their actual Young's Modulus and breaking points are far lower than sanely engineered public restaurant furniture, so if you are (like me) overweight, you'll have to be damn-all careful not to move to quickly or lean the wrong way lest the things buckle or at least bend unexpectedly.

The 'fun' part of Pod is, I suppose, the colors. The white decor is intended to allow continuous and occasionally nauseating 'fun' with the colored lighting that has been installed. There are ring lights in the ceiling that cycle continuously through different color cycles, resulting in a slow and constant change of the color of all the white objects in the place - and the food, too. As part of the whole joke, the drinks are named for colors - rather than ordering a Cosmopolitan, for example, you order a 'purple.'

The main area of the restaurant (which includes a sushi bar surrounded by a conveyor system) doesn't change colors too far from neutral dim-white; but there are four enclosed seating areas in the corners ('pods') which have ribbon cutout windows connecting them to the main area. The lights inside these pods are controlled from a grid of large 'panic' buttons just inside the pod entry, so that the inhabitants can trigger color changes at whim. Thus, the long window cuts looking out onto the main floor usually glow some completely different color from the main restaurant, vividly.

To complete the entire motif, there are video screens embedded into various surfaces of the space which show silent film clips. While I was there, these all seemed to be 2001 (the film) or 'live anime' related, and many carried a small icon which proclaimed them 'Pod films.' Quite often, the screens would simply show the instantly-recognizable 'face' of the glowing red camera eye of HAL 9000.

The food is nice, overpriced, and not too impressive. I didn't eat at the sushi bar, which appeared to serve relatively normal sushi. The table sushi is usually 'interesting' in some structural manner; while the composition is standard, the stuff is built in some 'fun' postmodern way which usually makes it impossible to eat safely/cleanly/completely. There are other dishes available, usually with a twist, such as crab pad thai or Kobe beef. While tasty, they're all overpriced.

Near the cashier is a display case containing anime-related trinkets of all sorts. There was a standup ad on all the bar tables while I was there that prominently featured a pic of Faye Valentine from Cowboy Bebop; however, when asked for confirmation, the staff uniformly would adopt a confused expression and say "Who?"

The restaurant entrance is an enormous sign of the logo, and (one of the most fun bits of the place) appears to be an enormous Lite-Brite.

Three people with apps, food and drinks came to $135. While this isn't out of line for a good restaurant dinner, Pod seems to think its fun visual toys let it enter that class, and they're wrong. This is a great place to get taken to eat, or to go to when you're in a goofy mood and want to look at silly stuff, but if you're going out to eat mostly for the food, skip it.

PM = P = point-and-drool interface

pod n.

[allegedly from abbreviation POD for `Prince Of Darkness'] A Diablo 630 (or, latterly, any letter-quality impact printer). From the DEC-10 PODTYPE program used to feed formatted text to it. Not to be confused with P.O.D..


In American television, a pod is a linear sequence of commercials - it's a casing that holds a row of tiny ads, like peas. Is that cute or what? Okay, maybe not.

The number of pods per show vary dramatically, but on normal commercial television there are usually three per half-hour and five per hour. Unscripted shows (most notably sporting events or shows that cover same) are subject to the sporadic movements of balls on fields and the commercial pods therefore vary in length. Broadcast television tends to have slightly longer pods than cable television, though the two are rapidly equalizing.

The interesting thing is, if you watch enough TV you'll notice that the pods in identical programs shift depending on when the shows air - if you watch a premiering episode of The Simpsons on Sunday night there's almost always a pod immediately following the title sequence, but a year later in reruns during the week, the same episode will move that pod closer to the middle. The reasoning for this essentially works this way: People who tune in to see that Simpsons premiere are more likely to watch it no matter what; it's therefore safer to hit the viewers with more ads up front because there's only a minimal chance that they'll get bored and flip the channel. At 11:30PM on a Tuesday night, however, it's an entirely different ball game - people get flighty late at night, and the networks know they'll hold more viewers by hitting them with the show proper as soon as possible. There're other factors, but that's the gist of it.

Within the trade, segments of a show are numbered and the commercial pods are assigned numbers too, while the individual commercials are lettered - the second commercial in the third pod of some show or another would therefore be assigned the designation 3B.

Pod (?), n. [Probably akin to pudding, and perhaps the same word as pad a cushion; cf. also Dan. pude pillow, cushion, and also E. cod a husk, pod.]


A bag; a pouch.

[Obs. or Prov. Eng.]


2. Bot.

A capsule of plant, especially a legume; a dry dehiscent fruit. See Illust. of Angiospermous.

3. Zool.

A considerable number of animals closely clustered together; -- said of seals.

Pod auger, ∨ pod bit, an auger or bit the channel of which is straight instead of twisted.


© Webster 1913.

Pod, v. i. [imp. & p. p. Podded; p. pr. & vb. n. Podding.]

To swell; to fill; also, to produce pods.


© Webster 1913.
