/*
 * This file is autogenerated with bcop:
 * The Compiz option code generator
 *
 * 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.
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <compiz.h>

#define _VPSWITCH_OPTIONS_INTERNAL
#include "vpswitch_options.h"

static int displayPrivateIndex;

static CompMetadata vpswitchOptionsMetadata;

static CompPluginVTable *vpswitchPluginVTable = NULL;
CompPluginVTable vpswitchOptionsVTable;

#define GET_VPSWITCH_OPTIONS_DISPLAY(d) \
        ((VpswitchOptionsDisplay *) (d)->privates[displayPrivateIndex].ptr)

#define VPSWITCH_OPTIONS_DISPLAY(d) \
        VpswitchOptionsDisplay *od = GET_VPSWITCH_OPTIONS_DISPLAY (d)

#define GET_VPSWITCH_OPTIONS_SCREEN(s, od) \
        ((VpswitchOptionsScreen *) (s)->privates[(od)->screenPrivateIndex].ptr)

#define VPSWITCH_OPTIONS_SCREEN(s) \
        VpswitchOptionsScreen *os = GET_VPSWITCH_OPTIONS_SCREEN (s, GET_VPSWITCH_OPTIONS_DISPLAY (s->display))

typedef struct _VpswitchOptionsDisplay
{
    int screenPrivateIndex;

    CompOption opt[VpswitchDisplayOptionNum];
    vpswitchDisplayOptionChangeNotifyProc notify[VpswitchDisplayOptionNum];
} VpswitchOptionsDisplay;

typedef struct _VpswitchOptionsScreen
{
} VpswitchOptionsScreen;

CompAction * vpswitchGetBegin (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionBegin].value.action;
}

void vpswitchSetBeginInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionBegin].value.action.initiate = init;
}

void vpswitchSetBeginTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionBegin].value.action.terminate = term;
}

CompOption * vpswitchGetBeginOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionBegin];
}

void vpswitchSetBeginNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionBegin] = notify;
}

CompAction * vpswitchGetSwitchTo1 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo1].value.action;
}

void vpswitchSetSwitchTo1Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo1].value.action.initiate = init;
}

void vpswitchSetSwitchTo1Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo1].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo1Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo1];
}

void vpswitchSetSwitchTo1Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo1] = notify;
}

CompAction * vpswitchGetSwitchTo2 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo2].value.action;
}

void vpswitchSetSwitchTo2Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo2].value.action.initiate = init;
}

void vpswitchSetSwitchTo2Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo2].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo2Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo2];
}

void vpswitchSetSwitchTo2Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo2] = notify;
}

CompAction * vpswitchGetSwitchTo3 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo3].value.action;
}

void vpswitchSetSwitchTo3Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo3].value.action.initiate = init;
}

void vpswitchSetSwitchTo3Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo3].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo3Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo3];
}

void vpswitchSetSwitchTo3Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo3] = notify;
}

CompAction * vpswitchGetSwitchTo4 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo4].value.action;
}

void vpswitchSetSwitchTo4Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo4].value.action.initiate = init;
}

void vpswitchSetSwitchTo4Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo4].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo4Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo4];
}

void vpswitchSetSwitchTo4Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo4] = notify;
}

CompAction * vpswitchGetSwitchTo5 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo5].value.action;
}

void vpswitchSetSwitchTo5Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo5].value.action.initiate = init;
}

void vpswitchSetSwitchTo5Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo5].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo5Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo5];
}

void vpswitchSetSwitchTo5Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo5] = notify;
}

CompAction * vpswitchGetSwitchTo6 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo6].value.action;
}

void vpswitchSetSwitchTo6Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo6].value.action.initiate = init;
}

void vpswitchSetSwitchTo6Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo6].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo6Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo6];
}

void vpswitchSetSwitchTo6Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo6] = notify;
}

CompAction * vpswitchGetSwitchTo7 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo7].value.action;
}

void vpswitchSetSwitchTo7Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo7].value.action.initiate = init;
}

void vpswitchSetSwitchTo7Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo7].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo7Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo7];
}

void vpswitchSetSwitchTo7Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo7] = notify;
}

CompAction * vpswitchGetSwitchTo8 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo8].value.action;
}

void vpswitchSetSwitchTo8Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo8].value.action.initiate = init;
}

void vpswitchSetSwitchTo8Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo8].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo8Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo8];
}

void vpswitchSetSwitchTo8Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo8] = notify;
}

CompAction * vpswitchGetSwitchTo9 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo9].value.action;
}

void vpswitchSetSwitchTo9Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo9].value.action.initiate = init;
}

void vpswitchSetSwitchTo9Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo9].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo9Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo9];
}

void vpswitchSetSwitchTo9Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo9] = notify;
}

CompAction * vpswitchGetSwitchTo10 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo10].value.action;
}

void vpswitchSetSwitchTo10Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo10].value.action.initiate = init;
}

void vpswitchSetSwitchTo10Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo10].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo10Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo10];
}

void vpswitchSetSwitchTo10Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo10] = notify;
}

CompAction * vpswitchGetSwitchTo11 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo11].value.action;
}

void vpswitchSetSwitchTo11Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo11].value.action.initiate = init;
}

void vpswitchSetSwitchTo11Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo11].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo11Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo11];
}

void vpswitchSetSwitchTo11Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo11] = notify;
}

CompAction * vpswitchGetSwitchTo12 (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo12].value.action;
}

void vpswitchSetSwitchTo12Initiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo12].value.action.initiate = init;
}

void vpswitchSetSwitchTo12Terminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionSwitchTo12].value.action.terminate = term;
}

CompOption * vpswitchGetSwitchTo12Option (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionSwitchTo12];
}

void vpswitchSetSwitchTo12Notify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionSwitchTo12] = notify;
}

CompAction * vpswitchGetLeft (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionLeft].value.action;
}

void vpswitchSetLeftInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionLeft].value.action.initiate = init;
}

void vpswitchSetLeftTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionLeft].value.action.terminate = term;
}

CompOption * vpswitchGetLeftOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionLeft];
}

void vpswitchSetLeftNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionLeft] = notify;
}

CompAction * vpswitchGetRight (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionRight].value.action;
}

void vpswitchSetRightInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionRight].value.action.initiate = init;
}

void vpswitchSetRightTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionRight].value.action.terminate = term;
}

CompOption * vpswitchGetRightOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionRight];
}

void vpswitchSetRightNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionRight] = notify;
}

CompAction * vpswitchGetUp (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionUp].value.action;
}

void vpswitchSetUpInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionUp].value.action.initiate = init;
}

void vpswitchSetUpTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionUp].value.action.terminate = term;
}

CompOption * vpswitchGetUpOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionUp];
}

void vpswitchSetUpNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionUp] = notify;
}

CompAction * vpswitchGetDown (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionDown].value.action;
}

void vpswitchSetDownInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionDown].value.action.initiate = init;
}

void vpswitchSetDownTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionDown].value.action.terminate = term;
}

CompOption * vpswitchGetDownOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionDown];
}

void vpswitchSetDownNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionDown] = notify;
}

CompAction * vpswitchGetNext (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionNext].value.action;
}

void vpswitchSetNextInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionNext].value.action.initiate = init;
}

void vpswitchSetNextTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionNext].value.action.terminate = term;
}

CompOption * vpswitchGetNextOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionNext];
}

void vpswitchSetNextNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionNext] = notify;
}

CompAction * vpswitchGetPrev (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionPrev].value.action;
}

void vpswitchSetPrevInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionPrev].value.action.initiate = init;
}

void vpswitchSetPrevTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionPrev].value.action.terminate = term;
}

CompOption * vpswitchGetPrevOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionPrev];
}

void vpswitchSetPrevNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionPrev] = notify;
}

CompAction * vpswitchGetInitiate (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionInitiate].value.action;
}

void vpswitchSetInitiateInitiate (CompDisplay *d, CompActionCallBackProc init)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionInitiate].value.action.initiate = init;
}

void vpswitchSetInitiateTerminate (CompDisplay *d, CompActionCallBackProc term)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->opt[VpswitchDisplayOptionInitiate].value.action.terminate = term;
}

CompOption * vpswitchGetInitiateOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionInitiate];
}

void vpswitchSetInitiateNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionInitiate] = notify;
}

char * vpswitchGetInitPlugin (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return od->opt[VpswitchDisplayOptionInitPlugin].value.s;
}

CompOption * vpswitchGetInitPluginOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionInitPlugin];
}

void vpswitchSetInitPluginNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionInitPlugin] = notify;
}

char * vpswitchGetInitAction (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return od->opt[VpswitchDisplayOptionInitAction].value.s;
}

CompOption * vpswitchGetInitActionOption (CompDisplay *d)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[VpswitchDisplayOptionInitAction];
}

void vpswitchSetInitActionNotify (CompDisplay *d, vpswitchDisplayOptionChangeNotifyProc notify)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    od->notify[VpswitchDisplayOptionInitAction] = notify;
}

CompOption * vpswitchGetDisplayOption (CompDisplay *d, VpswitchDisplayOptions num)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    return &od->opt[num];
}

static const CompMetadataOptionInfo vpswitchOptionsDisplayOptionInfo[] = {
    { "begin", "action", 0, 0, 0 },
    { "switch_to_1", "action", 0, 0, 0 },
    { "switch_to_2", "action", 0, 0, 0 },
    { "switch_to_3", "action", 0, 0, 0 },
    { "switch_to_4", "action", 0, 0, 0 },
    { "switch_to_5", "action", 0, 0, 0 },
    { "switch_to_6", "action", 0, 0, 0 },
    { "switch_to_7", "action", 0, 0, 0 },
    { "switch_to_8", "action", 0, 0, 0 },
    { "switch_to_9", "action", 0, 0, 0 },
    { "switch_to_10", "action", 0, 0, 0 },
    { "switch_to_11", "action", 0, 0, 0 },
    { "switch_to_12", "action", 0, 0, 0 },
    { "left", "action", 0, 0, 0 },
    { "right", "action", 0, 0, 0 },
    { "up", "action", 0, 0, 0 },
    { "down", "action", 0, 0, 0 },
    { "next", "action", 0, 0, 0 },
    { "prev", "action", 0, 0, 0 },
    { "initiate", "action", 0, 0, 0 },
    { "init_plugin", "string", 0, 0, 0 },
    { "init_action", "string", 0, 0, 0 },
};

static Bool vpswitchOptionsSetDisplayOption (CompPlugin *plugin, CompDisplay *d, char *name, CompOptionValue *value)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    CompOption *o;
    int        index;

    o = compFindOption (od->opt, VpswitchDisplayOptionNum, name, &index);

    if (!o)
        return FALSE;

    switch (index)
    {
     case VpswitchDisplayOptionBegin:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionBegin])
                (*od->notify[VpswitchDisplayOptionBegin]) (d, o, VpswitchDisplayOptionBegin);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo1:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo1])
                (*od->notify[VpswitchDisplayOptionSwitchTo1]) (d, o, VpswitchDisplayOptionSwitchTo1);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo2:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo2])
                (*od->notify[VpswitchDisplayOptionSwitchTo2]) (d, o, VpswitchDisplayOptionSwitchTo2);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo3:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo3])
                (*od->notify[VpswitchDisplayOptionSwitchTo3]) (d, o, VpswitchDisplayOptionSwitchTo3);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo4:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo4])
                (*od->notify[VpswitchDisplayOptionSwitchTo4]) (d, o, VpswitchDisplayOptionSwitchTo4);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo5:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo5])
                (*od->notify[VpswitchDisplayOptionSwitchTo5]) (d, o, VpswitchDisplayOptionSwitchTo5);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo6:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo6])
                (*od->notify[VpswitchDisplayOptionSwitchTo6]) (d, o, VpswitchDisplayOptionSwitchTo6);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo7:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo7])
                (*od->notify[VpswitchDisplayOptionSwitchTo7]) (d, o, VpswitchDisplayOptionSwitchTo7);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo8:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo8])
                (*od->notify[VpswitchDisplayOptionSwitchTo8]) (d, o, VpswitchDisplayOptionSwitchTo8);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo9:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo9])
                (*od->notify[VpswitchDisplayOptionSwitchTo9]) (d, o, VpswitchDisplayOptionSwitchTo9);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo10:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo10])
                (*od->notify[VpswitchDisplayOptionSwitchTo10]) (d, o, VpswitchDisplayOptionSwitchTo10);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo11:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo11])
                (*od->notify[VpswitchDisplayOptionSwitchTo11]) (d, o, VpswitchDisplayOptionSwitchTo11);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionSwitchTo12:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionSwitchTo12])
                (*od->notify[VpswitchDisplayOptionSwitchTo12]) (d, o, VpswitchDisplayOptionSwitchTo12);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionLeft:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionLeft])
                (*od->notify[VpswitchDisplayOptionLeft]) (d, o, VpswitchDisplayOptionLeft);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionRight:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionRight])
                (*od->notify[VpswitchDisplayOptionRight]) (d, o, VpswitchDisplayOptionRight);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionUp:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionUp])
                (*od->notify[VpswitchDisplayOptionUp]) (d, o, VpswitchDisplayOptionUp);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionDown:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionDown])
                (*od->notify[VpswitchDisplayOptionDown]) (d, o, VpswitchDisplayOptionDown);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionNext:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionNext])
                (*od->notify[VpswitchDisplayOptionNext]) (d, o, VpswitchDisplayOptionNext);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionPrev:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionPrev])
                (*od->notify[VpswitchDisplayOptionPrev]) (d, o, VpswitchDisplayOptionPrev);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionInitiate:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionInitiate])
                (*od->notify[VpswitchDisplayOptionInitiate]) (d, o, VpswitchDisplayOptionInitiate);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionInitPlugin:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionInitPlugin])
                (*od->notify[VpswitchDisplayOptionInitPlugin]) (d, o, VpswitchDisplayOptionInitPlugin);
            return TRUE;
        }
        break;
     case VpswitchDisplayOptionInitAction:
        if (compSetDisplayOption (d, o, value))
        {
            if (od->notify[VpswitchDisplayOptionInitAction])
                (*od->notify[VpswitchDisplayOptionInitAction]) (d, o, VpswitchDisplayOptionInitAction);
            return TRUE;
        }
        break;
    default:
        break;
    }
    return FALSE;
}

static CompOption * vpswitchOptionsGetDisplayOptions (CompPlugin *plugin, CompDisplay *d, int *count)
{
    VPSWITCH_OPTIONS_DISPLAY(d);
    *count = VpswitchDisplayOptionNum;
    return od->opt;
}

static Bool vpswitchOptionsInitScreen (CompPlugin *p, CompScreen *s)
{
    VpswitchOptionsScreen *os;
    
    VPSWITCH_OPTIONS_DISPLAY (s->display);

    os = calloc (1, sizeof(VpswitchOptionsScreen));
    if (!os)
        return FALSE;

    s->privates[od->screenPrivateIndex].ptr = os;

        if (vpswitchPluginVTable && vpswitchPluginVTable->initScreen)
        return vpswitchPluginVTable->initScreen (p, s);
    return TRUE;
}

static void vpswitchOptionsFiniScreen (CompPlugin *p, CompScreen *s)
{
    if (vpswitchPluginVTable && vpswitchPluginVTable->finiScreen)
        return vpswitchPluginVTable->finiScreen (p, s);

    VPSWITCH_OPTIONS_SCREEN (s);

    free (os);
}

static Bool vpswitchOptionsInitDisplay (CompPlugin *p, CompDisplay *d)
{
    VpswitchOptionsDisplay *od;
   
    
    od = calloc (1, sizeof(VpswitchOptionsDisplay));
    if (!od)
        return FALSE;

    od->screenPrivateIndex = allocateScreenPrivateIndex(d);
    if (od->screenPrivateIndex < 0)
    {
        free(od);
        return FALSE;
    }

    d->privates[displayPrivateIndex].ptr = od;

    if (!compInitDisplayOptionsFromMetadata (d, &vpswitchOptionsMetadata, vpswitchOptionsDisplayOptionInfo, od->opt, VpswitchDisplayOptionNum))
    {
        free (od);
        return FALSE;
    }
    if (vpswitchPluginVTable && vpswitchPluginVTable->initDisplay)
        return vpswitchPluginVTable->initDisplay (p, d);
    return TRUE;
}

static void vpswitchOptionsFiniDisplay (CompPlugin *p, CompDisplay *d)
{
    if (vpswitchPluginVTable && vpswitchPluginVTable->finiDisplay)
        return vpswitchPluginVTable->finiDisplay (p, d);

    VPSWITCH_OPTIONS_DISPLAY (d);

    freeScreenPrivateIndex(d, od->screenPrivateIndex);

    compFiniDisplayOptions (d, od->opt, VpswitchDisplayOptionNum);

    free (od);
}

static Bool vpswitchOptionsInit (CompPlugin *p)
{
    displayPrivateIndex = allocateDisplayPrivateIndex();
    if (displayPrivateIndex < 0)
        return FALSE;

    if (!compInitPluginMetadataFromInfo (&vpswitchOptionsMetadata, "vpswitch",vpswitchOptionsDisplayOptionInfo, VpswitchDisplayOptionNum, 0, 0))
        return FALSE;

    compAddMetadataFromFile (&vpswitchOptionsMetadata, "vpswitch");
    if (vpswitchPluginVTable && vpswitchPluginVTable->init)
        return vpswitchPluginVTable->init (p);
    return TRUE;
}

static void vpswitchOptionsFini (CompPlugin *p)
{
    if (vpswitchPluginVTable && vpswitchPluginVTable->fini)
        return vpswitchPluginVTable->fini (p);

    if (displayPrivateIndex >= 0)
        freeDisplayPrivateIndex(displayPrivateIndex);

    compFiniMetadata (&vpswitchOptionsMetadata);
}

static CompMetadata *
vpswitchOptionsGetMetadata (CompPlugin *plugin)
{
    return &vpswitchOptionsMetadata;
}

CompPluginVTable *getCompPluginInfo (void)
{
    if (!vpswitchPluginVTable)
    {
        vpswitchPluginVTable = vpswitchOptionsGetCompPluginInfo ();
        memcpy(&vpswitchOptionsVTable, vpswitchPluginVTable, sizeof(CompPluginVTable));
        vpswitchOptionsVTable.getMetadata = vpswitchOptionsGetMetadata;
        vpswitchOptionsVTable.init = vpswitchOptionsInit;
        vpswitchOptionsVTable.fini = vpswitchOptionsFini;
        vpswitchOptionsVTable.initDisplay = vpswitchOptionsInitDisplay;
        vpswitchOptionsVTable.finiDisplay = vpswitchOptionsFiniDisplay;
        vpswitchOptionsVTable.initScreen = vpswitchOptionsInitScreen;
        vpswitchOptionsVTable.finiScreen = vpswitchOptionsFiniScreen;
        vpswitchOptionsVTable.getDisplayOptions = vpswitchOptionsGetDisplayOptions;
	vpswitchOptionsVTable.setDisplayOption = vpswitchOptionsSetDisplayOption;
	
    }
    return &vpswitchOptionsVTable;
}



syntax highlighted by Code2HTML, v. 0.9.1