
/*
 * This file was generated by the SOM Compiler.
 * FileName: G:\cwpsh\rel\os2c\include\base\os2\wpprint.xh.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.14
 *     SOM Emitter emitxh: 2.43
 */

/*
 *   Module Header
 * 
 *   Module Name: WPPRINT
 * 
 *   OS/2 Presentation Manager Workplace class definitions
 * 
 *   Copyright (c) International Business Machines Corporation 1991, 1992
 * 
 */


#ifndef SOM_WPPrinter_xh
#define SOM_WPPrinter_xh

class WPPrinter;

/*
 *  CLASS: WPPrinter
 * 
 *  CLASS HIERARCHY:
 *     SOMObject
 *       ÀÄÄ WPObject
 *             ÀÄÄ WPAbstract
 *                   ÀÄÄ WPPrinter
 * 
 *  DESCRIPTION:
 *     This is the print destination object class.
 *     An instance of this class can be created as a Workplace object.
 *     An instance of this class is created initially by the system in
 *     its template form.  It has the title "Create print destination"
 *     and resides in the "Templates" folder.  Instances of this class
 *     are also created initially by the system for each print destination
 *     configured.  Each instance will have a title corresponding to the
 *     description of the configured queue and printer and will reside on
 *     the desktop.
 * 
 */

#define WPPrinter_MajorVersion 1
#define WPPrinter_MinorVersion 1

/*
 * Passthru lines: File: "C.h", "before"
 */

/*
 * Passthru flags for QueueOptions methods
 */

#define PO_PRINTERSPECIFICFORMAT     0x00000001
#define PO_PRINTWHILESPOOLING        0x00000002
#define PO_APPDEFAULT                0x00000004
#define PO_JOBDIALOGBEFOREPRINT      0x00010000

/*
 * _wpJobChanged ulField values for when job is held or released
 */
#define PO_JOB_HELD                  0x00000080
#define PO_JOB_RELEASE               0x00000081

/* common context menu ids */

#define WPPOICM_PD_OPENMENU         6000
#define WPPOIDM_PD_ICON             9010
#define WPPOIDM_PD_DETAIL           9009
#define WPPOICM_PD_MENU             9000
#define WPPOIDM_PD_STATUS           9003
#define WPPOIDM_PD_HOLD             9004
#define WPPOIDM_PD_RELEASE          9005
#define WPPOIDM_PD_DELETE_JOBS      9016
#define WPPOIDM_PD_REFRESH          9013
#define WPPOIDM_PD_DEFAULT          9100
#define WPPOIDM_PD_INSTALL          8001


/* C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

/* C++ parent defs */
#ifndef SOM_WPAbstract_xh
#include <wpabs.xh>
#endif

#ifndef WPPrinter_API
#define WPPrinter_API
/*
 * -- The Class API
 */

/*
 * Start of bindings for IDL types
 */

class SOMClass;
class SOMObject;
class WPFolder;
class M_WPObject;
class WPObject;
class WPImageFile;
class M_WPAbstract;
class M_WPPrinter;

/*
 * End of bindings for IDL types.
 */

/* A procedure to create the WPPrinter Class */
class M_WPPrinter;
SOMEXTERN M_WPPrinter * SOMLINK WPPrinterNewClass(
		integer4 majorVersion,
		integer4 minorVersion);

