view mde/content/Services.d @ 149:1125ba603af6

Some ideas for content service menus.
author Diggory Hardy <diggory.hardy@gmail.com>
date Sat, 14 Mar 2009 11:05:51 +0100
parents 08651e8a8c51
children
line wrap: on
line source

/* LICENSE BLOCK
Part of mde: a Modular D game-oriented Engine
Copyright © 2007-2008 Diggory Hardy

This program is free software: you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation, either
version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>. */

// NOTE: This module is currently unused and untested.
// FIXME: write unittests

/** Content services.
 *
 * Services act on a content, potentially modifying it. They have the form:
 * ---
 * bool service (Content c);
 * ---
 * where c is the content acted on, and the return value is true if the content was changed (useful
 * to know whether caches need updating or not).
 */
module mde.content.Services;

import mde.content.AStringContent;

union ContentUnion {
    *Content ;
}

bool copy (Content c) {
    // store by type
    clipboard = c;
}

bool paste (StringContent c) {
    if (clipboard)
    	c = clipboard.toString (0);
}

bool paste (IntContent c) {
    
}

bool link (ref ContentText c) {
    if (clipboard is null)
        return false;	// no item on clipboard, so don't do anything
    c = clipboard;
    return true;
}

ContentUnion clipboard;