/* * LWSDK Header File * Copyright 1999, NewTek, Inc. * * LWSERVER.H -- LightWave Plug-in Server * * This header contains the basic declarations need to define the * simplest LightWave plug-in server. */ #ifndef LWSDK_SERVER_H #define LWSDK_SERVER_H /* * External Entry Points. All entry points which may be called from the * host must be declared as XCALL types. The obsolete XCALL_INIT is * still present but defined as nothing. */ #ifdef _WIN32 #define XCALL_(t) t #endif #ifdef _XGL #define XCALL_(t) t #endif #ifdef _MACOS #define XCALL_(t) t #endif #define XCALL_INIT /* * Global Function. The global function is a callback provided by the * host taking the floowing form. A pointer for the given service name * is returned for the given useage. The use codes are for services * that will be used once or that will be used many times. */ typedef void * GlobalFunc (const char *serviceName, int useMode); #define GFUSE_TRANSIENT 0 #define GFUSE_ACQUIRE 1 #define GFUSE_RELEASE 2 /* * Activation Function. The server entry points are all functions of * this kind, taking a version number, global function pointer, local * (class-specific) data and module data. The return value indicates * if the service could run and the reason for failure if it couldn't. */ typedef int ActivateFunc (long version, GlobalFunc *global, void *local, void *serverData); #define AFUNC_OK 0 #define AFUNC_BADVERSION 1 #define AFUNC_BADGLOBAL 2 #define AFUNC_BADLOCAL 3 #define AFUNC_BADAPP 4 /* * This is a selection of some of the more useful language ID's, * although this list is far from complete. Remaining codes can be * found by searching the Microsoft Windows documentation for OLE * LANGID codes. Japanese strings should be encoded as JIS on Windows * and EUC on Unix. */ #define LANGID_GERMAN 0x0407 #define LANGID_USENGLISH 0x0409 #define LANGID_UKENGLISH 0x0809 #define LANGID_SPANISH 0x040a #define LANGID_FRENCH 0x040c #define LANGID_ITALIAN 0x0410 #define LANGID_JAPANESE 0x0411 #define LANGID_KOREAN 0x0412 #define LANGID_RUSSIAN 0x0419 #define LANGID_SWEDISH 0x041D /* * The each server can contain a list of tagged strings which declare * some of the static information about that server. Tags are a bitwise * OR of a SRVTAG code which selects the type of information, and a * language ID word which selects the language for which the string is * valid. */ #define SRVTAG_USERNAME 0x00000 #define SRVTAG_BUTTONNAME 0x10000 #define SRVTAG_CMDGROUP 0x20000 #define SRVTAG_MENU 0x30000 #define SRVTAG_DESCRIPTION 0x40000 #define SRVTAG_ENABLE 0x50000 typedef struct st_ServerTagInfo { const char *string; unsigned int tag; } ServerTagInfo; /* * Server Definition Record. Each server record describes a single * activation entry point in the plug-in module. Each has a class, * a name, an activation function, and an array of tag info structs * terminated with a zero tag code. */ typedef struct st_ServerRecord { const char *className; const char *name; ActivateFunc *activate; ServerTagInfo *tagInfo; } ServerRecord; #define ServerUserName ServerTagInfo #endif