/* The API to the WPPrinter class object, and the methods it introduces. */
SOMEXTERN struct WPPrinterClassDataStructure {
	M_WPPrinter *classObject;
	somMToken pdvNew;
	somMToken pdvOpen;
	somMToken pdvPrintDestType;
	somMToken pdvQueueName;
	somMToken pdvComputerName;
	somMToken pdvSetViewStatus;
	somMToken pdvSetDialogPrintFlag;
	somMToken pdvIsDialogPrintOn;
	somMToken pdvGetJobFolderhWnd;
	somMToken pdvSetPrintDestType;
	somMToken pdvSetQueueName;
	somMToken pdvSetComputerName;
	somMToken pdvSetTitle;
	somMToken pdvHoldQueue;
	somMToken pdvReleaseQueue;
	somMToken pdvChangeQueue;
	somMToken pdvAddJob;
	somMToken pdvDeleteJob;
	somMToken pdvDeleteAllJob;
	somMToken pdvHoldJob;
	somMToken pdvReleaseJob;
	somMToken pdvChangeJob;
	somMToken pdvHasThisPort;
	somMToken pdvHasThisPDriver;
	somMToken pdvHasThisQDriver;
	somMToken pdvGetQueueObject;
	somMToken pdvGetCountryData;
	somMToken pdvSetCountryData;
	somMToken pdvGetJobDetailTable;
	somMToken pdvGetJobFieldInfo;
	somMToken pdvPrintPD;
	somMToken pdvFreePrintDest;
	somMToken pdvNewRemote;
	somMToken pdvCopyRemote;
	somMToken pdvCapabilities;
	somMToken pdvSetCapabilities;
	somMToken pdvLogonName;
	somMToken pdvSetLogonName;
	somMToken pdvLocalPrintDriverOnly;
	somMToken pdvSetLocalPrintDriverOnly;
	somMToken pdvRemotePDriverList;
	somMToken pdvSetRemotePDriverList;
	somMToken pdvPrintSpecificFormat;
	somMToken pdvSetPrintSpecificFormat;
	somMToken pdvRemoteAdminCopy;
	somMToken pdvRemoteAdminCreate;
	somMToken pdvRemoteAdminDelete;
	somMToken pdvAddJobViewer;
	somMToken pdvDelJobViewer;
	somMToken pdvTimerTicks;
	somMToken pdvSetTimerTicks;
	somMToken wpDeleteAllJobs;
	somMToken wpHoldPrinter;
	somMToken wpReleasePrinter;
	somMToken wpQueryComputerName;
	somMToken wpQueryPrinterName;
	somMToken wpSetComputerName;
	somMToken wpSetPrinterName;
	somMToken wpSetDefaultPrinter;
	somMToken pdvSetLSAlias;
	somMToken pdvLSAlias;
	somMToken pdvLocalAlias;
	somMToken pdvSetLocalAlias;
	somMToken pdvRemoteJobView;
	somMToken pdvSetRemoteData;
	somMToken pdvCopy;
	somMToken pdvSetJobDetailTable;
	somMToken pdvGetQueueStatusLine;
	somMToken pdvSetQueueStatusLine;
	somMToken pdvGetNewDlg;
	somMToken pdvSetNewDlg;
	somMToken pdvGetLastRefreshTime;
	somMToken pdvSetLastRefreshTime;
	somMToken wpSetQueueOptions;
	somMToken wpQueryQueueOptions;
	somMToken wpSetRemoteOptions;
	somMToken wpQueryRemoteOptions;
	somMToken wpJobAdded;
	somMToken wpJobChanged;
	somMToken wpJobDeleted;
	somMToken pdvSetPrinterStatusLine;
	somMToken pdvGetPrinterStatusLine;
	somMToken pdvQueryXSplitBarDetail;
	somMToken pdvSetXSplitBarDetail;
	somMToken wpSetJobProperties;
	somMToken pdvSetDetailsColumnVisibility;
	somMToken pdvIsDetailsColumnVisible;
	somMToken pdvResetTimer;
	somMToken pdvSetErrorIcon;
} SOMDLINK WPPrinterClassData;
#define _WPPrinter WPPrinterClassData.classObject

/* The API to parentMtabs for WPPrinter, and the instance data it introduces. */
SOMEXTERN struct WPPrinterCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK WPPrinterCClassData;

/*
 * -- Typedefs for WPPrinter Method Procedures
 */
SOMEXTERN {
typedef BOOL   SOMLINK somTP_WPPrinter_wpDeleteAllJobs(WPPrinter *somSelf);
typedef somTP_WPPrinter_wpDeleteAllJobs *somTD_WPPrinter_wpDeleteAllJobs;
typedef BOOL   SOMLINK somTP_WPPrinter_wpHoldPrinter(WPPrinter *somSelf);
typedef somTP_WPPrinter_wpHoldPrinter *somTD_WPPrinter_wpHoldPrinter;
typedef BOOL   SOMLINK somTP_WPPrinter_wpReleasePrinter(WPPrinter *somSelf);
typedef somTP_WPPrinter_wpReleasePrinter *somTD_WPPrinter_wpReleasePrinter;
typedef ULONG   SOMLINK somTP_WPPrinter_wpQueryComputerName(WPPrinter *somSelf, 
		PSZ pszComputerName);
typedef somTP_WPPrinter_wpQueryComputerName *somTD_WPPrinter_wpQueryComputerName;
typedef BOOL   SOMLINK somTP_WPPrinter_wpQueryPrinterName(WPPrinter *somSelf, 
		PSZ pszPrinterName);
typedef somTP_WPPrinter_wpQueryPrinterName *somTD_WPPrinter_wpQueryPrinterName;
typedef BOOL   SOMLINK somTP_WPPrinter_wpSetComputerName(WPPrinter *somSelf, 
		PSZ pszComputerName);
typedef somTP_WPPrinter_wpSetComputerName *somTD_WPPrinter_wpSetComputerName;
typedef BOOL   SOMLINK somTP_WPPrinter_wpSetPrinterName(WPPrinter *somSelf, 
		PSZ pszPrinterName);
typedef somTP_WPPrinter_wpSetPrinterName *somTD_WPPrinter_wpSetPrinterName;
typedef BOOL   SOMLINK somTP_WPPrinter_wpSetDefaultPrinter(WPPrinter *somSelf);
typedef somTP_WPPrinter_wpSetDefaultPrinter *somTD_WPPrinter_wpSetDefaultPrinter;
typedef BOOL   SOMLINK somTP_WPPrinter_wpSetQueueOptions(WPPrinter *somSelf, 
		ULONG ulOptions);
typedef somTP_WPPrinter_wpSetQueueOptions *somTD_WPPrinter_wpSetQueueOptions;
typedef ULONG   SOMLINK somTP_WPPrinter_wpQueryQueueOptions(WPPrinter *somSelf);
typedef somTP_WPPrinter_wpQueryQueueOptions *somTD_WPPrinter_wpQueryQueueOptions;
typedef BOOL   SOMLINK somTP_WPPrinter_wpSetRemoteOptions(WPPrinter *somSelf, 
		ULONG ulRefreshInterval, 
		ULONG flAllJobs);
typedef somTP_WPPrinter_wpSetRemoteOptions *somTD_WPPrinter_wpSetRemoteOptions;
typedef BOOL   SOMLINK somTP_WPPrinter_wpQueryRemoteOptions(WPPrinter *somSelf, 
		PULONG pulRefreshInterval, 
		PULONG pflAllJobs);
typedef somTP_WPPrinter_wpQueryRemoteOptions *somTD_WPPrinter_wpQueryRemoteOptions;
typedef BOOL   SOMLINK somTP_WPPrinter_wpJobAdded(WPPrinter *somSelf, 
		ULONG ulJobId);
typedef somTP_WPPrinter_wpJobAdded *somTD_WPPrinter_wpJobAdded;
typedef BOOL   SOMLINK somTP_WPPrinter_wpJobChanged(WPPrinter *somSelf, 
		ULONG ulJobId, 
		ULONG ulField);
typedef somTP_WPPrinter_wpJobChanged *somTD_WPPrinter_wpJobChanged;
typedef BOOL   SOMLINK somTP_WPPrinter_wpJobDeleted(WPPrinter *somSelf, 
		ULONG ulJobId);
typedef somTP_WPPrinter_wpJobDeleted *somTD_WPPrinter_wpJobDeleted;
typedef BOOL   SOMLINK somTP_WPPrinter_wpSetJobProperties(WPPrinter *somSelf, 
		PDRIVDATA pDrivData);
typedef somTP_WPPrinter_wpSetJobProperties *somTD_WPPrinter_wpSetJobProperties;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef M_WPPrinter*   SOMLINK somTP_WPPrinter_somGetClass(WPPrinter *somSelf);
typedef somTP_WPPrinter_somGetClass *somTD_WPPrinter_somGetClass;
}

#endif /* WPPrinter_API */


/*
 * -- This emitter normally treats Method Tokens as Thunks,
 * -- but the sc modifier "nothunks" was used, so somResolve will be called.
 */
#undef somresolve_
#define somresolve_(obj,mToken) (somResolve(obj,mToken))

/*
 * -- The C++ Wrapper Class for WPPrinter
 */
class WPPrinter : public WPAbstract
{
/*
 *  CLASS: WPPrinter
 * 
 *  CLASS HIERARCHY:
 *     SOMObject
 *       ÀÄÄ WPObject
 *             ÀÄÄ WPAbstract
 *                   ÀÄÄ WPPrinter
 * 
 *  DESCRIPTION:
 *     This is the print destination object class.
 *     An instance of this class can be created as a Workplace object.
 *     An instance of this class is created initially by the system in
 *     its template form.  It has the title "Create print destination"
 *     and resides in the "Templates" folder.  Instances of this class
 *     are also created initially by the system for each print destination
 *     configured.  Each instance will have a title corresponding to the
 *     description of the configured queue and printer and will reside on
 *     the desktop.
 * 
 */
public:

// WPPrinter::new creates the class object if necessary, and then uses somNewNoInit
// to allocate memory and create the object. Initialization is in ctors.
void *operator new(size_t)
{
   if (!_WPPrinter) WPPrinterNewClass(WPPrinter_MajorVersion,WPPrinter_MinorVersion);
   return (void*)
      SOM_Resolve(_WPPrinter,SOMClass,somNewNoInit)
         ((SOMClass *)((void*)_WPPrinter));
}

// WPPrinter::delete uses somDestruct.
void operator delete(void * obj)
{
   if (obj && *(void**)obj) {
      SOM_Resolve(obj,SOMObject,somDestruct)
         ((SOMObject*)obj, 1, 0);
   }
}

WPPrinter& operator=(WPPrinter& fromObj)
{
   this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
   return *this;
}

WPPrinter()
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (WPPrinterCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

WPPrinter(WPPrinter* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (WPPrinterCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}

WPPrinter(const WPPrinter* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (WPPrinterCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/* method: wpDeleteAllJobs */
BOOL   wpDeleteAllJobs()
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpDeleteAllJobs)
	(this);
}


/* method: wpHoldPrinter */
BOOL   wpHoldPrinter()
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpHoldPrinter)
	(this);
}


/* method: wpReleasePrinter */
BOOL   wpReleasePrinter()
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpReleasePrinter)
	(this);
}


/* method: wpQueryComputerName */
ULONG   wpQueryComputerName(PSZ pszComputerName)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpQueryComputerName)
	(this,pszComputerName);
}


/* method: wpQueryPrinterName */
BOOL   wpQueryPrinterName(PSZ pszPrinterName)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpQueryPrinterName)
	(this,pszPrinterName);
}


/* method: wpSetComputerName */
BOOL   wpSetComputerName(PSZ pszComputerName)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpSetComputerName)
	(this,pszComputerName);
}


/* method: wpSetPrinterName */
BOOL   wpSetPrinterName(PSZ pszPrinterName)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpSetPrinterName)
	(this,pszPrinterName);
}


/* method: wpSetDefaultPrinter */
BOOL   wpSetDefaultPrinter()
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpSetDefaultPrinter)
	(this);
}


/* method: wpSetQueueOptions */
BOOL   wpSetQueueOptions(ULONG ulOptions)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpSetQueueOptions)
	(this,ulOptions);
}


/* method: wpQueryQueueOptions */
ULONG   wpQueryQueueOptions()
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpQueryQueueOptions)
	(this);
}


/* method: wpSetRemoteOptions */
BOOL   wpSetRemoteOptions(ULONG ulRefreshInterval, 
		ULONG flAllJobs)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpSetRemoteOptions)
	(this,ulRefreshInterval,flAllJobs);
}


/* method: wpQueryRemoteOptions */
BOOL   wpQueryRemoteOptions(PULONG pulRefreshInterval, 
		PULONG pflAllJobs)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpQueryRemoteOptions)
	(this,pulRefreshInterval,pflAllJobs);
}


/* method: wpJobAdded */
BOOL   wpJobAdded(ULONG ulJobId)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpJobAdded)
	(this,ulJobId);
}


/* method: wpJobChanged */
BOOL   wpJobChanged(ULONG ulJobId, 
		ULONG ulField)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpJobChanged)
	(this,ulJobId,ulField);
}


/* method: wpJobDeleted */
BOOL   wpJobDeleted(ULONG ulJobId)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpJobDeleted)
	(this,ulJobId);
}


/* method: wpSetJobProperties */
BOOL   wpSetJobProperties(PDRIVDATA pDrivData)
{
   return SOM_ResolveD(this,WPPrinter,WPPrinter,wpSetJobProperties)
	(this,pDrivData);
}


/*
 * Reintroduce inherited methods
 */

/* method: somGetClass */
M_WPPrinter*  somGetClass()
{
/*
 *  Return the receiver's class.
 */
   return SOM_ResolveD(this,WPPrinter,SOMObject,somGetClass)
	(this);
}



};   /* WPPrinter */



#endif       /* SOM_WPPrinter_xh */

#ifndef SOM_M_WPPrinter_xh
#define SOM_M_WPPrinter_xh

class M_WPPrinter;

#define M_WPPrinter_MajorVersion 1
#define M_WPPrinter_MinorVersion 1

/* C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

/* C++ parent defs */
#ifndef SOM_M_WPAbstract_xh
#include <wpabs.xh>
#endif

#ifndef M_WPPrinter_API
#define M_WPPrinter_API
/*
 * -- The Class API
 */

/*
 * Start of bindings for IDL types
 */


/*
 * End of bindings for IDL types.
 */

/*
 * -- M_WPPrinter is a metaclass for WPPrinter. Make sure WPPrinter is known.
 */
class WPPrinter;


/* A procedure to create the M_WPPrinter Class */
SOMEXTERN SOMClass * SOMLINK M_WPPrinterNewClass(
		integer4 majorVersion,
		integer4 minorVersion);

/* The API to the M_WPPrinter class object, and the methods it introduces. */
SOMEXTERN struct M_WPPrinterClassDataStructure {
	SOMClass *classObject;
} SOMDLINK M_WPPrinterClassData;
#define _M_WPPrinter M_WPPrinterClassData.classObject

/* The API to parentMtabs for M_WPPrinter, and the instance data it introduces. */
SOMEXTERN struct M_WPPrinterCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK M_WPPrinterCClassData;

/*
 * -- Typedefs for M_WPPrinter Method Procedures
 */
SOMEXTERN {

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef WPPrinter*   SOMLINK somTP_M_WPPrinter_somNew(M_WPPrinter *somSelf);
typedef somTP_M_WPPrinter_somNew *somTD_M_WPPrinter_somNew;
}

#endif /* M_WPPrinter_API */


/*
 * -- This emitter normally treats Method Tokens as Thunks,
 * -- but the sc modifier "nothunks" was used, so somResolve will be called.
 */
#undef somresolve_
#define somresolve_(obj,mToken) (somResolve(obj,mToken))

/*
 * -- The C++ Wrapper Class for M_WPPrinter
 */
class M_WPPrinter : public M_WPAbstract
{
public:

// M_WPPrinter::new creates the class object if necessary, and then uses somNewNoInit
// to allocate memory and create the object. Initialization is in ctors.
void *operator new(size_t)
{
   if (!_M_WPPrinter) M_WPPrinterNewClass(M_WPPrinter_MajorVersion,M_WPPrinter_MinorVersion);
   return (void*)
      SOM_Resolve(_M_WPPrinter,SOMClass,somNewNoInit)
         ((SOMClass *)((void*)_M_WPPrinter));
}

// M_WPPrinter::delete uses somDestruct.
void operator delete(void * obj)
{
   if (obj && *(void**)obj) {
      SOM_Resolve(obj,SOMObject,somDestruct)
         ((SOMObject*)obj, 1, 0);
   }
}

M_WPPrinter& operator=(M_WPPrinter& fromObj)
{
   this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
   return *this;
}

M_WPPrinter()
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (M_WPPrinterCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

M_WPPrinter(M_WPPrinter* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (M_WPPrinterCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}

M_WPPrinter(const M_WPPrinter* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (M_WPPrinterCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/*
 * Reintroduce inherited methods
 */

/* method: somNew */
WPPrinter*  somNew()
{
   return SOM_ResolveD(this,M_WPPrinter,SOMClass,somNew)
	(this);
}



};   /* M_WPPrinter */



#endif       /* SOM_M_WPPrinter_xh */
