This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/7943: Compilation gives many strange errors


>Number:         7943
>Category:       c++
>Synopsis:       Compilation gives many strange errors
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Mon Sep 16 21:36:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Mika Lindqvist
>Release:        2.95.3-5
>Organization:
>Environment:
Cygwin 1.3.12
>Description:
Doesn't handle classes defining functions that use the current class as a function parameter.
>How-To-Repeat:
/* This file is Copyright 2002 Level Control Systems.  See the included LICENSE.txt file for details. */

/******************************************************************************
/
/   File:      Flattenable.h
/
/   Description:    version of Be's BFlattenable base class.
/
******************************************************************************/

#ifndef MuscleFlattenable_h
#define MuscleFlattenable_h

#ifdef __CYGWIN__
#include <windows.h>
#include <stddef.h>
#endif

#include <string.h>
#include "support/MuscleSupport.h"

namespace muscle {

/** This class is an interface representing an object that knows how
 *  to save itself into an array of bytes, and recover its state from
 *  an array of bytes.
 */

class Flattenable
{
public:
   /** Constructor */
   Flattenable() {/* empty */}

   /** Destructor */
   virtual ~Flattenable() {/* empty */}

   /** Should return true iff every object of this type has a size that is known at compile time. */
   virtual bool IsFixedSize() const = 0;

   /** Should return the type code identifying this type of object.  */
   virtual type_code TypeCode() const = 0;

   /** Should return the number of bytes needed to store this object in its current state.  */
   virtual uint32 FlattenedSize() const = 0;

   /** 
    *  Should store this object's state into (buffer). 
    *  @param buffer The bytes to write this object's stat into.  Buffer must be at least FlattenedSize() bytes long.
    */
   virtual void Flatten(uint8 *buffer) const = 0;

   /** 
    *  Should return true iff a buffer with type_code (code) can be used to reconstruct
    *  this object's state.  Defaults implementation returns true iff (code) equals TypeCode() or B_RAW_DATA.
    *  @param code A type code constant, e.g. B_RAW_TYPE or B_STRING_TYPE, or something custom.
    *  @return True iff this object can Unflatten from a buffer of the given type, false otherwise.
    */
   virtual bool AllowsTypeCode(type_code code) const {return ((code == B_RAW_TYPE)||(code == TypeCode()));}

   /** 
    *  Should attempt to restore this object's state from the given buffer.
    *  @param buf The buffer of bytes to unflatten from.
    *  @param size Number of bytes in the buffer.
    *  @return B_NO_ERROR if the Unflattening was successful, else B_ERROR.
    */
   virtual status_t Unflatten(const uint8 *buf, uint32 size) = 0;

   /** 
    *  Causes (copyTo)'s state to set from this Flattenable, if possible. 
    *  Default implementation is not very efficient, since it has to flatten
    *  this object into a byte buffer, and then unflatten the bytes back into 
    *  (copyTo).  However, you can override CopyToImplementation() to provide 
    *  a more efficient implementation when possible.
    *  @param copyTo Object to make into the equivalent of this object.  (copyTo)
    *                May be any subclass of Flattenable.
    *  @return B_NO_ERROR on success, or B_ERROR on failure (typecode mismatch, out-of-memory, etc)
    */
   status_t CopyTo(Flattenable /* & */ copyTo) const 
   {
      return (this == &copyTo) ? B_NO_ERROR : ((copyTo.AllowsTypeCode(TypeCode())) ? CopyToImplementation(copyTo) : B_ERROR);
   }

   /** 
    *  Causes our state to be set from (copyFrom)'s state, if possible. 
    *  Default implementation is not very efficient, since it has to flatten
    *  (copyFrom) into a byte buffer, and then unflatten the bytes back into 
    *  (this).  However, you can override CopyFromImplementation() to provide 
    *  a more efficient implementation when possible.
    *  @param copyFrom Object to read from to set the state of this object.  
    *                  (copyFrom) may be any subclass of Flattenable.
    *  @return B_NO_ERROR on success, or B_ERROR on failure (typecode mismatch, out-of-memory, etc)
    */
   status_t CopyFrom(const Flattenable & copyFrom)
   {
      return (this == &copyFrom) ? B_NO_ERROR : ((AllowsTypeCode(copyFrom.TypeCode())) ? CopyFromImplementation(copyFrom) : B_ERROR);
   }

   /** 
    * Convenience method for writing data into a byte buffer.
    * Writes data consecutively into a byte buffer.  The output buffer is
    * assumed to be large enough to hold the data.
    * @param outBuf Flat buffer to write to
    * @param writeOffset Offset into buffer to read from.  Incremented by (blockSize) on success.
    * @param copyFrom memory location to copy bytes from
    * @param blockSize number of bytes to copy
    */
   static void WriteData(uint8 * outBuf, uint32 * writeOffset, const void * copyFrom, uint32 blockSize)
   {
      memcpy(&outBuf[*writeOffset], copyFrom, blockSize);
      *writeOffset += blockSize;
   };
    
   /** 
    * Convenience method for safely reading bytes from a byte buffer.  (Checks to avoid buffer overrun problems)
    * @param inBuf Flat buffer to read bytes from
    * @param outputBufferBytes total size of the input buffer
    * @param readOffset Offset into buffer to read from.  Incremented by (blockSize) on success.
    * @param copyTo memory location to copy bytes to
    * @param blockSize number of bytes to copy
    * @return B_NO_ERROR if the data was successfully read, B_ERROR if the data couldn't be read (because the buffer wasn't large enough)
    */
   static status_t ReadData(const uint8 * inBuf, uint32 inputBufferBytes, uint32 * readOffset, void * copyTo, uint32 blockSize)
   {
      if ((*readOffset + blockSize) > inputBufferBytes) return B_ERROR;
      memcpy(copyTo, &inBuf[*readOffset], blockSize);
      *readOffset += blockSize;
      return B_NO_ERROR;
   };

protected:
   /** 
    *  Called by CopyTo().  Sets (copyTo) to set from this Flattenable, if possible. 
    *  Default implementation is not very efficient, since it has to flatten
    *  this object into a byte buffer, and then unflatten the bytes back into 
    *  (copyTo).  However, you can override CopyToImplementation() to provide 
    *  a more efficient implementation when possible.
    *  @param copyTo Object to make into the equivalent of this object.  (copyTo)
    *                May be any subclass of Flattenable, but has been pre-screened by CopyTo()
    *                to make sure it's not (&this), and that is allows our type code.
    *  @return B_NO_ERROR on success, or B_ERROR on failure (out-of-memory, etc)
    */
   virtual status_t CopyToImplementation(Flattenable & copyTo) const
   {
      uint8 smallBuf[256];
      uint8 * bigBuf = NULL;
      uint32 flatSize = FlattenedSize();
      if (flatSize > ARRAYITEMS(smallBuf)) 
      {
         bigBuf = newnothrow uint8[flatSize];
         if (bigBuf == NULL)
         {
            WARN_OUT_OF_MEMORY;
            return B_ERROR;
         }
      }
      Flatten(bigBuf ? bigBuf : smallBuf);
      status_t ret = copyTo.Unflatten(bigBuf ? bigBuf : smallBuf, flatSize);
      delete [] bigBuf;
      return ret;
   }

   /** 
    *  Called by CopyFrom().  Sets our state from (copyFrom) if possible. 
    *  Default implementation is not very efficient, since it has to flatten
    *  (copyFrom) into a byte buffer, and then unflatten the bytes back into 
    *  (this).  However, you can override CopyToImplementation() to provide 
    *  a more efficient implementation when possible.
    *  @param copyFrom Object to set this object's state from.
    *                  May be any subclass of Flattenable, but has been pre-screened by CopyFrom()
    *                  to make sure it's not (&this), and that we allow its type code.
    *  @return B_NO_ERROR on success, or B_ERROR on failure (out-of-memory, etc)
    */
   virtual status_t CopyFromImplementation(const Flattenable & copyFrom)
   {
      uint8 smallBuf[256];
      uint8 * bigBuf = NULL;
      uint32 flatSize = copyFrom.FlattenedSize();
      if (flatSize > ARRAYITEMS(smallBuf)) 
      {
         bigBuf = newnothrow uint8[flatSize];
         if (bigBuf == NULL)
         {
            WARN_OUT_OF_MEMORY;
            return B_ERROR;
         }
      }
      copyFrom.Flatten(bigBuf ? bigBuf : smallBuf);
      status_t ret = Unflatten(bigBuf ? bigBuf : smallBuf, flatSize);
      delete [] bigBuf;
      return ret;
   }
};

/*-------------------------------------------------------------*/
/*-------------------------------------------------------------*/

};  // end namespace muscle

#endif /* _MUSCLEFLATTENABLE_H */
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="AbstractMessageIOGateway.ii"
Content-Disposition: inline; filename="AbstractMessageIOGateway.ii"

# 1 "../src/muscle/iogateway/AbstractMessageIOGateway.cpp"
   


# 1 "/usr/include/w32api/windows.h" 1 3
 

















 










# 40 "/usr/include/w32api/windows.h" 3







# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stdarg.h" 1 3
 

































































 






typedef void *__gnuc_va_list;



 



 

















void va_end (__gnuc_va_list);		 


 



 












 























 
 













# 176 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stdarg.h" 3


 




 

 

 

typedef __gnuc_va_list va_list;

























# 47 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/windef.h" 1 3







extern "C" {




















































































































































# 168 "/usr/include/w32api/windef.h" 3






























 


# 209 "/usr/include/w32api/windef.h" 3


typedef unsigned long DWORD;
typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
 


typedef WINBOOL BOOL;



typedef unsigned char BYTE;

typedef BOOL *PBOOL,*LPBOOL;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BYTE *PBYTE,*LPBYTE;
typedef int *PINT,*LPINT;
typedef WORD *PWORD,*LPWORD;
typedef long *LPLONG;
typedef DWORD *PDWORD,*LPDWORD;
typedef const  void *PCVOID,*LPCVOID;
typedef int INT;
typedef unsigned int UINT,*PUINT,*LPUINT;

# 1 "/usr/include/w32api/winnt.h" 1 3






 

# 17 "/usr/include/w32api/winnt.h" 3

# 28 "/usr/include/w32api/winnt.h" 3



extern "C" {


# 1 "/usr/include/w32api/winerror.h" 1 3































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































 


# 34 "/usr/include/w32api/winnt.h" 2 3



# 1 "../src/muscle/util/string.h" 1
 

 





































 




# 1 "/usr/include/w32api/windows.h" 1 3
 











# 124 "/usr/include/w32api/windows.h" 3

# 46 "../src/muscle/util/string.h" 2



# 1 "../src/muscle/util/string.h" 1
 

 





































 
# 496 "../src/muscle/util/string.h"

# 49 "../src/muscle/util/string.h" 2




# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3








 


# 21 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3



 


 





 


# 63 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 





 


















 





 

 

# 133 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 

 


































typedef unsigned int size_t;






















 




 

# 273 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


# 285 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 

 

# 319 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3




 






















# 53 "../src/muscle/util/string.h" 2

int    * strncpy(char *, const char *, size_t);


# 1 "/usr/include/ctype.h" 1 3



# 1 "/usr/include/_ansi.h" 1 3
 

 











# 1 "/usr/include/sys/config.h" 1 3



 
 
# 14 "/usr/include/sys/config.h" 3


# 25 "/usr/include/sys/config.h" 3


 








# 46 "/usr/include/sys/config.h" 3


# 57 "/usr/include/sys/config.h" 3























































































 
# 156 "/usr/include/sys/config.h" 3




























# 196 "/usr/include/sys/config.h" 3


 
























 




















































 













# 15 "/usr/include/_ansi.h" 2 3


 
 































# 67 "/usr/include/_ansi.h" 3


 







 

















# 4 "/usr/include/ctype.h" 2 3


extern "C" { 

int __attribute__((__cdecl__))   isalnum    (int __c)  ;
int __attribute__((__cdecl__))   isalpha    (int __c)  ;
int __attribute__((__cdecl__))   iscntrl    (int __c)  ;
int __attribute__((__cdecl__))   isdigit    (int __c)  ;
int __attribute__((__cdecl__))   isgraph    (int __c)  ;
int __attribute__((__cdecl__))   islower    (int __c)  ;
int __attribute__((__cdecl__))   isprint    (int __c)  ;
int __attribute__((__cdecl__))   ispunct    (int __c)  ;
int __attribute__((__cdecl__))   isspace    (int __c)  ;
int __attribute__((__cdecl__))   isupper    (int __c)  ;
int __attribute__((__cdecl__))   isxdigit   (int __c)  ;
int __attribute__((__cdecl__))   tolower    (int __c)  ;
int __attribute__((__cdecl__))   toupper    (int __c)  ;


int __attribute__((__cdecl__))   isblank    (int __c)  ;
int __attribute__((__cdecl__))   isascii    (int __c)  ;
int __attribute__((__cdecl__))   toascii    (int __c)  ;
int __attribute__((__cdecl__))   _tolower    (int __c)  ;
int __attribute__((__cdecl__))   _toupper    (int __c)  ;











extern	__attribute__(( dllimport ))   const  char	_ctype_[];

# 61 "/usr/include/ctype.h" 3







} 


# 57 "../src/muscle/util/string.h" 2

# 1 "../src/muscle/support/Flattenable.h" 1
 

 











# 1 "/usr/include/w32api/windows.h" 1 3
 











# 124 "/usr/include/w32api/windows.h" 3

# 15 "../src/muscle/support/Flattenable.h" 2

# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3








 







 

 




 


 





 


# 63 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 





 


















 





 

 





















typedef int ptrdiff_t;









 




 

 


# 190 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3





 




 





























 



















































typedef unsigned int  wint_t;




 

 

# 319 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3




 













 








# 16 "../src/muscle/support/Flattenable.h" 2



# 1 "../src/muscle/util/string.h" 1
 

 





































 
# 496 "../src/muscle/util/string.h"

# 19 "../src/muscle/support/Flattenable.h" 2

# 1 "../src/muscle/support/MuscleSupport.h" 1
 

 












# 1 "/usr/include/w32api/windows.h" 1 3
 











# 124 "/usr/include/w32api/windows.h" 3

# 16 "../src/muscle/support/MuscleSupport.h" 2






 
 
 
namespace muscle
{
    
};

 
 




 
 






 






# 1 "/usr/include/unistd.h" 1 3
 




# 1 "/usr/include/sys/unistd.h" 1 3




extern "C" {



# 1 "/usr/include/sys/types.h" 1 3
 




















# 1 "/usr/include/sys/_types.h" 1 3
 

 








typedef long _off_t;


typedef int _ssize_t;





# 22 "/usr/include/sys/types.h" 2 3












# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3
# 345 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3

# 34 "/usr/include/sys/types.h" 2 3

# 1 "/usr/include/machine/types.h" 1 3









typedef long int __off_t;
typedef int __pid_t;

__extension__ typedef long long int __loff_t;








# 35 "/usr/include/sys/types.h" 2 3


 


















 
typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned long	u_long;



typedef	unsigned short	ushort;		 
typedef	unsigned int	uint;		 



typedef unsigned long  clock_t;




typedef long  time_t;


 

struct timespec {
  time_t  tv_sec;    
  long    tv_nsec;   
};

struct itimerspec {
  struct timespec  it_interval;   
  struct timespec  it_value;      
};


typedef	long	daddr_t;
typedef	char *	caddr_t;


typedef	unsigned long	ino_t;








typedef short int __int16_t;
typedef unsigned short int __uint16_t;





typedef int __int32_t;
typedef unsigned int __uint32_t;






__extension__ typedef long long __int64_t;
__extension__ typedef unsigned long long __uint64_t;



typedef unsigned long vm_offset_t;
typedef unsigned long vm_size_t;



typedef char int8_t;
typedef unsigned char u_int8_t;
typedef short int16_t;
typedef unsigned short u_int16_t;
typedef int int32_t;
typedef unsigned int u_int32_t;
typedef long long int64_t;
typedef unsigned long long u_int64_t;
typedef int32_t register_t;


 






















typedef int pid_t;
typedef	long key_t;
typedef _ssize_t ssize_t;


typedef	char *	addr_t;
typedef int mode_t;
# 179 "/usr/include/sys/types.h" 3


typedef unsigned short nlink_t;

 









 









typedef	long	fd_mask;





 

typedef	struct _types_fd_set {
	fd_mask	fds_bits[((( 64  )+((  (sizeof (fd_mask) * 8 )  )-1))/(  (sizeof (fd_mask) * 8 )  )) ];
} _types_fd_set;


















 






typedef unsigned long  clockid_t;




typedef unsigned long  timer_t;




typedef long useconds_t;


# 1 "/usr/include/sys/features.h" 1 3
 























extern "C" {


 

# 72 "/usr/include/sys/features.h" 3





















}


# 252 "/usr/include/sys/types.h" 2 3



 






# 355 "/usr/include/sys/types.h" 3


# 1 "/usr/include/cygwin/types.h" 1 3
 











extern "C"
{





# 1 "/usr/include/sys/sysmacros.h" 1 3
 























# 20 "/usr/include/cygwin/types.h" 2 3


typedef struct timespec timespec_t, timestruc_t;

typedef long __off32_t;
typedef long long __off64_t;



typedef __off32_t off_t;


typedef short __dev16_t;
typedef unsigned long __dev32_t;



typedef __dev16_t dev_t;


typedef long blksize_t;

typedef long __blkcnt32_t;
typedef long long __blkcnt64_t;



typedef __blkcnt32_t  blkcnt_t;


typedef unsigned short __uid16_t;
typedef unsigned short __gid16_t;
typedef unsigned long  __uid32_t;
typedef unsigned long  __gid32_t;




typedef __uid16_t uid_t;
typedef __gid16_t gid_t;




typedef void *pthread_t;
typedef void *pthread_mutex_t;

typedef void *pthread_key_t;
typedef void *pthread_attr_t;
typedef void *pthread_mutexattr_t;
typedef void *pthread_condattr_t;
typedef void *pthread_cond_t;

   
typedef struct
{
  pthread_mutex_t mutex;
  int state;
}
pthread_once_t;
typedef void *pthread_rwlock_t;
typedef void *pthread_rwlockattr_t;

# 100 "/usr/include/cygwin/types.h" 3




}

# 357 "/usr/include/sys/types.h" 2 3







# 9 "/usr/include/sys/unistd.h" 2 3




# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3








 


# 21 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3



 


 





 


# 63 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 





 


















 





 

 


# 128 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 




 

 


# 190 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3





 




 


# 271 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3
















 

 

# 319 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3




 













 








# 13 "/usr/include/sys/unistd.h" 2 3


extern char **environ;

void	__attribute__((__cdecl__))   _exit    (int __status ) __attribute__ ( (noreturn) )   ;

int	__attribute__((__cdecl__))   access   (const char *__path, int __amode )  ;
unsigned  __attribute__((__cdecl__))   alarm    (unsigned __secs )  ;
int     __attribute__((__cdecl__))   chdir    (const char *__path )  ;
int     __attribute__((__cdecl__))   chmod    (const char *__path, mode_t __mode )  ;
int     __attribute__((__cdecl__))   chown    (const char *__path, uid_t __owner, gid_t __group )  ;

int     __attribute__((__cdecl__))   chroot    (const char *__path )  ;

int     __attribute__((__cdecl__))   close    (int __fildes )  ;
char    __attribute__((__cdecl__))   *ctermid    (char *__s )  ;
char    __attribute__((__cdecl__))   *cuserid    (char *__s )  ;
int     __attribute__((__cdecl__))   dup    (int __fildes )  ;
int     __attribute__((__cdecl__))   dup2    (int __fildes, int __fildes2 )  ;

void	__attribute__((__cdecl__))   endusershell    (void)  ;

int     __attribute__((__cdecl__))   execl    (const char *__path, const char *, ... )  ;
int     __attribute__((__cdecl__))   execle    (const char *__path, const char *, ... )  ;
int     __attribute__((__cdecl__))   execlp    (const char *__file, const char *, ... )  ;
int     __attribute__((__cdecl__))   execv    (const char *__path, char * const __argv[] )  ;
int     __attribute__((__cdecl__))   execve    (const char *__path, char * const __argv[], char * const __envp[] )  ;
int     __attribute__((__cdecl__))   execvp    (const char *__file, char * const __argv[] )  ;

int     __attribute__((__cdecl__))   fchdir    (int __fildes)  ;

int     __attribute__((__cdecl__))   fchmod    (int __fildes, mode_t __mode )  ;
int     __attribute__((__cdecl__))   fchown    (int __fildes, uid_t __owner, gid_t __group )  ;
pid_t   __attribute__((__cdecl__))   fork    (void )  ;
long    __attribute__((__cdecl__))   fpathconf    (int __fd, int __name )  ;
int     __attribute__((__cdecl__))   fsync    (int __fd)  ;
char    __attribute__((__cdecl__))   *getcwd    (char *__buf, size_t __size )  ;

int	__attribute__((__cdecl__))   getdomainname    (char *__name, size_t __len)  ;

gid_t   __attribute__((__cdecl__))   getegid    (void )  ;
uid_t   __attribute__((__cdecl__))   geteuid    (void )  ;
gid_t   __attribute__((__cdecl__))   getgid    (void )  ;
int     __attribute__((__cdecl__))   getgroups    (int __gidsetsize, gid_t __grouplist[] )  ;
char    __attribute__((__cdecl__))   *getlogin    (void )  ;

int __attribute__((__cdecl__))   getlogin_r    (char *name, size_t namesize)   ;

char 	__attribute__((__cdecl__))   *getpass    (__const char *__prompt)  ;
size_t  __attribute__((__cdecl__))   getpagesize    (void)  ;
pid_t   __attribute__((__cdecl__))   getpgid    (pid_t)  ;
pid_t   __attribute__((__cdecl__))   getpgrp    (void )  ;
pid_t   __attribute__((__cdecl__))   getpid    (void )  ;
pid_t   __attribute__((__cdecl__))   getppid    (void )  ;
uid_t   __attribute__((__cdecl__))   getuid    (void )  ;

char *	__attribute__((__cdecl__))   getusershell    (void)  ;
char    __attribute__((__cdecl__))   *getwd    (char *__buf )  ;
int	__attribute__((__cdecl__))   iruserok    (unsigned long raddr, int superuser, const char *ruser, const char *luser)  ;

int     __attribute__((__cdecl__))   isatty    (int __fildes )  ;
int     __attribute__((__cdecl__))   lchown    (const char *__path, uid_t __owner, gid_t __group )  ;
int     __attribute__((__cdecl__))   link    (const char *__path1, const char *__path2 )  ;
int	__attribute__((__cdecl__))   nice    (int __nice_value )  ;
off_t   __attribute__((__cdecl__))   lseek    (int __fildes, off_t __offset, int __whence )  ;
long    __attribute__((__cdecl__))   pathconf    (const char *__path, int __name )  ;
int     __attribute__((__cdecl__))   pause    (void )  ;

int	__attribute__((__cdecl__))   pthread_atfork    (void (*)(void), void (*)(void), void (*)(void))  ;

int     __attribute__((__cdecl__))   pipe    (int __fildes[2] )  ;
ssize_t __attribute__((__cdecl__))   pread    (int __fd, void *__buf, size_t __nbytes, off_t __offset)  ;
ssize_t __attribute__((__cdecl__))   pwrite    (int __fd, const void *__buf, size_t __nbytes, off_t __offset)  ;
_ssize_t  __attribute__((__cdecl__))   read    (int __fd, void *__buf, size_t __nbyte )  ;

int	__attribute__((__cdecl__))   revoke    (char *path)  ;

int     __attribute__((__cdecl__))   rmdir    (const char *__path )  ;

int	__attribute__((__cdecl__))   ruserok    (const char *rhost, int superuser, const char *ruser, const char *luser)  ;




void *  __attribute__((__cdecl__))   sbrk     (size_t __incr)  ;


int     __attribute__((__cdecl__))   setegid    (gid_t __gid )  ;
int     __attribute__((__cdecl__))   seteuid    (uid_t __uid )  ;

int     __attribute__((__cdecl__))   setgid    (gid_t __gid )  ;
int     __attribute__((__cdecl__))   setpgid    (pid_t __pid, pid_t __pgid )  ;
int     __attribute__((__cdecl__))   setpgrp    (void )  ;
pid_t   __attribute__((__cdecl__))   setsid    (void )  ;
int     __attribute__((__cdecl__))   setuid    (uid_t __uid )  ;

void	__attribute__((__cdecl__))   setusershell    (void)  ;

unsigned __attribute__((__cdecl__))   sleep    (unsigned int __seconds )  ;
void    __attribute__((__cdecl__))   swab    (const void *, void *, ssize_t)  ;
long    __attribute__((__cdecl__))   sysconf    (int __name )  ;
pid_t   __attribute__((__cdecl__))   tcgetpgrp    (int __fildes )  ;
int     __attribute__((__cdecl__))   tcsetpgrp    (int __fildes, pid_t __pgrp_id )  ;
char    __attribute__((__cdecl__))   *ttyname    (int __fildes )  ;
int     __attribute__((__cdecl__))   unlink    (const char *__path )  ;
int     __attribute__((__cdecl__))   vhangup    (void )  ;
_ssize_t  __attribute__((__cdecl__))   write    (int __fd, const void *__buf, size_t __nbyte )  ;


pid_t   __attribute__((__cdecl__))   vfork    (void )  ;


 

int     __attribute__((__cdecl__))   _close    (int __fildes )  ;
pid_t   __attribute__((__cdecl__))   _fork    (void )  ;
pid_t   __attribute__((__cdecl__))   _getpid    (void )  ;
int     __attribute__((__cdecl__))   _link    (const char *__path1, const char *__path2 )  ;
off_t   __attribute__((__cdecl__))   _lseek    (int __fildes, off_t __offset, int __whence )  ;
_ssize_t  __attribute__((__cdecl__))   _read    (int __fd, void *__buf, size_t __nbyte )  ;
void *  __attribute__((__cdecl__))   _sbrk     (size_t __incr)  ;
int     __attribute__((__cdecl__))   _unlink    (const char *__path )  ;
_ssize_t  __attribute__((__cdecl__))   _write    (int __fd, const void *__buf, size_t __nbyte )  ;
int     __attribute__((__cdecl__))   _execve    (const char *__path, char * const __argv[], char * const __envp[] )  ;


int	__attribute__((__cdecl__))   getdtablesize    (void)  ;
int	__attribute__((__cdecl__))   setdtablesize    (int)  ;
useconds_t __attribute__((__cdecl__))   ualarm    (useconds_t __useconds, useconds_t __interval)  ;
unsigned __attribute__((__cdecl__))   usleep    (unsigned int __useconds)  ;
int     __attribute__((__cdecl__))   ftruncate    (int __fd, off_t __length)  ;
int     __attribute__((__cdecl__))   truncate    (const char *, off_t __length)  ;

 
 int	__attribute__((__cdecl__))   gethostname    (char *__name, size_t __len)  ;

char *	__attribute__((__cdecl__))   mktemp    (char *)  ;
int     __attribute__((__cdecl__))   sync    (void)  ;
int     __attribute__((__cdecl__))   readlink    (const char *__path, char *__buf, int __buflen)  ;
int     __attribute__((__cdecl__))   symlink    (const char *__name1, const char *__name2)  ;

















 










   




 




 



























 













 













  













 

 



 







}


# 6 "/usr/include/unistd.h" 2 3


# 1 "/usr/include/getopt.h" 1 3
 




































extern "C" {


extern int   opterr;       
extern int   optind;       
extern int   optopt;       
extern int   optreset;     
extern char *optarg;       

int getopt (int, char * const *, const char *);


}




# 84 "/usr/include/getopt.h" 3

# 8 "/usr/include/unistd.h" 2 3




# 51 "../src/muscle/support/MuscleSupport.h" 2




# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/new.h" 1 3
 




# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/new" 1 3
 
 




#pragma interface "new"
# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3
# 345 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3

# 8 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/new" 2 3

# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/exception" 1 3
 
 




#pragma interface "exception"

extern "C++" {

namespace std {

class exception {
public:
  exception () { }
  virtual ~exception () { }
  virtual const char* what () const;
};

class bad_exception : public exception {
public:
  bad_exception () { }
  virtual ~bad_exception () { }
};

typedef void (*terminate_handler) ();
typedef void (*unexpected_handler) ();

terminate_handler set_terminate (terminate_handler);
void terminate () __attribute__ ((__noreturn__));
unexpected_handler set_unexpected (unexpected_handler);
void unexpected () __attribute__ ((__noreturn__));
bool uncaught_exception ();

}  

}  


# 9 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/new" 2 3


extern "C++" {

namespace std {

  class bad_alloc : public exception {
  public:
    virtual const char* what() const throw() { return "bad_alloc"; }
  };

  struct nothrow_t {};
  extern const nothrow_t nothrow;
  typedef void (*new_handler)();
  new_handler set_new_handler (new_handler);

}  

 
void *operator new (size_t) throw (std::bad_alloc);
void *operator new[] (size_t) throw (std::bad_alloc);
void operator delete (void *) throw();
void operator delete[] (void *) throw();
void *operator new (size_t, const std::nothrow_t&) throw();
void *operator new[] (size_t, const std::nothrow_t&) throw();
void operator delete (void *, const std::nothrow_t&) throw();
void operator delete[] (void *, const std::nothrow_t&) throw();

 
inline void *operator new(size_t, void *place) throw() { return place; }
inline void *operator new[](size_t, void *place) throw() { return place; }
}  


# 6 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/new.h" 2 3


using std::new_handler;
using std::set_new_handler;


# 55 "../src/muscle/support/MuscleSupport.h" 2

























# 90 "../src/muscle/support/MuscleSupport.h"














    typedef signed char             int8;
    typedef unsigned char           uint8;
    typedef short                   int16;
    typedef unsigned short          uint16;
    typedef long                    int32;
    typedef unsigned long           uint32;




     typedef long long               int64;
     typedef unsigned long long      uint64;

    typedef unsigned char           uchar;
    typedef unsigned short          unichar;                   
    typedef uint32                  type_code;
    typedef int32                   status_t;










 
 
 
 
enum {
   B_ANY_TYPE 	  = 1095653716,  
   B_BOOL_TYPE 	  = 1112493900,  
   B_DOUBLE_TYPE  = 1145195589,  
   B_FLOAT_TYPE   = 1179406164,  
   B_INT64_TYPE   = 1280069191,  
   B_INT32_TYPE   = 1280265799,  
   B_INT16_TYPE   = 1397248596,  
   B_INT8_TYPE 	  = 1113150533,  
   B_MESSAGE_TYPE = 1297303367,  
   B_POINTER_TYPE = 1347310674,  
   B_POINT_TYPE   = 1112559188,  
   B_RECT_TYPE    = 1380270932,  
   B_STRING_TYPE  = 1129534546,  
   B_OBJECT_TYPE  = 1330664530,  
   B_RAW_TYPE     = 1380013908,  
   B_MIME_TYPE    = 1296649541   
};


 


 
 
enum {
   B_TAG_TYPE     = 1297367367   
};

 
# 174 "../src/muscle/support/MuscleSupport.h"


 



# 189 "../src/muscle/support/MuscleSupport.h"


 



# 204 "../src/muscle/support/MuscleSupport.h"

 




 




 




 










































# 286 "../src/muscle/support/MuscleSupport.h"



 
 
 







# 1 "/usr/include/stdio.h" 1 3
 


















 













# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3








 


# 21 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3



 


 





 


# 63 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 





 


















 





 

 


# 128 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 




 

 


# 190 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3





 




 


# 271 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3
















 

 

# 319 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3




 













 








# 34 "/usr/include/stdio.h" 2 3





 





# 1 "/usr/include/sys/reent.h" 1 3
 

 





extern "C" {









typedef unsigned long  __ULong;












 




struct _glue 
{
  struct _glue *_next;
  int _niobs;
  struct __sFILE *_iobs;
};

struct _Bigint 
{
  struct _Bigint *_next;
  int _k, _maxwds, _sign, _wds;
  __ULong _x[1];
};

 
struct __tm
{
  int   __tm_sec;
  int   __tm_min;
  int   __tm_hour;
  int   __tm_mday;
  int   __tm_mon;
  int   __tm_year;
  int   __tm_wday;
  int   __tm_yday;
  int   __tm_isdst;
};

 






struct _atexit {
	struct	_atexit *_next;			 
	int	_ind;				 
	void	(*_fns[32 ])(void);	 
	void	*_fnargs[32 ];	         
	__ULong _fntypes;           	         
};









 






struct __sbuf {
	unsigned char *_base;
	int	_size;
};

 




typedef long _fpos_t;		 
				 

 
























# 152 "/usr/include/sys/reent.h" 3




struct __sFILE {
  unsigned char *_p;	 
  int	_r;		 
  int	_w;		 
  short	_flags;		 
  short	_file;		 
  struct __sbuf _bf;	 
  int	_lbfsize;	 





   
  void * 	_cookie;	 

  _ssize_t  __attribute__((__cdecl__))   (*_read)   (void *  _cookie, char *_buf, int _n)  ;
  _ssize_t  __attribute__((__cdecl__))   (*_write)   (void *  _cookie, const char *_buf,
					    int _n)  ;
  _fpos_t __attribute__((__cdecl__))   (*_seek)   (void *  _cookie, _fpos_t _offset, int _whence)  ;
  int	__attribute__((__cdecl__))   (*_close)   (void *  _cookie)  ;

   
  struct __sbuf _ub;	 
  unsigned char *_up;	 
  int	_ur;		 

   
  unsigned char _ubuf[3];	 
  unsigned char _nbuf[1];	 

   
  struct __sbuf _lb;	 

   
  int	_blksize;	 
  int	_offset;	 


  struct _reent *_data;		 

};

 




















struct _rand48 {
  unsigned short _seed[3];
  unsigned short _mult[3];
  unsigned short _add;




};

 




 







# 447 "/usr/include/sys/reent.h" 3


struct _reent
{
  int _errno;			 

   


  struct __sFILE *_stdin, *_stdout, *_stderr;

  int  _inc;			 
  char _emergency[25 ];
 
  int _current_category;	 
  const  char *_current_locale;

  int __sdidinit;		 

  void __attribute__((__cdecl__))   (*__cleanup)   (struct _reent *)  ;

   
  struct _Bigint *_result;
  int _result_k;
  struct _Bigint *_p5s;
  struct _Bigint **_freelist;

   
  int _cvtlen;			 
  char *_cvtbuf;

  union
    {
      struct
        {
          unsigned int _unused_rand;
          char * _strtok_last;
          char _asctime_buf[26 ];
          struct __tm _localtime_buf;
          int _gamma_signgam;
          __extension__ unsigned long long _rand_next;
          struct _rand48 _r48;
          int _mblen_state;
          int _mbtowc_state;
          int _wctomb_state;
          char _l64a_buf[8];
          char _signal_buf[24 ];
          int _getdate_err;  
        } _reent;
   

 
      struct
        {

          unsigned char * _nextf[30 ];
          unsigned int _nmalloc[30 ];
        } _unused;
    } _new;

   
  struct _atexit *_atexit;	 
  struct _atexit _atexit0;	 

   
  void (**(_sig_func))(int);

   


  struct _glue __sglue;			 
  struct __sFILE __sf[3];		 
};










# 580 "/usr/include/sys/reent.h" 3

































 








extern struct _reent *_impure_ptr  ;

void _reclaim_reent  (struct _reent *)  ;

 













}


# 45 "/usr/include/stdio.h" 2 3



extern "C" { 

typedef _fpos_t fpos_t;
typedef struct __sFILE FILE;

# 1 "/usr/include/sys/stdio.h" 1 3



 










# 53 "/usr/include/stdio.h" 2 3






	 














 








































































 









FILE *	__attribute__((__cdecl__))   tmpfile    (void)  ;
char *	__attribute__((__cdecl__))   tmpnam    (char *)  ;
int	__attribute__((__cdecl__))   fclose    (FILE *)  ;
int	__attribute__((__cdecl__))   fflush    (FILE *)  ;
FILE *	__attribute__((__cdecl__))   freopen    (const char *, const char *, FILE *)  ;
void	__attribute__((__cdecl__))   setbuf    (FILE *, char *)  ;
int	__attribute__((__cdecl__))   setvbuf    (FILE *, char *, int, size_t)  ;
int	__attribute__((__cdecl__))   fprintf    (FILE *, const char *, ...)  ;
int	__attribute__((__cdecl__))   fscanf    (FILE *, const char *, ...)  ;
int	__attribute__((__cdecl__))   printf    (const char *, ...)  ;
int	__attribute__((__cdecl__))   scanf    (const char *, ...)  ;
int	__attribute__((__cdecl__))   sscanf    (const char *, const char *, ...)  ;
int	__attribute__((__cdecl__))   vfprintf    (FILE *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   vprintf    (const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   vsprintf    (char *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   fgetc    (FILE *)  ;
char *  __attribute__((__cdecl__))   fgets    (char *, int, FILE *)  ;
int	__attribute__((__cdecl__))   fputc    (int, FILE *)  ;
int	__attribute__((__cdecl__))   fputs    (const char *, FILE *)  ;
int	__attribute__((__cdecl__))   getc    (FILE *)  ;
int	__attribute__((__cdecl__))   getchar    (void)  ;
char *  __attribute__((__cdecl__))   gets    (char *)  ;
int	__attribute__((__cdecl__))   putc    (int, FILE *)  ;
int	__attribute__((__cdecl__))   putchar    (int)  ;
int	__attribute__((__cdecl__))   puts    (const char *)  ;
int	__attribute__((__cdecl__))   ungetc    (int, FILE *)  ;
size_t	__attribute__((__cdecl__))   fread    (void * , size_t _size, size_t _n, FILE *)  ;
size_t	__attribute__((__cdecl__))   fwrite    (const void *  , size_t _size, size_t _n, FILE *)  ;
int	__attribute__((__cdecl__))   fgetpos    (FILE *, fpos_t *)  ;
int	__attribute__((__cdecl__))   fseek    (FILE *, long, int)  ;
int	__attribute__((__cdecl__))   fsetpos    (FILE *, const fpos_t *)  ;
long	__attribute__((__cdecl__))   ftell    ( FILE *)  ;
void	__attribute__((__cdecl__))   rewind    (FILE *)  ;
void	__attribute__((__cdecl__))   clearerr    (FILE *)  ;
int	__attribute__((__cdecl__))   feof    (FILE *)  ;
int	__attribute__((__cdecl__))   ferror    (FILE *)  ;
void    __attribute__((__cdecl__))   perror    (const char *)  ;

FILE *	__attribute__((__cdecl__))   fopen    (const char *_name, const char *_type)  ;
int	__attribute__((__cdecl__))   sprintf    (char *, const char *, ...)  ;
int	__attribute__((__cdecl__))   remove    (const char *)  ;
int	__attribute__((__cdecl__))   rename    (const char *, const char *)  ;


int	__attribute__((__cdecl__))   vfiprintf    (FILE *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   iprintf    (const char *, ...)  ;
int	__attribute__((__cdecl__))   fiprintf    (FILE *, const char *, ...)  ;
int	__attribute__((__cdecl__))   siprintf    (char *, const char *, ...)  ;
char *	__attribute__((__cdecl__))   tempnam    (const char *, const char *)  ;
int	__attribute__((__cdecl__))   vsnprintf    (char *, size_t, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   vfscanf    (FILE *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   vscanf    (const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   vsscanf    (const char *, const char *, __gnuc_va_list )  ;

int	__attribute__((__cdecl__))   snprintf    (char *, size_t, const char *, ...)  ;



 





FILE *	__attribute__((__cdecl__))   fdopen    (int, const char *)  ;

int	__attribute__((__cdecl__))   fileno    (FILE *)  ;
int	__attribute__((__cdecl__))   getw    (FILE *)  ;
int	__attribute__((__cdecl__))   pclose    (FILE *)  ;
FILE *  __attribute__((__cdecl__))   popen    (const char *, const char *)  ;
int	__attribute__((__cdecl__))   putw    (int, FILE *)  ;
# 238 "/usr/include/stdio.h" 3



 



FILE *	__attribute__((__cdecl__))   _fdopen_r    (struct _reent *, int, const char *)  ;
FILE *	__attribute__((__cdecl__))   _fopen_r    (struct _reent *, const char *, const char *)  ;
int	__attribute__((__cdecl__))   _fscanf_r    (struct _reent *, FILE *, const char *, ...)  ;
int	__attribute__((__cdecl__))   _getchar_r    (struct _reent *)  ;
char *	__attribute__((__cdecl__))   _gets_r    (struct _reent *, char *)  ;
int	__attribute__((__cdecl__))   _iprintf_r    (struct _reent *, const char *, ...)  ;
int	__attribute__((__cdecl__))   _mkstemp_r    (struct _reent *, char *)  ;
char *	__attribute__((__cdecl__))   _mktemp_r    (struct _reent *, char *)  ;
void	__attribute__((__cdecl__))   _perror_r    (struct _reent *, const char *)  ;
int	__attribute__((__cdecl__))   _printf_r    (struct _reent *, const char *, ...)  ;
int	__attribute__((__cdecl__))   _putchar_r    (struct _reent *, int)  ;
int	__attribute__((__cdecl__))   _puts_r    (struct _reent *, const char *)  ;
int	__attribute__((__cdecl__))   _remove_r    (struct _reent *, const char *)  ;
int	__attribute__((__cdecl__))   _rename_r    (struct _reent *,
			   const char *_old, const char *_new)  ;
int	__attribute__((__cdecl__))   _scanf_r    (struct _reent *, const char *, ...)  ;
int	__attribute__((__cdecl__))   _sprintf_r    (struct _reent *, char *, const char *, ...)  ;
int	__attribute__((__cdecl__))   _snprintf_r    (struct _reent *, char *, size_t, const char *, ...)  ;
int	__attribute__((__cdecl__))   _sscanf_r    (struct _reent *, const char *, const char *, ...)  ;
char *	__attribute__((__cdecl__))   _tempnam_r    (struct _reent *, const char *, const char *)  ;
FILE *	__attribute__((__cdecl__))   _tmpfile_r    (struct _reent *)  ;
char *	__attribute__((__cdecl__))   _tmpnam_r    (struct _reent *, char *)  ;
int	__attribute__((__cdecl__))   _vfprintf_r    (struct _reent *, FILE *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   _vprintf_r    (struct _reent *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   _vsprintf_r    (struct _reent *, char *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   _vsnprintf_r    (struct _reent *, char *, size_t, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   _vfscanf_r    (struct _reent *, FILE *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   _vscanf_r    (struct _reent *, const char *, __gnuc_va_list )  ;
int	__attribute__((__cdecl__))   _vsscanf_r    (struct _reent *, const char *, const char *, __gnuc_va_list )  ;

ssize_t __attribute__((__cdecl__))   __getdelim    (char **, size_t *, int, FILE *)  ;
ssize_t __attribute__((__cdecl__))   __getline    (char **, size_t *, FILE *)  ;

 



int	__attribute__((__cdecl__))   __srget    (FILE *)  ;
int	__attribute__((__cdecl__))   __swbuf    (int, FILE *)  ;

 




FILE	* __attribute__((__cdecl__))   funopen   (const void *  _cookie,
		int (*readfn)(void *  _cookie, char *_buf, int _n),
		int (*writefn)(void *  _cookie, const char *_buf, int _n),
		fpos_t (*seekfn)(void *  _cookie, fpos_t _off, int _whence),
		int (*closefn)(void *  _cookie))  ;





 






static __inline__ int __sgetc(FILE *__p)
  {
    int __c = (--( __p )->_r < 0 ? __srget( __p ) : (int)(*( __p )->_p++)) ;
    if ((__p->_flags & 0x4000 ) && (__c == '\r'))
      {
      int __c2 = (--( __p )->_r < 0 ? __srget( __p ) : (int)(*( __p )->_p++)) ;
      if (__c2 == '\n')
        __c = __c2;
      else
        ungetc(__c2, __p);
      }
    return __c;
  }




# 333 "/usr/include/stdio.h" 3

 












































 









} 


# 299 "../src/muscle/support/MuscleSupport.h" 2

# 1 "/usr/include/stdlib.h" 1 3
 












# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3








 


# 21 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3



 


 





 


# 63 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 





 


















 





 

 


# 128 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 




 

 


# 190 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3





 




 


# 271 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3
















 

 

# 319 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3




 













 








# 14 "/usr/include/stdlib.h" 2 3



# 1 "/usr/include/machine/stdlib.h" 1 3



 




# 17 "/usr/include/stdlib.h" 2 3


# 1 "/usr/include/alloca.h" 1 3
 

 
 















# 19 "/usr/include/stdlib.h" 2 3



extern "C" { 

typedef struct 
{
  int quot;  
  int rem;  
} div_t;

typedef struct 
{
  long quot;  
  long rem;  
} ldiv_t;










extern __attribute__(( dllimport ))   int __mb_cur_max;



void 	__attribute__((__cdecl__))   abort   (void ) __attribute__ ( (noreturn) )   ;
int	__attribute__((__cdecl__))   abs   (int)  ;
int	__attribute__((__cdecl__))   atexit   (void  (*__func)(void ))  ;
double	__attribute__((__cdecl__))   atof   (const char *__nptr)  ;

float	__attribute__((__cdecl__))   atoff   (const char *__nptr)  ;

int	__attribute__((__cdecl__))   atoi   (const char *__nptr)  ;
long	__attribute__((__cdecl__))   atol   (const char *__nptr)  ;
void * 	__attribute__((__cdecl__))   bsearch   (const void *  __key,
		       const void *  __base,
		       size_t __nmemb,
		       size_t __size,
		       int (* __attribute__((__cdecl__))   _compar )  (const void * , const void * )  )  ;
void * 	__attribute__((__cdecl__))   calloc   (size_t __nmemb, size_t __size)  ;
div_t	__attribute__((__cdecl__))   div   (int __numer, int __denom)  ;
void 	__attribute__((__cdecl__))   exit   (int __status) __attribute__ ( (noreturn) )   ;
void 	__attribute__((__cdecl__))   free   (void * )  ;
char *  __attribute__((__cdecl__))   getenv   (const char *__string)  ;
char *	__attribute__((__cdecl__))   _getenv_r   (struct _reent *, const char *__string)  ;
char *	__attribute__((__cdecl__))   _findenv   (const  char *, int *)  ;
char *	__attribute__((__cdecl__))   _findenv_r   (struct _reent *, const  char *, int *)  ;
long	__attribute__((__cdecl__))   labs   (long)  ;
ldiv_t	__attribute__((__cdecl__))   ldiv   (long __numer, long __denom)  ;
void * 	__attribute__((__cdecl__))   malloc   (size_t __size)  ;
int	__attribute__((__cdecl__))   mblen   (const char *, size_t)  ;
int	__attribute__((__cdecl__))   _mblen_r   (struct _reent *, const char *, size_t, int *)  ;
int	__attribute__((__cdecl__))   mbtowc   (wchar_t *, const char *, size_t)  ;
int	__attribute__((__cdecl__))   _mbtowc_r   (struct _reent *, wchar_t *, const char *, size_t, int *)  ;
int	__attribute__((__cdecl__))   wctomb   (char *, wchar_t)  ;
int	__attribute__((__cdecl__))   _wctomb_r   (struct _reent *, char *, wchar_t, int *)  ;
size_t	__attribute__((__cdecl__))   mbstowcs   (wchar_t *, const char *, size_t)  ;
size_t	__attribute__((__cdecl__))   _mbstowcs_r   (struct _reent *, wchar_t *, const char *, size_t, int *)  ;
size_t	__attribute__((__cdecl__))   wcstombs   (char *, const wchar_t *, size_t)  ;
size_t	__attribute__((__cdecl__))   _wcstombs_r   (struct _reent *, char *, const wchar_t *, size_t, int *)  ;


int     __attribute__((__cdecl__))   mkstemp   (char *)  ;
char *  __attribute__((__cdecl__))   mktemp   (char *)  ;


void 	__attribute__((__cdecl__))   qsort   (void *  __base, size_t __nmemb, size_t __size, int(*_compar)(const void * , const void * ))  ;
int	__attribute__((__cdecl__))   rand   (void )  ;
void * 	__attribute__((__cdecl__))   realloc   (void *  __r, size_t __size)  ;
void 	__attribute__((__cdecl__))   srand   (unsigned __seed)  ;
double	__attribute__((__cdecl__))   strtod   (const char *__n, char **__end_PTR)  ;
double	__attribute__((__cdecl__))   _strtod_r   (struct _reent *,const char *__n, char **__end_PTR)  ;

float	__attribute__((__cdecl__))   strtodf   (const char *__n, char **__end_PTR)  ;

long	__attribute__((__cdecl__))   strtol   (const char *__n, char **__end_PTR, int __base)  ;
long	__attribute__((__cdecl__))   _strtol_r   (struct _reent *,const char *__n, char **__end_PTR, int __base)  ;
unsigned long __attribute__((__cdecl__))   strtoul   (const char *__n, char **__end_PTR, int __base)  ;
unsigned long __attribute__((__cdecl__))   _strtoul_r   (struct _reent *,const char *__n, char **__end_PTR, int __base)  ;

int	__attribute__((__cdecl__))   system   (const char *__string)  ;


long    __attribute__((__cdecl__))   a64l   (const char *__input)  ;
char *  __attribute__((__cdecl__))   l64a   (long __input)  ;
char *  __attribute__((__cdecl__))   _l64a_r   (struct _reent *,long __input)  ;
int	__attribute__((__cdecl__))   on_exit   (void  (*__func)(int, void * ),void *  __arg)  ;
void 	__attribute__((__cdecl__))   _Exit   (int __status) __attribute__ ( (noreturn) )   ;
int	__attribute__((__cdecl__))   putenv   (const char *__string)  ;
int	__attribute__((__cdecl__))   _putenv_r   (struct _reent *, const char *__string)  ;
int	__attribute__((__cdecl__))   setenv   (const char *__string, const char *__value, int __overwrite)  ;
int	__attribute__((__cdecl__))   _setenv_r   (struct _reent *, const char *__string, const char *__value, int __overwrite)  ;

char *	__attribute__((__cdecl__))   gcvt   (double,int,char *)  ;
char *	__attribute__((__cdecl__))   gcvtf   (float,int,char *)  ;
char *	__attribute__((__cdecl__))   fcvt   (double,int,int *,int *)  ;
char *	__attribute__((__cdecl__))   fcvtf   (float,int,int *,int *)  ;
char *	__attribute__((__cdecl__))   ecvt   (double,int,int *,int *)  ;
char *	__attribute__((__cdecl__))   ecvtbuf   (double, int, int*, int*, char *)  ;
char *	__attribute__((__cdecl__))   fcvtbuf   (double, int, int*, int*, char *)  ;
char *	__attribute__((__cdecl__))   ecvtf   (float,int,int *,int *)  ;
char *	__attribute__((__cdecl__))   dtoa   (double, int, int, int *, int*, char**)  ;
int	__attribute__((__cdecl__))   rand_r   (unsigned *__seed)  ;

double __attribute__((__cdecl__))   drand48   (void )  ;
double __attribute__((__cdecl__))   _drand48_r   (struct _reent *)  ;
double __attribute__((__cdecl__))   erand48   (unsigned short [3])  ;
double __attribute__((__cdecl__))   _erand48_r   (struct _reent *, unsigned short [3])  ;
long   __attribute__((__cdecl__))   jrand48   (unsigned short [3])  ;
long   __attribute__((__cdecl__))   _jrand48_r   (struct _reent *, unsigned short [3])  ;
void   __attribute__((__cdecl__))   lcong48   (unsigned short [7])  ;
void   __attribute__((__cdecl__))   _lcong48_r   (struct _reent *, unsigned short [7])  ;
long   __attribute__((__cdecl__))   lrand48   (void )  ;
long   __attribute__((__cdecl__))   _lrand48_r   (struct _reent *)  ;
long   __attribute__((__cdecl__))   mrand48   (void )  ;
long   __attribute__((__cdecl__))   _mrand48_r   (struct _reent *)  ;
long   __attribute__((__cdecl__))   nrand48   (unsigned short [3])  ;
long   __attribute__((__cdecl__))   _nrand48_r   (struct _reent *, unsigned short [3])  ;
unsigned short *
       __attribute__((__cdecl__))   seed48   (unsigned short [3])  ;
unsigned short *
       __attribute__((__cdecl__))   _seed48_r   (struct _reent *, unsigned short [3])  ;
void   __attribute__((__cdecl__))   srand48   (long)  ;
void   __attribute__((__cdecl__))   _srand48_r   (struct _reent *, long)  ;
long long __attribute__((__cdecl__))   strtoll   (const char *__n, char **__end_PTR, int __base)  ;
long long __attribute__((__cdecl__))   _strtoll_r   (struct _reent *, const char *__n, char **__end_PTR, int __base)  ;
unsigned long long __attribute__((__cdecl__))   strtoull   (const char *__n, char **__end_PTR, int __base)  ;
unsigned long long __attribute__((__cdecl__))   _strtoull_r   (struct _reent *, const char *__n, char **__end_PTR, int __base)  ;




char *	__attribute__((__cdecl__))   realpath   (const char *, char *)  ;
void	__attribute__((__cdecl__))   unsetenv   (const char *__string)  ;
void	__attribute__((__cdecl__))   _unsetenv_r   (struct _reent *, const char *__string)  ;
int	__attribute__((__cdecl__))   random   (void )  ;
long	__attribute__((__cdecl__))   srandom   (unsigned __seed)  ;
char *  __attribute__((__cdecl__))   ptsname    (int)  ;
int     __attribute__((__cdecl__))   grantpt    (int)  ;
int     __attribute__((__cdecl__))   unlockpt   (int)  ;




char *	__attribute__((__cdecl__))   _dtoa_r   (struct _reent *, double, int, int, int *, int*, char**)  ;
void * 	__attribute__((__cdecl__))   _malloc_r   (struct _reent *, size_t)  ;
void * 	__attribute__((__cdecl__))   _calloc_r   (struct _reent *, size_t, size_t)  ;
void 	__attribute__((__cdecl__))   _free_r   (struct _reent *, void * )  ;
void * 	__attribute__((__cdecl__))   _realloc_r   (struct _reent *, void * , size_t)  ;
void 	__attribute__((__cdecl__))   _mstats_r   (struct _reent *, char *)  ;
int	__attribute__((__cdecl__))   _system_r   (struct _reent *, const char *)  ;

void 	__attribute__((__cdecl__))   __eprintf   (const char *, const char *, unsigned int, const char *)  ;

} 


# 300 "../src/muscle/support/MuscleSupport.h" 2

# 1 "../src/muscle/syslog/SysLog.h" 1
 





# 1 "/usr/include/w32api/windows.h" 1 3
 











# 124 "/usr/include/w32api/windows.h" 3

# 7 "../src/muscle/syslog/SysLog.h" 2




# 1 "../src/muscle/util/TimeUtilityFunctions.h" 1
 








# 1 "/usr/include/time.h" 1 3
 















 
# 1 "/usr/include/machine/time.h" 1 3














# 18 "/usr/include/time.h" 2 3









# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 1 3








 


# 21 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3



 


 





 


# 63 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 





 


















 





 

 


# 128 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3


 




 

 


# 190 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3





 




 


# 271 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3
















 

 

# 319 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/stddef.h" 3




 













 








# 27 "/usr/include/time.h" 2 3




extern "C" { 

struct tm
{
  int	tm_sec;
  int	tm_min;
  int	tm_hour;
  int	tm_mday;
  int	tm_mon;
  int	tm_year;
  int	tm_wday;
  int	tm_yday;
  int	tm_isdst;
};

clock_t	   __attribute__((__cdecl__))   clock       (void)  ;
double	   __attribute__((__cdecl__))   difftime    (time_t _time2, time_t _time1)  ;
time_t	   __attribute__((__cdecl__))   mktime      (struct tm *_timeptr)  ;
time_t	   __attribute__((__cdecl__))   time        (time_t *_timer)  ;

char	  * __attribute__((__cdecl__))   asctime     (const struct tm *_tblock)  ;
char	  * __attribute__((__cdecl__))   ctime       (const time_t *_time)  ;
struct tm * __attribute__((__cdecl__))   gmtime      (const time_t *_timer)  ;
struct tm * __attribute__((__cdecl__))   localtime   (const time_t *_timer)  ;

size_t	   __attribute__((__cdecl__))   strftime    (char *_s, size_t _maxsize, const char *_fmt, const struct tm *_t)  ;

char	  * __attribute__((__cdecl__))   asctime_r   	(const struct tm *, char *)  ;
char	  * __attribute__((__cdecl__))   ctime_r   	(const time_t *, char *)  ;
struct tm * __attribute__((__cdecl__))   gmtime_r   	(const time_t *, struct tm *)  ;
struct tm * __attribute__((__cdecl__))   localtime_r   	(const time_t *, struct tm *)  ;

} 


extern "C" {



char      * __attribute__((__cdecl__))   strptime        (const char *, const char *, struct tm *)  ;
void       __attribute__((__cdecl__))   tzset   	(void )  ;
void       __attribute__((__cdecl__))   _tzset_r   	(struct _reent *)  ;

 

# 95 "/usr/include/time.h" 3


 
extern __attribute__(( dllimport ))   time_t _timezone;
extern __attribute__(( dllimport ))   int _daylight;
extern __attribute__(( dllimport ))   char *_tzname[2];

 




 









char * __attribute__((__cdecl__))   timezone    (void)  ;





}




# 166 "/usr/include/time.h" 3



extern "C" {


 

 




 


                            
                            

                            
                            

 



 




 

# 207 "/usr/include/time.h" 3


# 217 "/usr/include/time.h" 3




















}




# 10 "../src/muscle/util/TimeUtilityFunctions.h" 2


# 1 "../src/muscle/support/MuscleSupport.h" 1
 

 








# 303 "../src/muscle/support/MuscleSupport.h"

# 12 "../src/muscle/util/TimeUtilityFunctions.h" 2





# 1 "/usr/include/sys/time.h" 1 3
 










extern "C" {



struct timeval {
  long tv_sec;
  long tv_usec;
};

struct timezone {
  int tz_minuteswest;
  int tz_dsttime;
};


# 1 "/usr/include/sys/select.h" 1 3
 















# 1 "/usr/include/sys/cdefs.h" 1 3
 





















# 17 "/usr/include/sys/select.h" 2 3


 


 
# 1 "/usr/include/sys/time.h" 1 3
 



# 83 "/usr/include/sys/time.h" 3

# 23 "/usr/include/sys/select.h" 2 3



extern "C" { 

int select  (int __n, _types_fd_set  *__readfds, _types_fd_set  *__writefds,
		 _types_fd_set  *__exceptfds, struct timeval *__timeout)  ;

} 




# 27 "/usr/include/sys/time.h" 2 3









struct  itimerval {
  struct  timeval it_interval;
  struct  timeval it_value;
};

 


 








# 62 "/usr/include/sys/time.h" 3

# 71 "/usr/include/sys/time.h" 3


int __attribute__((__cdecl__))   gettimeofday    (struct timeval *__p, struct timezone *__z)  ;
int __attribute__((__cdecl__))   settimeofday    (const struct timeval *, const struct timezone *)  ;
int __attribute__((__cdecl__))   utimes    (const char *__path, struct timeval *__tvp)  ;
int __attribute__((__cdecl__))   getitimer    (int __which, struct itimerval *__value)  ;
int __attribute__((__cdecl__))   setitimer    (int __which, const struct itimerval *__value,
					struct itimerval *__ovalue)  ;


}


# 17 "../src/muscle/util/TimeUtilityFunctions.h" 2



namespace muscle {

 


 



inline uint64 ConvertTimeValTo64(const struct timeval & tv)
{
   return (((uint64)tv.tv_sec)*1000000) + ((uint64)tv.tv_usec);
}

 



inline void Convert64ToTimeVal(uint64 val, struct timeval & retStruct)
{
   retStruct.tv_sec  = (int32)(val / 1000000);
   retStruct.tv_usec = (int32)(val % 1000000);
}

 




inline bool IsLessThan(const struct timeval & t1, const struct timeval & t2)
{
   return (t1.tv_sec == t2.tv_sec) ? (t1.tv_usec < t2.tv_usec) : (t1.tv_sec < t2.tv_sec);
}

 



inline void AddTimeVal(struct timeval & addToThis, const struct timeval & addThis)
{
   addToThis.tv_sec  += addThis.tv_sec;
   addToThis.tv_usec += addThis.tv_usec;
   if (addToThis.tv_usec > 1000000L)
   {
      addToThis.tv_sec += addToThis.tv_usec / 1000000L;
      addToThis.tv_usec = addToThis.tv_usec % 1000000L;
   }
}

 


 
inline void SubtractTimeVal(struct timeval & subtractFromThis, const struct timeval & subtractThis)
{
   subtractFromThis.tv_sec  -= subtractThis.tv_sec;
   subtractFromThis.tv_usec -= subtractThis.tv_usec;
   if (subtractFromThis.tv_usec < 0L)
   {
      subtractFromThis.tv_sec += (subtractFromThis.tv_usec / 1000000L)-1;
      while(subtractFromThis.tv_usec < 0L) subtractFromThis.tv_usec += 1000000L;
   }
}

 
inline uint64 GetCurrentTime64()
{





   struct timeval tv;
   gettimeofday(&tv, __null );
   return ConvertTimeValTo64(tv);

}

 





inline bool OnceEvery(const struct timeval & interval, struct timeval & lastTime)
{
    
   uint64 now64 = GetCurrentTime64();
   struct timeval now; 
   Convert64ToTimeVal(now64, now);
   if (!IsLessThan(now, lastTime))
   {
      lastTime = now;
      AddTimeVal(lastTime, interval);
      return 1 ;
   }
   return 0 ;
}

 





# 136 "../src/muscle/util/TimeUtilityFunctions.h"


};   


# 11 "../src/muscle/syslog/SysLog.h" 2


namespace muscle {

 
enum
{
   MUSCLE_LOG_NONE = 0,          
   MUSCLE_LOG_CRITICALERROR,     
   MUSCLE_LOG_ERROR,             
   MUSCLE_LOG_WARNING,           
   MUSCLE_LOG_INFO,              
   MUSCLE_LOG_DEBUG,             
   MUSCLE_LOG_TRACE,             
   NUM_MUSCLE_LOGLEVELS
}; 

 
 
# 41 "../src/muscle/syslog/SysLog.h"


 



int ParseLogLevelKeyword(const char * keyword);

 


int GetFileLogLevel();

 


int GetConsoleLogLevel();

 


int GetMaxLogLevel();

 





status_t SetFileLogLevel(int loglevel);

 





status_t SetConsoleLogLevel(int loglevel);

 




status_t Log(int minLogLevel, const char * fmt, ...);

 





status_t LogTime(int minLogLevel, const char * fmt, ...);

 



status_t LogFlush();

 



const char * GetLogLevelName(int logLevel);

 




void GetStandardLogLinePreamble(char * buf, int logLevel, time_t when);



};   


# 301 "../src/muscle/support/MuscleSupport.h" 2



# 20 "../src/muscle/support/Flattenable.h" 2


namespace muscle {

 




class Flattenable
{
public:
    
   Flattenable() { }

    
   virtual ~Flattenable() { }

    
   virtual bool IsFixedSize() const = 0;

    
   virtual type_code TypeCode() const = 0;

    
   virtual uint32 FlattenedSize() const = 0;

    



   virtual void Flatten(uint8 *buffer) const = 0;

    





   virtual bool AllowsTypeCode(type_code code) const {return ((code == B_RAW_TYPE)||(code == TypeCode()));}

    





   virtual status_t Unflatten(const uint8 *buf, uint32 size) = 0;

    









   status_t CopyTo(Flattenable   copyTo) const 
   {
      return (this == &copyTo) ? 0  : ((copyTo.AllowsTypeCode(TypeCode())) ? CopyToImplementation(copyTo) : -1 );
   }

    









   status_t CopyFrom(const Flattenable & copyFrom)
   {
      return (this == &copyFrom) ? 0  : ((AllowsTypeCode(copyFrom.TypeCode())) ? CopyFromImplementation(copyFrom) : -1 );
   }

    








   static void WriteData(uint8 * outBuf, uint32 * writeOffset, const void * copyFrom, uint32 blockSize)
   {
      memcpy(&outBuf[*writeOffset], copyFrom, blockSize);
      *writeOffset += blockSize;
   };
    
    








   static status_t ReadData(const uint8 * inBuf, uint32 inputBufferBytes, uint32 * readOffset, void * copyTo, uint32 blockSize)
   {
      if ((*readOffset + blockSize) > inputBufferBytes) return -1 ;
      memcpy(copyTo, &inBuf[*readOffset], blockSize);
      *readOffset += blockSize;
      return 0 ;
   };

protected:
    










   virtual status_t CopyToImplementation(Flattenable & copyTo) const
   {
      uint8 smallBuf[256];
      uint8 * bigBuf = __null ;
      uint32 flatSize = FlattenedSize();
      if (flatSize > (sizeof( smallBuf )/sizeof( smallBuf [0])) ) 
      {
         bigBuf = new (nothrow)  uint8[flatSize];
         if (bigBuf == __null )
         {
            muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/support/Flattenable.h",153) ;
            return -1 ;
         }
      }
      Flatten(bigBuf ? bigBuf : smallBuf);
      status_t ret = copyTo.Unflatten(bigBuf ? bigBuf : smallBuf, flatSize);
      delete [] bigBuf;
      return ret;
   }

    










   virtual status_t CopyFromImplementation(const Flattenable & copyFrom)
   {
      uint8 smallBuf[256];
      uint8 * bigBuf = __null ;
      uint32 flatSize = copyFrom.FlattenedSize();
      if (flatSize > (sizeof( smallBuf )/sizeof( smallBuf [0])) ) 
      {
         bigBuf = new (nothrow)  uint8[flatSize];
         if (bigBuf == __null )
         {
            muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/support/Flattenable.h",184) ;
            return -1 ;
         }
      }
      copyFrom.Flatten(bigBuf ? bigBuf : smallBuf);
      status_t ret = Unflatten(bigBuf ? bigBuf : smallBuf, flatSize);
      delete [] bigBuf;
      return ret;
   }
};

 
 

};   



# 58 "../src/muscle/util/string.h" 2



namespace muscle { 





class String;

 
class String : public Flattenable {
public:
    


   String(const char * str = __null );

    
   String(const String & str);

    
   virtual ~String() {if (_buffer != _smallBuffer) delete [] _buffer;}

    
   const String &   operator = (char val);

    
   const String &   operator = (const char * val);

    
   const String &   operator = (const String &rhs);

    


   const String &   operator +=(const String &rhs);

    


   const String &   operator +=(const char ch);
   
    




   const String &   operator -=(const String &rhs);

    




   const String &   operator -=(const char ch);
   
    



   String &   operator <<(const String& rhs);   

    



   String &   operator <<(const char* rhs);   
   
    



   String &   operator <<(int rhs);   

    



   String &   operator <<(float rhs);   

    



   String &   operator <<(bool rhs);

    
   int            operator ==(const String &rhs) const;

    
   int            operator !=(const String &rhs) const {return !(*this == rhs);}

    
   int            operator < (const String &rhs) const;

    
   int            operator > (const String &rhs) const;

    
   int            operator <=(const String &rhs) const;

    
   int            operator >=(const String &rhs) const;

    


   char           operator [](uint32 Index) const;

    


   char&          operator [](uint32 Index);

    



   char           CharAt(uint32 index) const;
 
    
   int            CompareTo(const String &anotherString) const;

    
   const char*    Cstr() const {return _buffer ? _buffer : "";}

    
   const char * operator()() const {return Cstr();}  

    
   bool           EndsWith(const String &suffix) const;

    
   bool           Equals(const String &string) const;

    
   int            IndexOf(char ch) const;

    
   int            IndexOf(char ch, uint32 fromIndex) const;

    
   int            IndexOf(const String &str) const;

    
   int            IndexOf(const String &str, uint32 fromIndex) const;

    
   int            LastIndexOf(char ch) const;

    
   int            LastIndexOf(char ch, uint32 fromIndex) const;

    
   int            LastIndexOf(const String &str) const;

    
   int            LastIndexOf(const String &str, uint32 fromIndex) const;

    
   const uint32   Length() const { return _length; }

    
   bool           StartsWith(const String &prefix) const;

    
   bool           StartsWith(const String &prefix, uint32 toffset) const; 

    
   String         Prepend(const String & str) const;

    
   String         Append(const String & str) const;

    
   String         Substring(uint32 beginIndex) const; 

    
   String         Substring(uint32 beginIndex, uint32 endIndex) const; 

    




   String         Substring(const String & markerString) const; 

    




   String         Substring(uint32 beginIndex, const String & markerString) const; 

    
   String         ToLowerCase() const; 

    
   String         ToUpperCase() const; 

    
   String         Trim() const;  

    
   int            CompareToIgnoreCase(const String &s) const             {return ToLowerCase().CompareTo(s.ToLowerCase());}

    
   bool           EndsWithIgnoreCase(const String &s) const              {return ToLowerCase().EndsWith(s.ToLowerCase());}

    
   bool           EqualsIgnoreCase(const String &s) const                {return ToLowerCase().Equals(s.ToLowerCase());}

    
   int            IndexOfIgnoreCase(const String &s) const               {return ToLowerCase().IndexOf(s.ToLowerCase());}

    
   int            IndexOfIgnoreCase(const String &s, uint32 f) const     {return ToLowerCase().IndexOf(s.ToLowerCase(),f);}

    
   int            IndexOfIgnoreCase(char ch) const                               {return ToLowerCase().IndexOf((char)tolower(ch));}

    
   int            IndexOfIgnoreCase(char ch, uint32 f) const                     {return ToLowerCase().IndexOf((char)tolower(ch),f);}

    
   int            LastIndexOfIgnoreCase(const String &s) const           {return ToLowerCase().LastIndexOf(s.ToLowerCase());}

    
   int            LastIndexOfIgnoreCase(const String &s, uint32 f) const {return ToLowerCase().LastIndexOf(s.ToLowerCase(),f);}

    
   int            LastIndexOfIgnoreCase(char ch) const                           {return ToLowerCase().LastIndexOf((char)tolower(ch));}

    
   int            LastIndexOfIgnoreCase(char ch, uint32 f) const                 {return ToLowerCase().LastIndexOf((char)tolower(ch),f);}

    
   bool           StartsWithIgnoreCase(const String &s) const            {return ToLowerCase().StartsWith(s.ToLowerCase());}

    
   bool           StartsWithIgnoreCase(const String &s, uint32 o) const  {return ToLowerCase().StartsWith(s.ToLowerCase(),o);}

    
   uint32 HashCode() const;

    
   void         Replace(char oldChar, char newChar); 

    
   void         Replace(const String& match, const String& replace); 
 
    


   virtual bool            IsFixedSize() const {return 0 ;}

    


   virtual type_code       TypeCode() const {return B_STRING_TYPE;}

    


   virtual uint32          FlattenedSize() const;

    





   virtual void            Flatten(uint8 *buffer) const;

    




   virtual status_t        Unflatten(const uint8 *buf, uint32 size);

    



 
   status_t Prealloc(uint32 newBufLen) {return EnsureBufferSize(newBufLen+1, 1 );}

private:
   status_t EnsureBufferSize(uint32 newBufLen, bool retainValue);
   char _smallBuffer[7 +1];   
   char * _buffer;             
   uint32 _bufferLen;          
   uint32 _length;             

   void verifyIndex(uint32 number) const;
};

 
uint32 CStringHashFunc(const char * str); 

template <class T> class HashFunctor;

template <>
class HashFunctor<String>
{
public:
   uint32 operator () (const String & x) const {return CStringHashFunc(x());}
};

template <>
class HashFunctor<const char *>
{
public:
   uint32 operator () (const char * x) const {return CStringHashFunc(x);}
};

 
int CStringCompareFunc(const char * const &, const char * const &, void *);

 
 
 
 
 
inline status_t
String::EnsureBufferSize(uint32 requestedBufLen, bool retainValue)
{
   if ((requestedBufLen > 0)&&((_buffer == __null )||(requestedBufLen > _bufferLen)))
   {
       
       
       
      uint32 newBufLen = (_buffer == __null ) ? requestedBufLen : (requestedBufLen * 2);
      char * newBuf = (requestedBufLen <= sizeof(_smallBuffer)) ? _smallBuffer : new (nothrow)  char[newBufLen]; 
      if (newBuf == _smallBuffer) newBufLen = sizeof(_smallBuffer);
      if (newBuf)
      {
         if ((retainValue)&&(_buffer)&&(newBuf != _buffer)) strncpy(newBuf, _buffer, newBufLen);
         if (_buffer != _smallBuffer) delete [] _buffer;
         _buffer = newBuf;
         _bufferLen = newBufLen;
      }
      else 
      {
         muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/util/string.h",405) ;
         return -1 ;
      }
   }
   return 0 ;
}

inline void 
String::verifyIndex(uint32 index) const 
{ 
   {if(!( index < _length )) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ASSERTION FAILED: (%s:%i) %s\n", "../src/muscle/util/string.h",415,   "Index Out Of Bounds Exception"  ); *((uint32*)__null ) = 0x666 ;} } ; 
} 

 
 

inline const String
operator+(const String & lhs, const String &rhs) 
{
   String ret(lhs);
   ret += rhs;
   return ret; 
}



inline const String
operator+(const String & lhs, const char *rhs) 
{
   String ret(lhs);
   ret += rhs;
   return ret; 
}


inline const String
operator+(const char * lhs, const String & rhs) 
{
   String ret(lhs);
   ret += rhs;
   return ret; 
}



inline const String
operator+(const String & lhs, char rhs) 
{
   String ret(lhs);
   ret += rhs;
   return ret; 
}


inline const String
operator-(const String & lhs, const String &rhs) 
{
   String ret(lhs);
   ret -= rhs;
   return ret; 
}


inline const String
operator-(const String & lhs, const char *rhs) 
{
   String ret(lhs);
   ret -= rhs;
   return ret; 
}


inline const String
operator-(const char *lhs, const String &rhs) 
{
   String ret(lhs);
   ret -= rhs;
   return ret; 
}


inline const String
operator-(const String & lhs, char rhs) 
{
   String ret(lhs);
   ret -= rhs;
   return ret; 
}

};   


# 37 "/usr/include/w32api/winnt.h" 2 3


 









typedef char CHAR;
typedef short SHORT;
typedef long LONG;
typedef char CCHAR, *PCCHAR;
typedef unsigned char UCHAR,*PUCHAR;
typedef unsigned short USHORT,*PUSHORT;
typedef unsigned long ULONG,*PULONG;
typedef char *PSZ;

typedef void *PVOID,*LPVOID;

 



typedef void*   PVOID64;

# 75 "/usr/include/w32api/winnt.h" 3


typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
typedef const  WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
typedef const  CHAR *LPCCH,*PCSTR,*LPCSTR;










typedef CHAR TCHAR;
typedef CHAR _TCHAR;


typedef TCHAR TBYTE,*PTCH,*PTBYTE;
typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR;
typedef const TCHAR *LPCTSTR;
# 107 "/usr/include/w32api/winnt.h" 3



 






typedef SHORT *PSHORT;
typedef LONG *PLONG;
typedef void *HANDLE;
typedef HANDLE *PHANDLE,*LPHANDLE;





typedef DWORD LCID;
typedef PDWORD PLCID;
typedef WORD LANGID;









typedef long long  LONGLONG;
typedef unsigned long long  DWORDLONG;



typedef LONGLONG *PLONGLONG;
typedef DWORDLONG *PDWORDLONG;
typedef DWORDLONG ULONGLONG,*PULONGLONG;
typedef LONGLONG USN;









typedef BYTE BOOLEAN,*PBOOLEAN;

typedef BYTE FCHAR;
typedef WORD FSHORT;
typedef DWORD FLONG;


# 1 "/usr/include/w32api/basetsd.h" 1 3















































extern "C" {

typedef int LONG32, *PLONG32;

typedef int INT32, *PINT32;

typedef unsigned int ULONG32, *PULONG32;
typedef unsigned int DWORD32, *PDWORD32;
typedef unsigned int UINT32, *PUINT32;

# 96 "/usr/include/w32api/basetsd.h" 3

typedef  int INT_PTR, *PINT_PTR;
typedef  unsigned int UINT_PTR, *PUINT_PTR;
typedef  long LONG_PTR, *PLONG_PTR;
typedef  unsigned long ULONG_PTR, *PULONG_PTR;
typedef unsigned short UHALF_PTR, *PUHALF_PTR;
typedef short HALF_PTR, *PHALF_PTR;
typedef unsigned long HANDLE_PTR;


typedef ULONG_PTR SIZE_T, *PSIZE_T;
typedef LONG_PTR SSIZE_T, *PSSIZE_T;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
typedef long long  LONG64, *PLONG64;
typedef long long  INT64,  *PINT64;
typedef unsigned long long  ULONG64, *PULONG64;
typedef unsigned long long  DWORD64, *PDWORD64;
typedef unsigned long long  UINT64,  *PUINT64;

}




# 163 "/usr/include/w32api/winnt.h" 2 3










































































































































 

















































































































































































































































































































































































































































































































































































































































































































































































































































































typedef DWORD ACCESS_MASK, *PACCESS_MASK;


typedef struct _GUID {
	unsigned long  Data1;
	unsigned short Data2;
	unsigned short Data3;
	unsigned char  Data4[8];
} GUID, *REFGUID, *LPGUID;


typedef struct _GENERIC_MAPPING {
	ACCESS_MASK GenericRead;
	ACCESS_MASK GenericWrite;
	ACCESS_MASK GenericExecute;
	ACCESS_MASK GenericAll;
} GENERIC_MAPPING, *PGENERIC_MAPPING;
typedef struct _ACE_HEADER {
	BYTE AceType;
	BYTE AceFlags;
	WORD AceSize;
} ACE_HEADER, *PACE_HEADER;
typedef struct _ACCESS_ALLOWED_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD SidStart;
} ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE;
typedef struct _ACCESS_DENIED_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD SidStart;
} ACCESS_DENIED_ACE, *PACCESS_DENIED_ACE;
typedef struct _SYSTEM_AUDIT_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD SidStart;
} SYSTEM_AUDIT_ACE;
typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
typedef struct _SYSTEM_ALARM_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD SidStart;
} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD Flags;
	GUID ObjectType;
	GUID InheritedObjectType;
	DWORD SidStart;
} ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
typedef struct _ACCESS_DENIED_OBJECT_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD Flags;
	GUID ObjectType;
	GUID InheritedObjectType;
	DWORD SidStart;
} ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD Flags;
	GUID ObjectType;
	GUID InheritedObjectType;
	DWORD SidStart;
} SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
typedef struct _SYSTEM_ALARM_OBJECT_ACE {
	ACE_HEADER Header;
	ACCESS_MASK Mask;
	DWORD Flags;
	GUID ObjectType;
	GUID InheritedObjectType;
	DWORD SidStart;
} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
typedef struct _ACL {
	BYTE AclRevision;
	BYTE Sbz1;
	WORD AclSize;
	WORD AceCount;
	WORD Sbz2;
} ACL,*PACL;
typedef struct _ACL_REVISION_INFORMATION {
	DWORD AclRevision;
} ACL_REVISION_INFORMATION;
typedef struct _ACL_SIZE_INFORMATION {
	DWORD   AceCount;
	DWORD   AclBytesInUse;
	DWORD   AclBytesFree;
} ACL_SIZE_INFORMATION;

 












typedef struct _FLOATING_SAVE_AREA {
	DWORD	ControlWord;
	DWORD	StatusWord;
	DWORD	TagWord;
	DWORD	ErrorOffset;
	DWORD	ErrorSelector;
	DWORD	DataOffset;
	DWORD	DataSelector;
	BYTE	RegisterArea[80];
	DWORD	Cr0NpxState;
} FLOATING_SAVE_AREA;
typedef struct _CONTEXT {
	DWORD	ContextFlags;
	DWORD	Dr0;
	DWORD	Dr1;
	DWORD	Dr2;
	DWORD	Dr3;
	DWORD	Dr6;
	DWORD	Dr7;
	FLOATING_SAVE_AREA FloatSave;
	DWORD	SegGs;
	DWORD	SegFs;
	DWORD	SegEs;
	DWORD	SegDs;
	DWORD	Edi;
	DWORD	Esi;
	DWORD	Ebx;
	DWORD	Edx;
	DWORD	Ecx;
	DWORD	Eax;
	DWORD	Ebp;
	DWORD	Eip;
	DWORD	SegCs;
	DWORD	EFlags;
	DWORD	Esp;
	DWORD	SegSs;
	BYTE	ExtendedRegisters[512 ];
} CONTEXT;
# 1773 "/usr/include/w32api/winnt.h" 3

typedef CONTEXT *PCONTEXT,*LPCONTEXT;
typedef struct _EXCEPTION_RECORD {
	DWORD ExceptionCode;
	DWORD ExceptionFlags;
	struct _EXCEPTION_RECORD *ExceptionRecord;
	PVOID ExceptionAddress;
	DWORD NumberParameters;
	DWORD ExceptionInformation[15 ];
} EXCEPTION_RECORD,*PEXCEPTION_RECORD,*LPEXCEPTION_RECORD;
typedef struct _EXCEPTION_POINTERS {
	PEXCEPTION_RECORD ExceptionRecord;
	PCONTEXT ContextRecord;
} EXCEPTION_POINTERS,*PEXCEPTION_POINTERS,*LPEXCEPTION_POINTERS;
typedef union _LARGE_INTEGER {
  struct {
    DWORD LowPart;
    LONG  HighPart;
  } u;

  __extension__  struct {
    DWORD LowPart;
    LONG  HighPart;
  };

  LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
typedef union _ULARGE_INTEGER {
  struct {
    DWORD LowPart;
    DWORD HighPart;
  } u;

  __extension__  struct {
    DWORD LowPart;
    DWORD HighPart;
  };

  ULONGLONG QuadPart;
} ULARGE_INTEGER, *PULARGE_INTEGER;
typedef LARGE_INTEGER LUID,*PLUID;
#pragma pack(push,4)
typedef struct _LUID_AND_ATTRIBUTES {
	LUID   Luid;
	DWORD  Attributes;
} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
#pragma pack(pop)
typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[1 ];
typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
typedef struct _PRIVILEGE_SET {
	DWORD PrivilegeCount;
	DWORD Control;
	LUID_AND_ATTRIBUTES Privilege[1 ];
} PRIVILEGE_SET,*PPRIVILEGE_SET;
typedef struct _SECURITY_ATTRIBUTES {
	DWORD nLength;
	LPVOID lpSecurityDescriptor;
	BOOL bInheritHandle;
} SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
typedef enum _SECURITY_IMPERSONATION_LEVEL {
	SecurityAnonymous,
	SecurityIdentification,
	SecurityImpersonation,
	SecurityDelegation
} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL;
typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
typedef struct _SECURITY_QUALITY_OF_SERVICE {
	DWORD Length;
	SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
	SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
	BOOLEAN EffectiveOnly;
} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
typedef PVOID PACCESS_TOKEN;
typedef struct _SE_IMPERSONATION_STATE {
	PACCESS_TOKEN Token;
	BOOLEAN CopyOnOpen;
	BOOLEAN EffectiveOnly;
	SECURITY_IMPERSONATION_LEVEL Level;
} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
typedef struct _SID_IDENTIFIER_AUTHORITY {
	BYTE Value[6];
} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
typedef PVOID PSID;
typedef struct _SID {
   BYTE  Revision;
   BYTE  SubAuthorityCount;
   SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
   DWORD SubAuthority[1 ];
} SID, *PISID;
typedef struct _SID_AND_ATTRIBUTES {
	PSID Sid;
	DWORD Attributes;
} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[1 ];
typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
typedef struct _TOKEN_SOURCE {
	CHAR SourceName[8 ];
	LUID SourceIdentifier;
} TOKEN_SOURCE,*PTOKEN_SOURCE;
typedef struct _TOKEN_CONTROL {
	LUID TokenId;
	LUID AuthenticationId;
	LUID ModifiedId;
	TOKEN_SOURCE TokenSource;
} TOKEN_CONTROL,*PTOKEN_CONTROL;
typedef struct _TOKEN_DEFAULT_DACL {
	PACL DefaultDacl;
} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
typedef struct _TOKEN_GROUPS {
	DWORD GroupCount;
	SID_AND_ATTRIBUTES Groups[1 ];
} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
typedef struct _TOKEN_OWNER {
	PSID Owner;
} TOKEN_OWNER,*PTOKEN_OWNER;
typedef struct _TOKEN_PRIMARY_GROUP {
	PSID PrimaryGroup;
} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
typedef struct _TOKEN_PRIVILEGES {
	DWORD PrivilegeCount;
	LUID_AND_ATTRIBUTES Privileges[1 ];
} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE, *PTOKEN_TYPE;
typedef struct _TOKEN_STATISTICS {
	LUID TokenId;
	LUID AuthenticationId;
	LARGE_INTEGER ExpirationTime;
	TOKEN_TYPE TokenType;
	SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
	DWORD DynamicCharged;
	DWORD DynamicAvailable;
	DWORD GroupCount;
	DWORD PrivilegeCount;
	LUID ModifiedId;
} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
typedef struct _TOKEN_USER {
	SID_AND_ATTRIBUTES User;
} TOKEN_USER, *PTOKEN_USER;
typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
typedef struct _SECURITY_DESCRIPTOR {
	BYTE Revision;
	BYTE Sbz1;
	SECURITY_DESCRIPTOR_CONTROL Control;
	PSID Owner;
	PSID Group;
	PACL Sacl;
	PACL Dacl;
} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
typedef enum _TOKEN_INFORMATION_CLASS {
	TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
	TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
	TokenImpersonationLevel,TokenStatistics,TokenRestrictedSids,
	TokenSessionId
} TOKEN_INFORMATION_CLASS;
typedef enum _SID_NAME_USE {
	SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,
	SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown
} SID_NAME_USE,*PSID_NAME_USE;
typedef struct _QUOTA_LIMITS {
	SIZE_T PagedPoolLimit;
	SIZE_T NonPagedPoolLimit;
	SIZE_T MinimumWorkingSetSize;
	SIZE_T MaximumWorkingSetSize;
	SIZE_T PagefileLimit;
	LARGE_INTEGER TimeLimit;
} QUOTA_LIMITS,*PQUOTA_LIMITS;
typedef struct _IO_COUNTERS {
	ULONGLONG  ReadOperationCount;
	ULONGLONG  WriteOperationCount;
	ULONGLONG  OtherOperationCount;
	ULONGLONG ReadTransferCount;
	ULONGLONG WriteTransferCount;
	ULONGLONG OtherTransferCount;
} IO_COUNTERS, *PIO_COUNTERS;
typedef struct _FILE_NOTIFY_INFORMATION {
	DWORD NextEntryOffset;
	DWORD Action;
	DWORD FileNameLength;
	WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
typedef struct _TAPE_ERASE {
	DWORD Type;
	BOOLEAN Immediate;
} TAPE_ERASE,*PTAPE_ERASE;
typedef struct _TAPE_GET_DRIVE_PARAMETERS {
	BOOLEAN ECC;
	BOOLEAN Compression;
	BOOLEAN DataPadding;
	BOOLEAN ReportSetmarks;
 	DWORD DefaultBlockSize;
 	DWORD MaximumBlockSize;
 	DWORD MinimumBlockSize;
 	DWORD MaximumPartitionCount;
 	DWORD FeaturesLow;
 	DWORD FeaturesHigh;
 	DWORD EOTWarningZoneSize;
} TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
typedef struct _TAPE_GET_MEDIA_PARAMETERS {
	LARGE_INTEGER Capacity;
	LARGE_INTEGER Remaining;
	DWORD BlockSize;
	DWORD PartitionCount;
	BOOLEAN WriteProtected;
} TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
typedef struct _TAPE_GET_POSITION {
	ULONG Type;
	ULONG Partition;
	ULONG OffsetLow;
	ULONG OffsetHigh;
} TAPE_GET_POSITION,*PTAPE_GET_POSITION;
typedef struct _TAPE_PREPARE {
	DWORD Operation;
	BOOLEAN Immediate;
} TAPE_PREPARE,*PTAPE_PREPARE;
typedef struct _TAPE_SET_DRIVE_PARAMETERS {
	BOOLEAN ECC;
	BOOLEAN Compression;
	BOOLEAN DataPadding;
	BOOLEAN ReportSetmarks;
	ULONG EOTWarningZoneSize;
} TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
typedef struct _TAPE_SET_MEDIA_PARAMETERS {
	ULONG BlockSize;
} TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
typedef struct _TAPE_SET_POSITION {
	DWORD Method;
	DWORD Partition;
	LARGE_INTEGER Offset;
	BOOLEAN Immediate;
} TAPE_SET_POSITION,*PTAPE_SET_POSITION;
typedef struct _TAPE_WRITE_MARKS {
	DWORD Type;
	DWORD Count;
	BOOLEAN Immediate;
} TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
typedef struct _TAPE_CREATE_PARTITION {
	DWORD Method;
	DWORD Count;
	DWORD Size;
} TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
typedef struct _MEMORY_BASIC_INFORMATION {
	PVOID BaseAddress;
	PVOID AllocationBase;
	DWORD AllocationProtect;
	DWORD RegionSize;
	DWORD State;
	DWORD Protect;
	DWORD Type;
} MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
typedef struct _MESSAGE_RESOURCE_ENTRY {
	WORD Length;
	WORD Flags;
	BYTE Text[1];
} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
typedef struct _MESSAGE_RESOURCE_BLOCK {
	DWORD LowId;
	DWORD HighId;
	DWORD OffsetToEntries;
} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
typedef struct _MESSAGE_RESOURCE_DATA {
	DWORD NumberOfBlocks;
	MESSAGE_RESOURCE_BLOCK Blocks[1];
} MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
typedef struct _LIST_ENTRY {
	struct _LIST_ENTRY *Flink;
	struct _LIST_ENTRY *Blink;
} LIST_ENTRY,*PLIST_ENTRY;
typedef struct _RTL_CRITICAL_SECTION_DEBUG {
	WORD Type;
	WORD CreatorBackTraceIndex;
	struct _RTL_CRITICAL_SECTION *CriticalSection;
	LIST_ENTRY ProcessLocksList;
	DWORD EntryCount;
	DWORD ContentionCount;
	DWORD Spare[2];
} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
typedef struct _RTL_CRITICAL_SECTION {
	PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
	LONG LockCount;
	LONG RecursionCount;
	HANDLE OwningThread;
	HANDLE LockSemaphore;
	DWORD Reserved;
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
typedef struct _EVENTLOGRECORD {
	DWORD Length;
	DWORD Reserved;
	DWORD RecordNumber;
	DWORD TimeGenerated;
	DWORD TimeWritten;
	DWORD EventID;
	WORD EventType;
	WORD NumStrings;
	WORD EventCategory;
	WORD ReservedFlags;
	DWORD ClosingRecordNumber;
	DWORD StringOffset;
	DWORD UserSidLength;
	DWORD UserSidOffset;
	DWORD DataLength;
	DWORD DataOffset;
} EVENTLOGRECORD,*PEVENTLOGRECORD;
typedef struct _OSVERSIONINFOA {
	DWORD dwOSVersionInfoSize;
	DWORD dwMajorVersion;
	DWORD dwMinorVersion;
	DWORD dwBuildNumber;
	DWORD dwPlatformId;
	CHAR szCSDVersion[128];
} OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
typedef struct _OSVERSIONINFOW {
	DWORD dwOSVersionInfoSize;
	DWORD dwMajorVersion;
	DWORD dwMinorVersion;
	DWORD dwBuildNumber;
	DWORD dwPlatformId;
	WCHAR szCSDVersion[128];
} OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW;
typedef struct _OSVERSIONINFOEXA {
	DWORD dwOSVersionInfoSize;
	DWORD dwMajorVersion;
	DWORD dwMinorVersion;
	DWORD dwBuildNumber;
	DWORD dwPlatformId;
	CHAR szCSDVersion[128];
	WORD wServicePackMajor;
	WORD wServicePackMinor;
	WORD wSuiteMask;
	BYTE wProductType;
	BYTE wReserved;
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
typedef struct _OSVERSIONINFOEXW {
	DWORD dwOSVersionInfoSize;
	DWORD dwMajorVersion;
	DWORD dwMinorVersion;
	DWORD dwBuildNumber;
	DWORD dwPlatformId;
	WCHAR szCSDVersion[128];
	WORD wServicePackMajor;
	WORD wServicePackMinor;
	WORD wSuiteMask;
	BYTE wProductType;
	BYTE wReserved;
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
#pragma pack(push,2)
typedef struct _IMAGE_VXD_HEADER {
	WORD e32_magic;
	BYTE e32_border;
	BYTE e32_worder;
	DWORD e32_level;
	WORD e32_cpu;
	WORD e32_os;
	DWORD e32_ver;
	DWORD e32_mflags;
	DWORD e32_mpages;
	DWORD e32_startobj;
	DWORD e32_eip;
	DWORD e32_stackobj;
	DWORD e32_esp;
	DWORD e32_pagesize;
	DWORD e32_lastpagesize;
	DWORD e32_fixupsize;
	DWORD e32_fixupsum;
	DWORD e32_ldrsize;
	DWORD e32_ldrsum;
	DWORD e32_objtab;
	DWORD e32_objcnt;
	DWORD e32_objmap;
	DWORD e32_itermap;
	DWORD e32_rsrctab;
	DWORD e32_rsrccnt;
	DWORD e32_restab;
	DWORD e32_enttab;
	DWORD e32_dirtab;
	DWORD e32_dircnt;
	DWORD e32_fpagetab;
	DWORD e32_frectab;
	DWORD e32_impmod;
	DWORD e32_impmodcnt;
	DWORD e32_impproc;
	DWORD e32_pagesum;
	DWORD e32_datapage;
	DWORD e32_preload;
	DWORD e32_nrestab;
	DWORD e32_cbnrestab;
	DWORD e32_nressum;
	DWORD e32_autodata;
	DWORD e32_debuginfo;
	DWORD e32_debuglen;
	DWORD e32_instpreload;
	DWORD e32_instdemand;
	DWORD e32_heapsize;
	BYTE e32_res3[12];
	DWORD e32_winresoff;
	DWORD e32_winreslen;
	WORD e32_devid;
	WORD e32_ddkver;
} IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
#pragma pack(pop)
#pragma pack(push,4)
typedef struct _IMAGE_FILE_HEADER {
	WORD Machine;
	WORD NumberOfSections;
	DWORD TimeDateStamp;
	DWORD PointerToSymbolTable;
	DWORD NumberOfSymbols;
	WORD SizeOfOptionalHeader;
	WORD Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
typedef struct _IMAGE_DATA_DIRECTORY {
	DWORD VirtualAddress;
	DWORD Size;
} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
typedef struct _IMAGE_OPTIONAL_HEADER {
	WORD Magic;
	BYTE MajorLinkerVersion;
	BYTE MinorLinkerVersion;
	DWORD SizeOfCode;
	DWORD SizeOfInitializedData;
	DWORD SizeOfUninitializedData;
	DWORD AddressOfEntryPoint;
	DWORD BaseOfCode;
	DWORD BaseOfData;
	DWORD ImageBase;
	DWORD SectionAlignment;
	DWORD FileAlignment;
	WORD MajorOperatingSystemVersion;
	WORD MinorOperatingSystemVersion;
	WORD MajorImageVersion;
	WORD MinorImageVersion;
	WORD MajorSubsystemVersion;
	WORD MinorSubsystemVersion;
	DWORD Reserved1;
	DWORD SizeOfImage;
	DWORD SizeOfHeaders;
	DWORD CheckSum;
	WORD Subsystem;
	WORD DllCharacteristics;
	DWORD SizeOfStackReserve;
	DWORD SizeOfStackCommit;
	DWORD SizeOfHeapReserve;
	DWORD SizeOfHeapCommit;
	DWORD LoaderFlags;
	DWORD NumberOfRvaAndSizes;
	IMAGE_DATA_DIRECTORY DataDirectory[16 ];
} IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;
typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
	WORD Magic;
	BYTE MajorLinkerVersion;
	BYTE MinorLinkerVersion;
	DWORD SizeOfCode;
	DWORD SizeOfInitializedData;
	DWORD SizeOfUninitializedData;
	DWORD AddressOfEntryPoint;
	DWORD BaseOfCode;
	DWORD BaseOfData;
	DWORD BaseOfBss;
	DWORD GprMask;
	DWORD CprMask[4];
	DWORD GpValue;
} IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
#pragma pack(pop)
#pragma pack(push,2)
typedef struct _IMAGE_DOS_HEADER {
	WORD e_magic;
	WORD e_cblp;
	WORD e_cp;
	WORD e_crlc;
	WORD e_cparhdr;
	WORD e_minalloc;
	WORD e_maxalloc;
	WORD e_ss;
	WORD e_sp;
	WORD e_csum;
	WORD e_ip;
	WORD e_cs;
	WORD e_lfarlc;
	WORD e_ovno;
	WORD e_res[4];
	WORD e_oemid;
	WORD e_oeminfo;
	WORD e_res2[10];
	LONG e_lfanew;
} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
typedef struct _IMAGE_OS2_HEADER {
	WORD ne_magic;
	CHAR ne_ver;
	CHAR ne_rev;
	WORD ne_enttab;
	WORD ne_cbenttab;
	LONG ne_crc;
	WORD ne_flags;
	WORD ne_autodata;
	WORD ne_heap;
	WORD ne_stack;
	LONG ne_csip;
	LONG ne_sssp;
	WORD ne_cseg;
	WORD ne_cmod;
	WORD ne_cbnrestab;
	WORD ne_segtab;
	WORD ne_rsrctab;
	WORD ne_restab;
	WORD ne_modtab;
	WORD ne_imptab;
	LONG ne_nrestab;
	WORD ne_cmovent;
	WORD ne_align;
	WORD ne_cres;
	BYTE ne_exetyp;
	BYTE ne_flagsothers;
	WORD ne_pretthunks;
	WORD ne_psegrefbytes;
	WORD ne_swaparea;
	WORD ne_expver;
} IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
#pragma pack(pop)
#pragma pack(push,4)
typedef struct _IMAGE_NT_HEADERS {
	DWORD Signature;
	IMAGE_FILE_HEADER FileHeader;
	IMAGE_OPTIONAL_HEADER OptionalHeader;
} IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS;
typedef struct _IMAGE_ROM_HEADERS {
	IMAGE_FILE_HEADER FileHeader;
	IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
} IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
typedef struct _IMAGE_SECTION_HEADER {
	BYTE Name[8 ];
	union {
		DWORD PhysicalAddress;
		DWORD VirtualSize;
	} Misc;
	DWORD VirtualAddress;
	DWORD SizeOfRawData;
	DWORD PointerToRawData;
	DWORD PointerToRelocations;
	DWORD PointerToLinenumbers;
	WORD NumberOfRelocations;
	WORD NumberOfLinenumbers;
	DWORD Characteristics;
} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
#pragma pack(pop)
#pragma pack(push,2)
typedef struct _IMAGE_SYMBOL {
	union {
		BYTE ShortName[8];
		struct {
			DWORD Short;
			DWORD Long;
		} Name;
		PBYTE LongName[2];
	} N;
	DWORD Value;
	SHORT SectionNumber;
	WORD Type;
	BYTE StorageClass;
	BYTE NumberOfAuxSymbols;
} IMAGE_SYMBOL,*PIMAGE_SYMBOL;
typedef union _IMAGE_AUX_SYMBOL {
	struct {
		DWORD TagIndex;
		union {
			struct {
				WORD Linenumber;
				WORD Size;
			} LnSz;
			DWORD TotalSize;
		} Misc;
		union {
			struct {
				DWORD PointerToLinenumber;
				DWORD PointerToNextFunction;
			} Function;
			struct {
				WORD Dimension[4];
			} Array;
		} FcnAry;
		WORD TvIndex;
	} Sym;
	struct {
		BYTE Name[18 ];
	} File;
	struct {
		DWORD Length;
		WORD NumberOfRelocations;
		WORD NumberOfLinenumbers;
		DWORD CheckSum;
		SHORT Number;
		BYTE Selection;
	} Section;
} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
	DWORD NumberOfSymbols;
	DWORD LvaToFirstSymbol;
	DWORD NumberOfLinenumbers;
	DWORD LvaToFirstLinenumber;
	DWORD RvaToFirstByteOfCode;
	DWORD RvaToLastByteOfCode;
	DWORD RvaToFirstByteOfData;
	DWORD RvaToLastByteOfData;
} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
typedef struct _IMAGE_RELOCATION {
	__extension__  union {
		DWORD VirtualAddress;
		DWORD RelocCount;
	}  ;
	DWORD SymbolTableIndex;
	WORD Type;
} IMAGE_RELOCATION,*PIMAGE_RELOCATION;
#pragma pack(pop)
#pragma pack(push,4)
typedef struct _IMAGE_BASE_RELOCATION {
	DWORD VirtualAddress;
	DWORD SizeOfBlock;
} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
#pragma pack(pop)
#pragma pack(push,2)
typedef struct _IMAGE_LINENUMBER {
	union {
		DWORD SymbolTableIndex;
		DWORD VirtualAddress;
	} Type;
	WORD Linenumber;
} IMAGE_LINENUMBER,*PIMAGE_LINENUMBER;
#pragma pack(pop)
#pragma pack(push,4)
typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
	BYTE Name[16];
	BYTE Date[12];
	BYTE UserID[6];
	BYTE GroupID[6];
	BYTE Mode[8];
	BYTE Size[10];
	BYTE EndHeader[2];
} IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
typedef struct _IMAGE_EXPORT_DIRECTORY {
	DWORD Characteristics;
	DWORD TimeDateStamp;
	WORD MajorVersion;
	WORD MinorVersion;
	DWORD Name;
	DWORD Base;
	DWORD NumberOfFunctions;
	DWORD NumberOfNames;
	PDWORD *AddressOfFunctions;
	PDWORD *AddressOfNames;
	PWORD *AddressOfNameOrdinals;
} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
typedef struct _IMAGE_IMPORT_BY_NAME {
	WORD Hint;
	BYTE Name[1];
} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
typedef struct _IMAGE_THUNK_DATA {
	union {
		PBYTE ForwarderString;
		PDWORD Function;
		DWORD Ordinal;
		PIMAGE_IMPORT_BY_NAME AddressOfData;
	} u1;
} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
	__extension__  union {
		DWORD Characteristics;
		PIMAGE_THUNK_DATA OriginalFirstThunk;
	}  ;
	DWORD TimeDateStamp;
	DWORD ForwarderChain;
	DWORD Name;
	PIMAGE_THUNK_DATA FirstThunk;
} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
	DWORD TimeDateStamp;
	WORD OffsetModuleName;
	WORD NumberOfModuleForwarderRefs;
} IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
typedef struct _IMAGE_BOUND_FORWARDER_REF {
	DWORD TimeDateStamp;
	WORD OffsetModuleName;
	WORD Reserved;
} IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
typedef void(__attribute__((__stdcall__))   *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID);
typedef struct _IMAGE_TLS_DIRECTORY {
	DWORD StartAddressOfRawData;
	DWORD EndAddressOfRawData;
	PDWORD AddressOfIndex;
	PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
	DWORD SizeOfZeroFill;
	DWORD Characteristics;
} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
typedef struct _IMAGE_RESOURCE_DIRECTORY {
	DWORD Characteristics;
	DWORD TimeDateStamp;
	WORD MajorVersion;
	WORD MinorVersion;
	WORD NumberOfNamedEntries;
	WORD NumberOfIdEntries;
} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
__extension__  typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
	__extension__  union {
		__extension__  struct {
			DWORD NameOffset:31;
			DWORD NameIsString:1;
		} ;
		DWORD Name;
		WORD Id;
	}  ;
	__extension__  union {
		DWORD OffsetToData;
		__extension__  struct {
			DWORD OffsetToDirectory:31;
			DWORD DataIsDirectory:1;
		}  ;
	}  ;
} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
	WORD Length;
	CHAR NameString[1];
} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
	WORD Length;
	WCHAR NameString[1];
} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
	DWORD OffsetToData;
	DWORD Size;
	DWORD CodePage;
	DWORD Reserved;
} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
	DWORD Characteristics;
	DWORD TimeDateStamp;
	WORD MajorVersion;
	WORD MinorVersion;
	DWORD GlobalFlagsClear;
	DWORD GlobalFlagsSet;
	DWORD CriticalSectionDefaultTimeout;
	DWORD DeCommitFreeBlockThreshold;
	DWORD DeCommitTotalFreeThreshold;
	PVOID LockPrefixTable;
	DWORD MaximumAllocationSize;
	DWORD VirtualMemoryThreshold;
	DWORD ProcessHeapFlags;
	DWORD Reserved[4];
} IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY;
typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
	DWORD BeginAddress;
	DWORD EndAddress;
	PVOID ExceptionHandler;
	PVOID HandlerData;
	DWORD PrologEndAddress;
} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;
typedef struct _IMAGE_DEBUG_DIRECTORY {
	DWORD Characteristics;
	DWORD TimeDateStamp;
	WORD MajorVersion;
	WORD MinorVersion;
	DWORD Type;
	DWORD SizeOfData;
	DWORD AddressOfRawData;
	DWORD PointerToRawData;
} IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
typedef struct _FPO_DATA {
	DWORD ulOffStart;
	DWORD cbProcSize;
	DWORD cdwLocals;
	WORD cdwParams;
	WORD cbProlog:8;
	WORD cbRegs:3;
	WORD fHasSEH:1;
	WORD fUseBP:1;
	WORD reserved:1;
	WORD cbFrame:2;
} FPO_DATA,*PFPO_DATA;
typedef struct _IMAGE_DEBUG_MISC {
	DWORD DataType;
	DWORD Length;
	BOOLEAN Unicode;
	BYTE Reserved[3];
	BYTE Data[1];
} IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
typedef struct _IMAGE_FUNCTION_ENTRY {
	DWORD StartingAddress;
	DWORD EndingAddress;
	DWORD EndOfPrologue;
} IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
	WORD Signature;
	WORD Flags;
	WORD Machine;
	WORD Characteristics;
	DWORD TimeDateStamp;
	DWORD CheckSum;
	DWORD ImageBase;
	DWORD SizeOfImage;
	DWORD NumberOfSections;
	DWORD ExportedNamesSize;
	DWORD DebugDirectorySize;
	DWORD Reserved[3];
} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
#pragma pack(pop)
typedef enum _CM_SERVICE_NODE_TYPE {
	DriverType= 1 ,
	FileSystemType= 2 ,
	Win32ServiceOwnProcess= 16 ,
	Win32ServiceShareProcess= 32 ,
	AdapterType= 4 ,
	RecognizerType= 8 
} SERVICE_NODE_TYPE;
typedef enum _CM_SERVICE_LOAD_TYPE {
	BootLoad= 0 ,
	SystemLoad= 1 ,
	AutoLoad= 2 ,
	DemandLoad= 3 ,
	DisableLoad= 4 
} SERVICE_LOAD_TYPE;
typedef enum _CM_ERROR_CONTROL_TYPE {
	IgnoreError= 0 ,
	NormalError= 1 ,
	SevereError= 2 ,
	CriticalError= 3 
} SERVICE_ERROR_TYPE;
typedef struct _NT_TIB {
	struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
	PVOID StackBase;
	PVOID StackLimit;
	PVOID SubSystemTib;
	__extension__  union {
		PVOID FiberData;
		DWORD Version;
	}  ;
	PVOID ArbitraryUserPointer;
	struct _NT_TIB *Self;
} NT_TIB,*PNT_TIB;
typedef struct _REPARSE_DATA_BUFFER {
	DWORD  ReparseTag;
	WORD   ReparseDataLength;
	WORD   Reserved;
	__extension__  union {
		struct {
			WORD   SubstituteNameOffset;
			WORD   SubstituteNameLength;
			WORD   PrintNameOffset;
			WORD   PrintNameLength;
			WCHAR PathBuffer[1];
		} SymbolicLinkReparseBuffer;
		struct {
			WORD   SubstituteNameOffset;
			WORD   SubstituteNameLength;
			WORD   PrintNameOffset;
			WORD   PrintNameLength;
			WCHAR PathBuffer[1];
		} MountPointReparseBuffer;
		struct {
			BYTE   DataBuffer[1];
		} GenericReparseBuffer;
	}  ;
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
typedef struct _REPARSE_GUID_DATA_BUFFER {
	DWORD  ReparseTag;
	WORD   ReparseDataLength;
	WORD   Reserved;
	GUID   ReparseGuid;
	struct {
		BYTE   DataBuffer[1];
	} GenericReparseBuffer;
} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
typedef struct _REPARSE_POINT_INFORMATION {
	WORD   ReparseDataLength;
	WORD   UnparsedNameLength;
} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;

typedef union _FILE_SEGMENT_ELEMENT {
	PVOID64 Buffer;
	ULONGLONG Alignment;
}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;






typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;




PVOID GetCurrentFiber(void);
PVOID GetFiberData(void);

PVOID GetCurrentFiber(void);
extern __inline__ PVOID GetCurrentFiber(void)
{
    void* ret;
    __asm__ volatile (
	      "movl	%%fs:0x10,%0"
	        : "=r" (ret)  
	        :
		);
    return ret;
}

PVOID GetFiberData(void);
extern __inline__ PVOID GetFiberData(void)
{
    void* ret;
    __asm__ volatile (
	      "movl	%%fs:0x10,%0\n"
	      "movl	(%0),%0"
	       : "=r" (ret)  
	       :
	      );
    return ret;
}

# 2705 "/usr/include/w32api/winnt.h" 3




}



# 235 "/usr/include/w32api/windef.h" 2 3


typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;

typedef LONG HRESULT;



typedef WORD ATOM;

typedef HANDLE HGLOBAL;
typedef HANDLE HLOCAL;
typedef HANDLE GLOBALHANDLE;
typedef HANDLE LOCALHANDLE;
typedef void *HGDIOBJ;
typedef struct  HACCEL__{int i;}* HACCEL  ;
typedef struct  HBITMAP__{int i;}* HBITMAP  ;
typedef struct  HBRUSH__{int i;}* HBRUSH  ;
typedef struct  HCOLORSPACE__{int i;}* HCOLORSPACE  ;
typedef struct  HDC__{int i;}* HDC  ;
typedef struct  HGLRC__{int i;}* HGLRC  ;
typedef struct  HDESK__{int i;}* HDESK  ;
typedef struct  HENHMETAFILE__{int i;}* HENHMETAFILE  ;
typedef struct  HFONT__{int i;}* HFONT  ;
typedef struct  HICON__{int i;}* HICON  ;
typedef struct  HKEY__{int i;}* HKEY  ;
 
 
typedef struct  HMONITOR__{int i;}* HMONITOR  ;

typedef struct  HTERMINAL__{int i;}* HTERMINAL  ;
typedef struct  HWINEVENTHOOK__{int i;}* HWINEVENTHOOK  ;
 
typedef HKEY *PHKEY;
typedef struct  HMENU__{int i;}* HMENU  ;
typedef struct  HMETAFILE__{int i;}* HMETAFILE  ;
typedef struct  HINSTANCE__{int i;}* HINSTANCE  ;
typedef HINSTANCE HMODULE;
typedef struct  HPALETTE__{int i;}* HPALETTE  ;
typedef struct  HPEN__{int i;}* HPEN  ;
typedef struct  HRGN__{int i;}* HRGN  ;
typedef struct  HRSRC__{int i;}* HRSRC  ;
typedef struct  HSTR__{int i;}* HSTR  ;
typedef struct  HTASK__{int i;}* HTASK  ;
typedef struct  HWND__{int i;}* HWND  ;
typedef struct  HWINSTA__{int i;}* HWINSTA  ;
typedef struct  HKL__{int i;}* HKL  ;
typedef int HFILE;
typedef HICON HCURSOR;
typedef DWORD COLORREF;
typedef int (__attribute__((__stdcall__))   *FARPROC)();
typedef int (__attribute__((__stdcall__))   *NEARPROC)();
typedef int (__attribute__((__stdcall__))   *PROC)();
typedef struct tagRECT {
	LONG left;
	LONG top;
	LONG right;
	LONG bottom;
} RECT,*PRECT,*LPRECT;
typedef const RECT *LPCRECT;
typedef struct tagRECTL {
	LONG left;
	LONG top;
	LONG right;
	LONG bottom;
} RECTL,*PRECTL,*LPRECTL;
typedef const RECTL *LPCRECTL;
typedef struct tagPOINT {
	LONG x;
	LONG y;
} POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
typedef struct tagSIZE {
	LONG cx;
	LONG cy;
} SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
typedef struct tagPOINTS {
	SHORT x;
	SHORT y;
} POINTS,*PPOINTS,*LPPOINTS;


}


# 48 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/wincon.h" 1 3







extern "C" {













































typedef struct _CHAR_INFO {
	union {
		WCHAR UnicodeChar;
		CHAR AsciiChar;
	} Char;
	WORD Attributes;
} CHAR_INFO,*PCHAR_INFO;
typedef struct _SMALL_RECT {
	SHORT Left;
	SHORT Top;
	SHORT Right;
	SHORT Bottom;
} SMALL_RECT,*PSMALL_RECT;
typedef struct _CONSOLE_CURSOR_INFO {
	DWORD	dwSize;
	BOOL	bVisible;
} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
typedef struct _COORD {
	SHORT X;
	SHORT Y;
} COORD;
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
	COORD	dwSize;
	COORD	dwCursorPosition;
	WORD	wAttributes;
	SMALL_RECT srWindow;
	COORD	dwMaximumWindowSize;
} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
typedef BOOL(__attribute__((__stdcall__))   *PHANDLER_ROUTINE)(DWORD);
typedef struct _KEY_EVENT_RECORD {
	BOOL bKeyDown;
	WORD wRepeatCount;
	WORD wVirtualKeyCode;
	WORD wVirtualScanCode;
	union {
		WCHAR UnicodeChar;
		CHAR AsciiChar;
	} uChar;
	DWORD dwControlKeyState;
} 

 
 __attribute__((packed)) 

KEY_EVENT_RECORD;

typedef struct _MOUSE_EVENT_RECORD {
	COORD dwMousePosition;
	DWORD dwButtonState;
	DWORD dwControlKeyState;
	DWORD dwEventFlags;
} MOUSE_EVENT_RECORD;
typedef struct _WINDOW_BUFFER_SIZE_RECORD {	COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
typedef struct _MENU_EVENT_RECORD {	UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
typedef struct _INPUT_RECORD {
	WORD EventType;
	union {
		KEY_EVENT_RECORD KeyEvent;
		MOUSE_EVENT_RECORD MouseEvent;
		WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
		MENU_EVENT_RECORD MenuEvent;
		FOCUS_EVENT_RECORD FocusEvent;
	} Event;
} INPUT_RECORD,*PINPUT_RECORD;

BOOL __attribute__((__stdcall__))   AllocConsole(void);
HANDLE __attribute__((__stdcall__))   CreateConsoleScreenBuffer(DWORD,DWORD,const  SECURITY_ATTRIBUTES*,DWORD,LPVOID);
BOOL __attribute__((__stdcall__))   FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   FlushConsoleInputBuffer(HANDLE);
BOOL __attribute__((__stdcall__))   FreeConsole(void);
BOOL __attribute__((__stdcall__))   GenerateConsoleCtrlEvent(DWORD,DWORD);
UINT __attribute__((__stdcall__))   GetConsoleCP(void);
BOOL __attribute__((__stdcall__))   GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO);
BOOL __attribute__((__stdcall__))   GetConsoleMode(HANDLE,PDWORD);
UINT __attribute__((__stdcall__))   GetConsoleOutputCP(void);
BOOL __attribute__((__stdcall__))   GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO);
DWORD __attribute__((__stdcall__))   GetConsoleTitleA(LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetConsoleTitleW(LPWSTR,DWORD);
COORD __attribute__((__stdcall__))   GetLargestConsoleWindowSize(HANDLE);
BOOL __attribute__((__stdcall__))   GetNumberOfConsoleInputEvents(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetNumberOfConsoleMouseButtons(PDWORD);
BOOL __attribute__((__stdcall__))   PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID);
BOOL __attribute__((__stdcall__))   ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID);
BOOL __attribute__((__stdcall__))   ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD);
BOOL __attribute__((__stdcall__))   ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
BOOL __attribute__((__stdcall__))   ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
BOOL __attribute__((__stdcall__))   ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
BOOL __attribute__((__stdcall__))   ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
BOOL __attribute__((__stdcall__))   SetConsoleActiveScreenBuffer(HANDLE);
BOOL __attribute__((__stdcall__))   SetConsoleCP(UINT);
BOOL __attribute__((__stdcall__))   SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL);
BOOL __attribute__((__stdcall__))   SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*);
BOOL __attribute__((__stdcall__))   SetConsoleCursorPosition(HANDLE,COORD);
BOOL __attribute__((__stdcall__))   SetConsoleMode(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetConsoleOutputCP(UINT);
BOOL __attribute__((__stdcall__))   SetConsoleScreenBufferSize(HANDLE,COORD);
BOOL __attribute__((__stdcall__))   SetConsoleTextAttribute(HANDLE,WORD);
BOOL __attribute__((__stdcall__))   SetConsoleTitleA(LPCSTR);
BOOL __attribute__((__stdcall__))   SetConsoleTitleW(LPCWSTR);
BOOL __attribute__((__stdcall__))   SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*);
BOOL __attribute__((__stdcall__))   WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
BOOL __attribute__((__stdcall__))   WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
BOOL __attribute__((__stdcall__))   WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
BOOL __attribute__((__stdcall__))   WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
BOOL __attribute__((__stdcall__))   WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD);
BOOL __attribute__((__stdcall__))   WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD);

# 187 "/usr/include/w32api/wincon.h" 3

















}


# 49 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/basetyps.h" 1 3











 



















 










# 57 "/usr/include/w32api/basetyps.h" 3













# 80 "/usr/include/w32api/basetyps.h" 3




# 93 "/usr/include/w32api/basetyps.h" 3



typedef GUID UUID;

typedef GUID IID;
typedef GUID CLSID;
typedef CLSID *LPCLSID;
typedef IID *LPIID;
typedef IID *REFIID;
typedef CLSID *REFCLSID;
typedef GUID FMTID;
typedef FMTID *REFFMTID;
typedef unsigned long error_status_t;

typedef unsigned long PROPID;




































# 50 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/winbase.h" 1 3










extern "C" {

















































































































































































































































































































































































































































































































typedef struct _FILETIME {
	DWORD dwLowDateTime;
	DWORD dwHighDateTime;
} FILETIME,*PFILETIME,*LPFILETIME;
typedef struct _BY_HANDLE_FILE_INFORMATION {
	DWORD	dwFileAttributes;
	FILETIME	ftCreationTime;
	FILETIME	ftLastAccessTime;
	FILETIME	ftLastWriteTime;
	DWORD	dwVolumeSerialNumber;
	DWORD	nFileSizeHigh;
	DWORD	nFileSizeLow;
	DWORD	nNumberOfLinks;
	DWORD	nFileIndexHigh;
	DWORD	nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION;
typedef struct _DCB {
	DWORD DCBlength;
	DWORD BaudRate;
	DWORD fBinary:1;
	DWORD fParity:1;
	DWORD fOutxCtsFlow:1;
	DWORD fOutxDsrFlow:1;
	DWORD fDtrControl:2;
	DWORD fDsrSensitivity:1;
	DWORD fTXContinueOnXoff:1;
	DWORD fOutX:1;
	DWORD fInX:1;
	DWORD fErrorChar:1;
	DWORD fNull:1;
	DWORD fRtsControl:2;
	DWORD fAbortOnError:1;
	DWORD fDummy2:17;
	WORD wReserved;
	WORD XonLim;
	WORD XoffLim;
	BYTE ByteSize;
	BYTE Parity;
	BYTE StopBits;
	char XonChar;
	char XoffChar;
	char ErrorChar;
	char EofChar;
	char EvtChar;
	WORD wReserved1;
} DCB,*LPDCB;
typedef struct _COMM_CONFIG {
	DWORD dwSize;
	WORD  wVersion;
	WORD  wReserved;
	DCB   dcb;
	DWORD dwProviderSubType;
	DWORD dwProviderOffset;
	DWORD dwProviderSize;
	WCHAR wcProviderData[1];
} COMMCONFIG,*LPCOMMCONFIG;
typedef struct _COMMPROP {
	WORD	wPacketLength;
	WORD	wPacketVersion;
	DWORD	dwServiceMask;
	DWORD	dwReserved1;
	DWORD	dwMaxTxQueue;
	DWORD	dwMaxRxQueue;
	DWORD	dwMaxBaud;
	DWORD	dwProvSubType;
	DWORD	dwProvCapabilities;
	DWORD	dwSettableParams;
	DWORD	dwSettableBaud;
	WORD	wSettableData;
	WORD	wSettableStopParity;
	DWORD	dwCurrentTxQueue;
	DWORD	dwCurrentRxQueue;
	DWORD	dwProvSpec1;
	DWORD	dwProvSpec2;
	WCHAR	wcProvChar[1];
} COMMPROP,*LPCOMMPROP;
typedef struct _COMMTIMEOUTS {
	DWORD ReadIntervalTimeout;
	DWORD ReadTotalTimeoutMultiplier;
	DWORD ReadTotalTimeoutConstant;
	DWORD WriteTotalTimeoutMultiplier;
	DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
typedef struct _COMSTAT {
	DWORD fCtsHold:1;
	DWORD fDsrHold:1;
	DWORD fRlsdHold:1;
	DWORD fXoffHold:1;
	DWORD fXoffSent:1;
	DWORD fEof:1;
	DWORD fTxim:1;
	DWORD fReserved:25;
	DWORD cbInQue;
	DWORD cbOutQue;
} COMSTAT,*LPCOMSTAT;
typedef DWORD (__attribute__((__stdcall__))   *LPTHREAD_START_ROUTINE)(LPVOID);
typedef struct _CREATE_PROCESS_DEBUG_INFO {
	HANDLE hFile;
	HANDLE hProcess;
	HANDLE hThread;
	LPVOID lpBaseOfImage;
	DWORD dwDebugInfoFileOffset;
	DWORD nDebugInfoSize;
	LPVOID lpThreadLocalBase;
	LPTHREAD_START_ROUTINE lpStartAddress;
	LPVOID lpImageName;
	WORD fUnicode;
} CREATE_PROCESS_DEBUG_INFO,*LPCREATE_PROCESS_DEBUG_INFO;
typedef struct _CREATE_THREAD_DEBUG_INFO {
	HANDLE hThread;
	LPVOID lpThreadLocalBase;
	LPTHREAD_START_ROUTINE lpStartAddress;
} CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO;
typedef struct _EXCEPTION_DEBUG_INFO {
	EXCEPTION_RECORD ExceptionRecord;
	DWORD dwFirstChance;
} EXCEPTION_DEBUG_INFO,*LPEXCEPTION_DEBUG_INFO;
typedef struct _EXIT_THREAD_DEBUG_INFO {
	DWORD dwExitCode;
} EXIT_THREAD_DEBUG_INFO,*LPEXIT_THREAD_DEBUG_INFO;
typedef struct _EXIT_PROCESS_DEBUG_INFO {
	DWORD dwExitCode;
} EXIT_PROCESS_DEBUG_INFO,*LPEXIT_PROCESS_DEBUG_INFO;
typedef struct _LOAD_DLL_DEBUG_INFO {
	HANDLE hFile;
	LPVOID lpBaseOfDll;
	DWORD dwDebugInfoFileOffset;
	DWORD nDebugInfoSize;
	LPVOID lpImageName;
	WORD fUnicode;
} LOAD_DLL_DEBUG_INFO,*LPLOAD_DLL_DEBUG_INFO;
typedef struct _UNLOAD_DLL_DEBUG_INFO {
	LPVOID lpBaseOfDll;
} UNLOAD_DLL_DEBUG_INFO,*LPUNLOAD_DLL_DEBUG_INFO;
typedef struct _OUTPUT_DEBUG_STRING_INFO {
	LPSTR lpDebugStringData;
	WORD fUnicode;
	WORD nDebugStringLength;
} OUTPUT_DEBUG_STRING_INFO,*LPOUTPUT_DEBUG_STRING_INFO;
typedef struct _RIP_INFO {
	DWORD dwError;
	DWORD dwType;
} RIP_INFO,*LPRIP_INFO;
typedef struct _DEBUG_EVENT {
	DWORD dwDebugEventCode;
	DWORD dwProcessId;
	DWORD dwThreadId;
	union {
		EXCEPTION_DEBUG_INFO Exception;
		CREATE_THREAD_DEBUG_INFO CreateThread;
		CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
		EXIT_THREAD_DEBUG_INFO ExitThread;
		EXIT_PROCESS_DEBUG_INFO ExitProcess;
		LOAD_DLL_DEBUG_INFO LoadDll;
		UNLOAD_DLL_DEBUG_INFO UnloadDll;
		OUTPUT_DEBUG_STRING_INFO DebugString;
		RIP_INFO RipInfo;
	} u;
} DEBUG_EVENT,*LPDEBUG_EVENT;
typedef struct _OVERLAPPED {
	DWORD Internal;
	DWORD InternalHigh;
	DWORD Offset;
	DWORD OffsetHigh;
	HANDLE hEvent;
} OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED;
typedef struct _STARTUPINFOA {
	DWORD	cb;
	LPSTR	lpReserved;
	LPSTR	lpDesktop;
	LPSTR	lpTitle;
	DWORD	dwX;
	DWORD	dwY;
	DWORD	dwXSize;
	DWORD	dwYSize;
	DWORD	dwXCountChars;
	DWORD	dwYCountChars;
	DWORD	dwFillAttribute;
	DWORD	dwFlags;
	WORD	wShowWindow;
	WORD	cbReserved2;
	PBYTE	lpReserved2;
	HANDLE	hStdInput;
	HANDLE	hStdOutput;
	HANDLE	hStdError;
} STARTUPINFOA,*LPSTARTUPINFOA;
typedef struct _STARTUPINFOW {
	DWORD	cb;
	LPWSTR	lpReserved;
	LPWSTR	lpDesktop;
	LPWSTR	lpTitle;
	DWORD	dwX;
	DWORD	dwY;
	DWORD	dwXSize;
	DWORD	dwYSize;
	DWORD	dwXCountChars;
	DWORD	dwYCountChars;
	DWORD	dwFillAttribute;
	DWORD	dwFlags;
	WORD	wShowWindow;
	WORD	cbReserved2;
	PBYTE	lpReserved2;
	HANDLE	hStdInput;
	HANDLE	hStdOutput;
	HANDLE	hStdError;
} STARTUPINFOW,*LPSTARTUPINFOW;
typedef struct _PROCESS_INFORMATION {
	HANDLE hProcess;
	HANDLE hThread;
	DWORD dwProcessId;
	DWORD dwThreadId;
} PROCESS_INFORMATION,*LPPROCESS_INFORMATION;
typedef struct _CRITICAL_SECTION_DEBUG {
	WORD Type;
	WORD CreatorBackTraceIndex;
	struct _CRITICAL_SECTION *CriticalSection;
	LIST_ENTRY ProcessLocksList;
	DWORD EntryCount;
	DWORD ContentionCount;
	DWORD Spare [2];
} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG;
typedef struct _CRITICAL_SECTION {
	PCRITICAL_SECTION_DEBUG DebugInfo;
	LONG LockCount;
	LONG RecursionCount;
	HANDLE OwningThread;
	HANDLE LockSemaphore;
	DWORD SpinCount;
} CRITICAL_SECTION,*PCRITICAL_SECTION,*LPCRITICAL_SECTION;
typedef struct _SYSTEMTIME {
	WORD wYear;
	WORD wMonth;
	WORD wDayOfWeek;
	WORD wDay;
	WORD wHour;
	WORD wMinute;
	WORD wSecond;
	WORD wMilliseconds;
} SYSTEMTIME,*LPSYSTEMTIME;
typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
	DWORD	dwFileAttributes;
	FILETIME	ftCreationTime;
	FILETIME	ftLastAccessTime;
	FILETIME	ftLastWriteTime;
	DWORD	nFileSizeHigh;
	DWORD	nFileSizeLow;
} WIN32_FILE_ATTRIBUTE_DATA,*LPWIN32_FILE_ATTRIBUTE_DATA;
typedef struct _WIN32_FIND_DATAA {
	DWORD dwFileAttributes;
	FILETIME ftCreationTime;
	FILETIME ftLastAccessTime;
	FILETIME ftLastWriteTime;
	DWORD nFileSizeHigh;
	DWORD nFileSizeLow;
	DWORD dwReserved0;
	DWORD dwReserved1;
	CHAR cFileName[260 ];
	CHAR cAlternateFileName[14];
} WIN32_FIND_DATAA,*LPWIN32_FIND_DATAA;
typedef struct _WIN32_FIND_DATAW {
	DWORD dwFileAttributes;
	FILETIME ftCreationTime;
	FILETIME ftLastAccessTime;
	FILETIME ftLastWriteTime;
	DWORD nFileSizeHigh;
	DWORD nFileSizeLow;
	DWORD dwReserved0;
	DWORD dwReserved1;
	WCHAR cFileName[260 ];
	WCHAR cAlternateFileName[14];
} WIN32_FIND_DATAW,*LPWIN32_FIND_DATAW;
typedef struct _WIN32_STREAM_ID {
	DWORD dwStreamId;
	DWORD dwStreamAttributes;
	LARGE_INTEGER Size;
	DWORD dwStreamNameSize;
	WCHAR cStreamName[1 ];
} WIN32_STREAM_ID;
typedef enum _FINDEX_INFO_LEVELS {
	FindExInfoStandard,
	FindExInfoMaxInfoLevel
} FINDEX_INFO_LEVELS;
typedef enum _FINDEX_SEARCH_OPS {
	FindExSearchNameMatch,
	FindExSearchLimitToDirectories,
	FindExSearchLimitToDevices,
	FindExSearchMaxSearchOp
} FINDEX_SEARCH_OPS;
typedef enum _ACL_INFORMATION_CLASS {
	AclRevisionInformation=1,
	AclSizeInformation
} ACL_INFORMATION_CLASS;
typedef struct tagHW_PROFILE_INFOA {
	DWORD dwDockInfo;
	CHAR szHwProfileGuid[39 ];
	CHAR szHwProfileName[80 ];
} HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
typedef struct tagHW_PROFILE_INFOW {
	DWORD dwDockInfo;
	WCHAR szHwProfileGuid[39 ];
	WCHAR szHwProfileName[80 ];
} HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
typedef enum _GET_FILEEX_INFO_LEVELS {
	GetFileExInfoStandard,
	GetFileExMaxInfoLevel
} GET_FILEEX_INFO_LEVELS;
typedef struct _SYSTEM_INFO {
	__extension__  union {
		DWORD dwOemId;
		__extension__  struct {
			WORD wProcessorArchitecture;
			WORD wReserved;
		}  ;
	}  ;
	DWORD dwPageSize;
	PVOID lpMinimumApplicationAddress;
	PVOID lpMaximumApplicationAddress;
	DWORD dwActiveProcessorMask;
	DWORD dwNumberOfProcessors;
	DWORD dwProcessorType;
	DWORD dwAllocationGranularity;
	WORD wProcessorLevel;
	WORD wProcessorRevision;
} SYSTEM_INFO,*LPSYSTEM_INFO;
typedef struct _SYSTEM_POWER_STATUS {
	BYTE ACLineStatus;
	BYTE BatteryFlag;
	BYTE BatteryLifePercent;
	BYTE Reserved1;
	DWORD BatteryLifeTime;
	DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
typedef struct _TIME_ZONE_INFORMATION {
	LONG Bias;
	WCHAR StandardName[32];
	SYSTEMTIME StandardDate;
	LONG StandardBias;
	WCHAR DaylightName[32];
	SYSTEMTIME DaylightDate;
	LONG DaylightBias;
} TIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
typedef struct _MEMORYSTATUS {
	DWORD dwLength;
	DWORD dwMemoryLoad;
	DWORD dwTotalPhys;
	DWORD dwAvailPhys;
	DWORD dwTotalPageFile;
	DWORD dwAvailPageFile;
	DWORD dwTotalVirtual;
	DWORD dwAvailVirtual;
} MEMORYSTATUS,*LPMEMORYSTATUS;
typedef struct _LDT_ENTRY {
	WORD LimitLow;
	WORD BaseLow;
	union {
		struct {
			BYTE BaseMid;
			BYTE Flags1;
			BYTE Flags2;
			BYTE BaseHi;
		} Bytes;
		struct {
			DWORD BaseMid:8;
			DWORD Type:5;
			DWORD Dpl:2;
			DWORD Pres:1;
			DWORD LimitHi:4;
			DWORD Sys:1;
			DWORD Reserved_0:1;
			DWORD Default_Big:1;
			DWORD Granularity:1;
			DWORD BaseHi:8;
		} Bits;
	} HighWord;
} LDT_ENTRY,*PLDT_ENTRY,*LPLDT_ENTRY;
typedef struct _PROCESS_HEAP_ENTRY {
	PVOID lpData;
	DWORD cbData;
	BYTE cbOverhead;
	BYTE iRegionIndex;
	WORD wFlags;
	__extension__  union {
		struct {
			HANDLE hMem;
			DWORD dwReserved[3];
		} Block;
		struct {
			DWORD dwCommittedSize;
			DWORD dwUnCommittedSize;
			LPVOID lpFirstBlock;
			LPVOID lpLastBlock;
		} Region;
	}  ;
} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY;
typedef struct _OFSTRUCT {
	BYTE cBytes;
	BYTE fFixedDisk;
	WORD nErrCode;
	WORD Reserved1;
	WORD Reserved2;
	CHAR szPathName[128 ];
} OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT;
typedef struct _WIN_CERTIFICATE {
      DWORD dwLength;
      WORD wRevision;
      WORD wCertificateType;
      BYTE bCertificate[1];
} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;

typedef DWORD(__attribute__((__stdcall__))   *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
typedef void(__attribute__((__stdcall__))   *LPFIBER_START_ROUTINE)(PVOID);
typedef BOOL(__attribute__((__stdcall__))   *ENUMRESLANGPROC)(HMODULE,LPCTSTR,LPCTSTR,WORD,LONG);
typedef BOOL(__attribute__((__stdcall__))   *ENUMRESNAMEPROC)(HMODULE,LPCTSTR,LPTSTR,LONG);
typedef BOOL(__attribute__((__stdcall__))   *ENUMRESTYPEPROC)(HMODULE,LPTSTR,LONG);
typedef void(__attribute__((__stdcall__))   *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED);
typedef LONG(__attribute__((__stdcall__))   *PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS);
typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
typedef void(__attribute__((__stdcall__))   *PAPCFUNC)(DWORD);
typedef void(__attribute__((__stdcall__))   *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD);

 

int __attribute__((__stdcall__))   WinMain(HINSTANCE,HINSTANCE,LPSTR,int);



int __attribute__((__stdcall__))   wWinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
long __attribute__((__stdcall__))   _hread(HFILE,LPVOID,long);
long __attribute__((__stdcall__))   _hwrite(HFILE,LPCSTR,long);
HFILE __attribute__((__stdcall__))   _lclose(HFILE);
HFILE __attribute__((__stdcall__))   _lcreat(LPCSTR,int);
LONG __attribute__((__stdcall__))   _llseek(HFILE,LONG,int);
HFILE __attribute__((__stdcall__))   _lopen(LPCSTR,int);
UINT __attribute__((__stdcall__))   _lread(HFILE,LPVOID,UINT);
UINT __attribute__((__stdcall__))   _lwrite(HFILE,LPCSTR,UINT);

BOOL __attribute__((__stdcall__))   AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,PDWORD,PDWORD,PBOOL);
BOOL __attribute__((__stdcall__))   AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
BOOL __attribute__((__stdcall__))   AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
BOOL __attribute__((__stdcall__))   AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
BOOL __attribute__((__stdcall__))   AddAccessDeniedAce(PACL,DWORD,DWORD,PSID);




BOOL __attribute__((__stdcall__))   AddAce(PACL,DWORD,DWORD,PVOID,DWORD);
ATOM __attribute__((__stdcall__))   AddAtomA(LPCSTR);
ATOM __attribute__((__stdcall__))   AddAtomW(LPCWSTR);
BOOL __attribute__((__stdcall__))   AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
BOOL __attribute__((__stdcall__))   AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
BOOL __attribute__((__stdcall__))   AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
BOOL __attribute__((__stdcall__))   AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID*);
BOOL __attribute__((__stdcall__))   AllocateLocallyUniqueId(PLUID);
BOOL __attribute__((__stdcall__))   AreAllAccessesGranted(DWORD,DWORD);
BOOL __attribute__((__stdcall__))   AreAnyAccessesGranted(DWORD,DWORD);
BOOL __attribute__((__stdcall__))   AreFileApisANSI(void);
BOOL __attribute__((__stdcall__))   BackupEventLogA(HANDLE,LPCSTR);
BOOL __attribute__((__stdcall__))   BackupEventLogW(HANDLE,LPCWSTR);
BOOL __attribute__((__stdcall__))   BackupRead(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
BOOL __attribute__((__stdcall__))   BackupSeek(HANDLE,DWORD,DWORD,LPDWORD,LPDWORD,LPVOID*);
BOOL __attribute__((__stdcall__))   BackupWrite(HANDLE,LPBYTE,DWORD,LPDWORD,BOOL,BOOL,LPVOID*);
BOOL __attribute__((__stdcall__))   Beep(DWORD,DWORD);
HANDLE __attribute__((__stdcall__))   BeginUpdateResourceA(LPCSTR,BOOL);
HANDLE __attribute__((__stdcall__))   BeginUpdateResourceW(LPCWSTR,BOOL);
BOOL __attribute__((__stdcall__))   BuildCommDCBA(LPCSTR,LPDCB);
BOOL __attribute__((__stdcall__))   BuildCommDCBW(LPCWSTR,LPDCB);
BOOL __attribute__((__stdcall__))   BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
BOOL __attribute__((__stdcall__))   BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
BOOL __attribute__((__stdcall__))   CallNamedPipeA(LPCSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
BOOL __attribute__((__stdcall__))   CallNamedPipeW(LPCWSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
BOOL __attribute__((__stdcall__))   CancelIo(HANDLE);
BOOL __attribute__((__stdcall__))   CancelWaitableTimer(HANDLE);
BOOL __attribute__((__stdcall__))   ClearCommBreak(HANDLE);
BOOL __attribute__((__stdcall__))   ClearCommError(HANDLE,PDWORD,LPCOMSTAT);
BOOL __attribute__((__stdcall__))   ClearEventLogA(HANDLE,LPCSTR);
BOOL __attribute__((__stdcall__))   ClearEventLogW(HANDLE,LPCWSTR);
BOOL __attribute__((__stdcall__))   CloseEventLog(HANDLE);
BOOL __attribute__((__stdcall__))   CloseHandle(HANDLE);
BOOL __attribute__((__stdcall__))   CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG);
BOOL __attribute__((__stdcall__))   CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG);
LONG __attribute__((__stdcall__))   CompareFileTime(const  FILETIME*,const  FILETIME*);
BOOL __attribute__((__stdcall__))   ConnectNamedPipe(HANDLE,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   ContinueDebugEvent(DWORD,DWORD,DWORD);
PVOID __attribute__((__stdcall__))   ConvertThreadToFiber(PVOID);
BOOL __attribute__((__stdcall__))   CopyFileA(LPCSTR,LPCSTR,BOOL);
BOOL __attribute__((__stdcall__))   CopyFileW(LPCWSTR,LPCWSTR,BOOL);
BOOL __attribute__((__stdcall__))   CopyFileExA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
BOOL __attribute__((__stdcall__))   CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);








BOOL __attribute__((__stdcall__))   CopySid(DWORD,PSID,PSID);
BOOL __attribute__((__stdcall__))   CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES);
BOOL __attribute__((__stdcall__))   CreateDirectoryW(LPCWSTR,LPSECURITY_ATTRIBUTES);
BOOL __attribute__((__stdcall__))   CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
BOOL __attribute__((__stdcall__))   CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
HANDLE __attribute__((__stdcall__))   CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
LPVOID __attribute__((__stdcall__))   CreateFiber(DWORD,LPFIBER_START_ROUTINE,LPVOID);
HANDLE __attribute__((__stdcall__))   CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
HANDLE __attribute__((__stdcall__))   CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
HANDLE __attribute__((__stdcall__))   CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR);
HANDLE __attribute__((__stdcall__))   CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR);
HANDLE __attribute__((__stdcall__))   CreateHardLinkA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
HANDLE __attribute__((__stdcall__))   CreateHardLinkW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
HANDLE __attribute__((__stdcall__))   CreateIoCompletionPort(HANDLE,HANDLE,DWORD,DWORD);
HANDLE __attribute__((__stdcall__))   CreateMailslotA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
HANDLE __attribute__((__stdcall__))   CreateMailslotW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
HANDLE __attribute__((__stdcall__))   CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
HANDLE __attribute__((__stdcall__))   CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
HANDLE __attribute__((__stdcall__))   CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
BOOL __attribute__((__stdcall__))   CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD);
BOOL __attribute__((__stdcall__))   CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING);
BOOL __attribute__((__stdcall__))   CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
BOOL __attribute__((__stdcall__))   CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
BOOL __attribute__((__stdcall__))   CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
BOOL __attribute__((__stdcall__))   CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
HANDLE __attribute__((__stdcall__))   CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
HANDLE __attribute__((__stdcall__))   CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
HANDLE __attribute__((__stdcall__))   CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
DWORD __attribute__((__stdcall__))   CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
HANDLE __attribute__((__stdcall__))   CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,PVOID,DWORD,PDWORD);
HANDLE __attribute__((__stdcall__))   CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
BOOL __attribute__((__stdcall__))   DebugActiveProcess(DWORD);
void __attribute__((__stdcall__))   DebugBreak(void);
BOOL __attribute__((__stdcall__))   DefineDosDeviceA(DWORD,LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR);

BOOL __attribute__((__stdcall__))   DeleteAce(PACL,DWORD);
ATOM __attribute__((__stdcall__))   DeleteAtom(ATOM);
void __attribute__((__stdcall__))   DeleteCriticalSection(PCRITICAL_SECTION);
void __attribute__((__stdcall__))   DeleteFiber(PVOID);
BOOL __attribute__((__stdcall__))   DeleteFileA(LPCSTR);
BOOL __attribute__((__stdcall__))   DeleteFileW(LPCWSTR);
BOOL __attribute__((__stdcall__))   DeregisterEventSource(HANDLE);
BOOL __attribute__((__stdcall__))   DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*);
BOOL __attribute__((__stdcall__))   DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED);
BOOL __attribute__((__stdcall__))   DisableThreadLibraryCalls(HMODULE);
BOOL __attribute__((__stdcall__))   DisconnectNamedPipe(HANDLE);
BOOL __attribute__((__stdcall__))   DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
BOOL __attribute__((__stdcall__))   DuplicateHandle(HANDLE,HANDLE,HANDLE,PHANDLE,DWORD,BOOL,DWORD);
BOOL __attribute__((__stdcall__))   DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE);
BOOL __attribute__((__stdcall__))   DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
BOOL __attribute__((__stdcall__))   EncryptFileA(LPCSTR);
BOOL __attribute__((__stdcall__))   EncryptFileW(LPCWSTR);
BOOL __attribute__((__stdcall__))   EndUpdateResourceA(HANDLE,BOOL);
BOOL __attribute__((__stdcall__))   EndUpdateResourceW(HANDLE,BOOL);
void __attribute__((__stdcall__))   EnterCriticalSection(LPCRITICAL_SECTION);
BOOL __attribute__((__stdcall__))   EnumResourceLanguagesA(HINSTANCE,LPCSTR,LPCSTR,ENUMRESLANGPROC,LONG);
BOOL __attribute__((__stdcall__))   EnumResourceLanguagesW(HINSTANCE,LPCWSTR,LPCWSTR,ENUMRESLANGPROC,LONG);
BOOL __attribute__((__stdcall__))   EnumResourceNamesA(HINSTANCE,LPCSTR,ENUMRESNAMEPROC,LONG);
BOOL __attribute__((__stdcall__))   EnumResourceNamesW(HINSTANCE,LPCWSTR,ENUMRESNAMEPROC,LONG);
BOOL __attribute__((__stdcall__))   EnumResourceTypesA(HINSTANCE,ENUMRESTYPEPROC,LONG);
BOOL __attribute__((__stdcall__))   EnumResourceTypesW(HINSTANCE,ENUMRESTYPEPROC,LONG);
BOOL __attribute__((__stdcall__))   EqualPrefixSid(PSID,PSID);
BOOL __attribute__((__stdcall__))   EqualSid(PSID,PSID);
DWORD __attribute__((__stdcall__))   EraseTape(HANDLE,DWORD,BOOL);
BOOL __attribute__((__stdcall__))   EscapeCommFunction(HANDLE,DWORD);
__attribute__(( noreturn ))   void __attribute__((__stdcall__))   ExitProcess(UINT);
__attribute__(( noreturn ))   void __attribute__((__stdcall__))   ExitThread(DWORD);
DWORD __attribute__((__stdcall__))   ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD);
void __attribute__((__stdcall__))   FatalAppExitA(UINT,LPCSTR);
void __attribute__((__stdcall__))   FatalAppExitW(UINT,LPCWSTR);
void __attribute__((__stdcall__))   FatalExit(int);
BOOL __attribute__((__stdcall__))   FileEncryptionStatusA(LPCSTR,LPDWORD);
BOOL __attribute__((__stdcall__))   FileEncryptionStatusW(LPCWSTR,LPDWORD);
BOOL __attribute__((__stdcall__))   FileTimeToDosDateTime(const  FILETIME *,LPWORD,LPWORD);
BOOL __attribute__((__stdcall__))   FileTimeToLocalFileTime(const  FILETIME *,LPFILETIME);
BOOL __attribute__((__stdcall__))   FileTimeToSystemTime(const  FILETIME *,LPSYSTEMTIME);
ATOM __attribute__((__stdcall__))   FindAtomA(LPCSTR);
ATOM __attribute__((__stdcall__))   FindAtomW(LPCWSTR);
BOOL __attribute__((__stdcall__))   FindClose(HANDLE);
BOOL __attribute__((__stdcall__))   FindCloseChangeNotification(HANDLE);
HANDLE __attribute__((__stdcall__))   FindFirstChangeNotificationA(LPCSTR,BOOL,DWORD);
HANDLE __attribute__((__stdcall__))   FindFirstChangeNotificationW(LPCWSTR,BOOL,DWORD);
HANDLE __attribute__((__stdcall__))   FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA);
HANDLE __attribute__((__stdcall__))   FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW);
HANDLE __attribute__((__stdcall__))   FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
HANDLE __attribute__((__stdcall__))   FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   FindFirstFreeAce(PACL,PVOID*);
BOOL __attribute__((__stdcall__))   FindNextChangeNotification(HANDLE);
BOOL __attribute__((__stdcall__))   FindNextFileA(HANDLE,LPWIN32_FIND_DATAA);
BOOL __attribute__((__stdcall__))   FindNextFileW(HANDLE,LPWIN32_FIND_DATAW);
HRSRC __attribute__((__stdcall__))   FindResourceA(HMODULE,LPCSTR,LPCSTR);
HRSRC __attribute__((__stdcall__))   FindResourceW(HINSTANCE,LPCWSTR,LPCWSTR);
HRSRC __attribute__((__stdcall__))   FindResourceExA(HINSTANCE,LPCSTR,LPCSTR,WORD);
HRSRC __attribute__((__stdcall__))   FindResourceExW(HINSTANCE,LPCWSTR,LPCWSTR,WORD);
BOOL __attribute__((__stdcall__))   FlushFileBuffers(HANDLE);
BOOL __attribute__((__stdcall__))   FlushInstructionCache(HANDLE,PCVOID,DWORD);
BOOL __attribute__((__stdcall__))   FlushViewOfFile(PCVOID,DWORD);
DWORD __attribute__((__stdcall__))   FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*);
DWORD __attribute__((__stdcall__))   FormatMessageW(DWORD,PCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*);
BOOL __attribute__((__stdcall__))   FreeEnvironmentStringsA(LPSTR);
BOOL __attribute__((__stdcall__))   FreeEnvironmentStringsW(LPWSTR);
BOOL __attribute__((__stdcall__))   FreeLibrary(HMODULE);
__attribute__(( noreturn ))   void __attribute__((__stdcall__))   FreeLibraryAndExitThread(HMODULE,DWORD);



BOOL __attribute__((__stdcall__))   FreeResource(HGLOBAL);

PVOID __attribute__((__stdcall__))   FreeSid(PSID);
BOOL __attribute__((__stdcall__))   GetAce(PACL,DWORD,LPVOID*);
BOOL __attribute__((__stdcall__))   GetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
UINT __attribute__((__stdcall__))   GetAtomNameA(ATOM,LPSTR,int);
UINT __attribute__((__stdcall__))   GetAtomNameW(ATOM,LPWSTR,int);
BOOL __attribute__((__stdcall__))   GetBinaryTypeA(LPCSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetBinaryTypeW(LPCWSTR,PDWORD);
LPSTR __attribute__((__stdcall__))   GetCommandLineA(void );
LPWSTR __attribute__((__stdcall__))   GetCommandLineW(void );
BOOL __attribute__((__stdcall__))   GetCommConfig(HANDLE,LPCOMMCONFIG,PDWORD);
BOOL __attribute__((__stdcall__))   GetCommMask(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetCommModemStatus(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetCommProperties(HANDLE,LPCOMMPROP);
BOOL __attribute__((__stdcall__))   GetCommState(HANDLE,LPDCB);
BOOL __attribute__((__stdcall__))   GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
DWORD __attribute__((__stdcall__))   GetCompressedFileSizeA(LPCSTR,PDWORD);
DWORD __attribute__((__stdcall__))   GetCompressedFileSizeW(LPCWSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetComputerNameA(LPSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetComputerNameW(LPWSTR,PDWORD);
DWORD __attribute__((__stdcall__))   GetCurrentDirectoryA(DWORD,LPSTR);
DWORD __attribute__((__stdcall__))   GetCurrentDirectoryW(DWORD,LPWSTR);
BOOL __attribute__((__stdcall__))   GetCurrentHwProfileA(LPHW_PROFILE_INFOA);
BOOL __attribute__((__stdcall__))   GetCurrentHwProfileW(LPHW_PROFILE_INFOW);
HANDLE __attribute__((__stdcall__))   GetCurrentProcess(void);
DWORD __attribute__((__stdcall__))   GetCurrentProcessId(void);
HANDLE __attribute__((__stdcall__))   GetCurrentThread(void);
DWORD __attribute__((__stdcall__))   GetCurrentThreadId(void);

BOOL __attribute__((__stdcall__))   GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,PDWORD);
BOOL __attribute__((__stdcall__))   GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,PDWORD);
BOOL __attribute__((__stdcall__))   GetDiskFreeSpaceA(LPCSTR,PDWORD,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetDiskFreeSpaceW(LPCWSTR,PDWORD,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetDiskFreeSpaceExA(LPCSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
BOOL __attribute__((__stdcall__))   GetDiskFreeSpaceExW(LPCWSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
UINT __attribute__((__stdcall__))   GetDriveTypeA(LPCSTR);
UINT __attribute__((__stdcall__))   GetDriveTypeW(LPCWSTR);
LPSTR __attribute__((__stdcall__))   GetEnvironmentStrings(void);
LPSTR __attribute__((__stdcall__))   GetEnvironmentStringsA(void);
LPWSTR __attribute__((__stdcall__))   GetEnvironmentStringsW(void);
DWORD __attribute__((__stdcall__))   GetEnvironmentVariableA(LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetEnvironmentVariableW(LPCWSTR,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   GetExitCodeProcess(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetExitCodeThread(HANDLE,PDWORD);
DWORD __attribute__((__stdcall__))   GetFileAttributesA(LPCSTR);
DWORD __attribute__((__stdcall__))   GetFileAttributesW(LPCWSTR);
BOOL __attribute__((__stdcall__))   GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID);
BOOL __attribute__((__stdcall__))   GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,PVOID);
BOOL __attribute__((__stdcall__))   GetFileInformationByHandle(HANDLE,LPBY_HANDLE_FILE_INFORMATION);
BOOL __attribute__((__stdcall__))   GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetFileSize(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetFileSizeEx(HANDLE,PLARGE_INTEGER);
BOOL __attribute__((__stdcall__))   GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME);
DWORD __attribute__((__stdcall__))   GetFileType(HANDLE);

DWORD __attribute__((__stdcall__))   GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*);
DWORD __attribute__((__stdcall__))   GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
BOOL __attribute__((__stdcall__))   GetHandleInformation(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetLengthSid(PSID);
void __attribute__((__stdcall__))   GetLocalTime(LPSYSTEMTIME);
DWORD __attribute__((__stdcall__))   GetLogicalDrives(void);
DWORD __attribute__((__stdcall__))   GetLogicalDriveStringsA(DWORD,LPSTR);
DWORD __attribute__((__stdcall__))   GetLogicalDriveStringsW(DWORD,LPWSTR);
DWORD __attribute__((__stdcall__))   GetLongPathNameA(LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetLongPathNameW(LPCWSTR,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   GetMailslotInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetModuleFileNameA(HINSTANCE,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetModuleFileNameW(HINSTANCE,LPWSTR,DWORD);
HMODULE __attribute__((__stdcall__))   GetModuleHandleA(LPCSTR);
HMODULE __attribute__((__stdcall__))   GetModuleHandleW(LPCWSTR);
BOOL __attribute__((__stdcall__))   GetNamedPipeHandleStateA(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
BOOL __attribute__((__stdcall__))   GetNamedPipeHandleStateW(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetNumberOfEventLogRecords(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetOldestEventLogRecord(HANDLE,PDWORD);
BOOL __attribute__((__stdcall__))   GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL);
DWORD __attribute__((__stdcall__))   GetPriorityClass(HANDLE);
BOOL __attribute__((__stdcall__))   GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
UINT __attribute__((__stdcall__))   GetPrivateProfileIntA(LPCSTR,LPCSTR,INT,LPCSTR);
UINT __attribute__((__stdcall__))   GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR);
DWORD __attribute__((__stdcall__))   GetPrivateProfileSectionA(LPCSTR,LPSTR,DWORD,LPCSTR);
DWORD __attribute__((__stdcall__))   GetPrivateProfileSectionW(LPCWSTR,LPWSTR,DWORD,LPCWSTR);
DWORD __attribute__((__stdcall__))   GetPrivateProfileSectionNamesA(LPSTR,DWORD,LPCSTR);
DWORD __attribute__((__stdcall__))   GetPrivateProfileSectionNamesW(LPWSTR,DWORD,LPCWSTR);
DWORD __attribute__((__stdcall__))   GetPrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD,LPCSTR);
DWORD __attribute__((__stdcall__))   GetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD,LPCWSTR);
BOOL __attribute__((__stdcall__))   GetPrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
BOOL __attribute__((__stdcall__))   GetPrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
FARPROC __attribute__((__stdcall__))   GetProcAddress(HINSTANCE,LPCSTR);
BOOL __attribute__((__stdcall__))   GetProcessAffinityMask(HANDLE,PDWORD,PDWORD);
HANDLE __attribute__((__stdcall__))   GetProcessHeap(void );
DWORD __attribute__((__stdcall__))   GetProcessHeaps(DWORD,PHANDLE);
BOOL __attribute__((__stdcall__))   GetProcessPriorityBoost(HANDLE,PBOOL);
BOOL __attribute__((__stdcall__))   GetProcessShutdownParameters(PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetProcessTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
DWORD __attribute__((__stdcall__))   GetProcessVersion(DWORD);
HWINSTA __attribute__((__stdcall__))   GetProcessWindowStation(void);
BOOL __attribute__((__stdcall__))   GetProcessWorkingSetSize(HANDLE,PDWORD,PDWORD);
UINT __attribute__((__stdcall__))   GetProfileIntA(LPCSTR,LPCSTR,INT);
UINT __attribute__((__stdcall__))   GetProfileIntW(LPCWSTR,LPCWSTR,INT);
DWORD __attribute__((__stdcall__))   GetProfileSectionA(LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetProfileSectionW(LPCWSTR,LPWSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   GetQueuedCompletionStatus(HANDLE,PDWORD,PDWORD,LPOVERLAPPED*,DWORD);
BOOL __attribute__((__stdcall__))   GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,PDWORD);
BOOL __attribute__((__stdcall__))   GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
BOOL __attribute__((__stdcall__))   GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
DWORD __attribute__((__stdcall__))   GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR);
BOOL __attribute__((__stdcall__))   GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
BOOL __attribute__((__stdcall__))   GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
DWORD __attribute__((__stdcall__))   GetShortPathNameA(LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   GetShortPathNameW(LPCWSTR,LPWSTR,DWORD);
PSID_IDENTIFIER_AUTHORITY __attribute__((__stdcall__))   GetSidIdentifierAuthority(PSID);
DWORD __attribute__((__stdcall__))   GetSidLengthRequired(UCHAR);
PDWORD __attribute__((__stdcall__))   GetSidSubAuthority(PSID,DWORD);
PUCHAR __attribute__((__stdcall__))   GetSidSubAuthorityCount(PSID);
void  __attribute__((__stdcall__))   GetStartupInfoA(LPSTARTUPINFOA);
void  __attribute__((__stdcall__))   GetStartupInfoW(LPSTARTUPINFOW);
HANDLE __attribute__((__stdcall__))   GetStdHandle(DWORD);
UINT __attribute__((__stdcall__))   GetSystemDirectoryA(LPSTR,UINT);
UINT __attribute__((__stdcall__))   GetSystemDirectoryW(LPWSTR,UINT);
void  __attribute__((__stdcall__))   GetSystemInfo(LPSYSTEM_INFO);
BOOL __attribute__((__stdcall__))   GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
void  __attribute__((__stdcall__))   GetSystemTime(LPSYSTEMTIME);
BOOL __attribute__((__stdcall__))   GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL);
void __attribute__((__stdcall__))   GetSystemTimeAsFileTime(LPFILETIME);
DWORD __attribute__((__stdcall__))   GetTapeParameters(HANDLE,DWORD,PDWORD,PVOID);
DWORD __attribute__((__stdcall__))   GetTapePosition(HANDLE,DWORD,PDWORD,PDWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetTapeStatus(HANDLE);
UINT __attribute__((__stdcall__))   GetTempFileNameA(LPCSTR,LPCSTR,UINT,LPSTR);
UINT __attribute__((__stdcall__))   GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR);
DWORD __attribute__((__stdcall__))   GetTempPathA(DWORD,LPSTR);
DWORD __attribute__((__stdcall__))   GetTempPathW(DWORD,LPWSTR);
BOOL __attribute__((__stdcall__))   GetThreadContext(HANDLE,LPCONTEXT);
int __attribute__((__stdcall__))   GetThreadPriority(HANDLE);
BOOL __attribute__((__stdcall__))   GetThreadPriorityBoost(HANDLE,PBOOL);
BOOL __attribute__((__stdcall__))   GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY);
BOOL __attribute__((__stdcall__))   GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
DWORD __attribute__((__stdcall__))   GetTickCount(void );
DWORD __attribute__((__stdcall__))   GetTimeZoneInformation(LPTIME_ZONE_INFORMATION);
BOOL __attribute__((__stdcall__))   GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetUserNameA (LPSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetUserNameW(LPWSTR,PDWORD);
DWORD __attribute__((__stdcall__))   GetVersion(void);
BOOL __attribute__((__stdcall__))   GetVersionExA(LPOSVERSIONINFOA);
BOOL __attribute__((__stdcall__))   GetVersionExW(LPOSVERSIONINFOW);
BOOL __attribute__((__stdcall__))   GetVolumeInformationA(LPCSTR,LPSTR,DWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
BOOL __attribute__((__stdcall__))   GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
UINT __attribute__((__stdcall__))   GetWindowsDirectoryA(LPSTR,UINT);
UINT __attribute__((__stdcall__))   GetWindowsDirectoryW(LPWSTR,UINT);
DWORD __attribute__((__stdcall__))   GetWindowThreadProcessId(HWND,PDWORD);
ATOM __attribute__((__stdcall__))   GlobalAddAtomA(LPCSTR);
ATOM __attribute__((__stdcall__))   GlobalAddAtomW( LPCWSTR);
HGLOBAL __attribute__((__stdcall__))   GlobalAlloc(UINT,DWORD);
UINT __attribute__((__stdcall__))   GlobalCompact(DWORD);
ATOM __attribute__((__stdcall__))   GlobalDeleteAtom(ATOM);
HGLOBAL GlobalDiscard(HGLOBAL);
ATOM __attribute__((__stdcall__))   GlobalFindAtomA(LPCSTR);
ATOM __attribute__((__stdcall__))   GlobalFindAtomW(LPCWSTR);
void  __attribute__((__stdcall__))   GlobalFix(HGLOBAL);
UINT __attribute__((__stdcall__))   GlobalFlags(HGLOBAL);
HGLOBAL __attribute__((__stdcall__))   GlobalFree(HGLOBAL);
UINT __attribute__((__stdcall__))   GlobalGetAtomNameA(ATOM,LPSTR,int);
UINT __attribute__((__stdcall__))   GlobalGetAtomNameW(ATOM,LPWSTR,int);
HGLOBAL __attribute__((__stdcall__))   GlobalHandle(PCVOID);
LPVOID __attribute__((__stdcall__))   GlobalLock(HGLOBAL);
void  __attribute__((__stdcall__))   GlobalMemoryStatus(LPMEMORYSTATUS);
HGLOBAL __attribute__((__stdcall__))   GlobalReAlloc(HGLOBAL,DWORD,UINT);
DWORD __attribute__((__stdcall__))   GlobalSize(HGLOBAL);
void  __attribute__((__stdcall__))   GlobalUnfix(HGLOBAL);
BOOL __attribute__((__stdcall__))   GlobalUnlock(HGLOBAL);
BOOL __attribute__((__stdcall__))   GlobalUnWire(HGLOBAL);
PVOID __attribute__((__stdcall__))   GlobalWire(HGLOBAL);

PVOID __attribute__((__stdcall__))   HeapAlloc(HANDLE,DWORD,DWORD);
UINT __attribute__((__stdcall__))   HeapCompact(HANDLE,DWORD);
HANDLE __attribute__((__stdcall__))   HeapCreate(DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   HeapDestroy(HANDLE);
BOOL __attribute__((__stdcall__))   HeapFree(HANDLE,DWORD,PVOID);
BOOL __attribute__((__stdcall__))   HeapLock(HANDLE);
PVOID __attribute__((__stdcall__))   HeapReAlloc(HANDLE,DWORD,PVOID,DWORD);
DWORD __attribute__((__stdcall__))   HeapSize(HANDLE,DWORD,PCVOID);
BOOL __attribute__((__stdcall__))   HeapUnlock(HANDLE);
BOOL __attribute__((__stdcall__))   HeapValidate(HANDLE,DWORD,PCVOID);
BOOL __attribute__((__stdcall__))   HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);
BOOL __attribute__((__stdcall__))   ImpersonateLoggedOnUser(HANDLE);
BOOL __attribute__((__stdcall__))   ImpersonateNamedPipeClient(HANDLE);
BOOL __attribute__((__stdcall__))   ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
BOOL __attribute__((__stdcall__))   InitAtomTable(DWORD);
BOOL __attribute__((__stdcall__))   InitializeAcl(PACL,DWORD,DWORD);
void  __attribute__((__stdcall__))   InitializeCriticalSection(LPCRITICAL_SECTION);




BOOL __attribute__((__stdcall__))   InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
BOOL __attribute__((__stdcall__))   InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);


LONG __attribute__((__stdcall__))   InterlockedCompareExchange(LPLONG,LONG,LONG);
 


LONG __attribute__((__stdcall__))   InterlockedDecrement(LPLONG);
LONG __attribute__((__stdcall__))   InterlockedExchange(LPLONG,LONG);
 


LONG __attribute__((__stdcall__))   InterlockedExchangeAdd(LPLONG,LONG);
LONG __attribute__((__stdcall__))   InterlockedIncrement(LPLONG);

BOOL __attribute__((__stdcall__))   IsBadCodePtr(FARPROC);
BOOL __attribute__((__stdcall__))   IsBadHugeReadPtr(PCVOID,UINT);
BOOL __attribute__((__stdcall__))   IsBadHugeWritePtr(PVOID,UINT);
BOOL __attribute__((__stdcall__))   IsBadReadPtr(PCVOID,UINT);
BOOL __attribute__((__stdcall__))   IsBadStringPtrA(LPCSTR,UINT);
BOOL __attribute__((__stdcall__))   IsBadStringPtrW(LPCWSTR,UINT);
BOOL __attribute__((__stdcall__))   IsBadWritePtr(PVOID,UINT);
BOOL __attribute__((__stdcall__))   IsDebuggerPresent(void);
BOOL __attribute__((__stdcall__))   IsProcessorFeaturePresent(DWORD);
BOOL __attribute__((__stdcall__))   IsTextUnicode(PCVOID,int,LPINT);
BOOL __attribute__((__stdcall__))   IsValidAcl(PACL);
BOOL __attribute__((__stdcall__))   IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
BOOL __attribute__((__stdcall__))   IsValidSid(PSID);
void __attribute__((__stdcall__))   LeaveCriticalSection(LPCRITICAL_SECTION);

HINSTANCE __attribute__((__stdcall__))   LoadLibraryA(LPCSTR);
HINSTANCE __attribute__((__stdcall__))   LoadLibraryExA(LPCSTR,HANDLE,DWORD);
HINSTANCE __attribute__((__stdcall__))   LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
HINSTANCE __attribute__((__stdcall__))   LoadLibraryW(LPCWSTR);
DWORD __attribute__((__stdcall__))   LoadModule(LPCSTR,PVOID);
HGLOBAL __attribute__((__stdcall__))   LoadResource(HINSTANCE,HRSRC);
HLOCAL __attribute__((__stdcall__))   LocalAlloc(UINT,UINT);
UINT __attribute__((__stdcall__))   LocalCompact(UINT);
HLOCAL LocalDiscard(HLOCAL);
BOOL __attribute__((__stdcall__))   LocalFileTimeToFileTime(const  FILETIME *,LPFILETIME);
UINT __attribute__((__stdcall__))   LocalFlags(HLOCAL);
HLOCAL __attribute__((__stdcall__))   LocalFree(HLOCAL);
HLOCAL __attribute__((__stdcall__))   LocalHandle(LPCVOID);
PVOID __attribute__((__stdcall__))   LocalLock(HLOCAL);
HLOCAL __attribute__((__stdcall__))   LocalReAlloc(HLOCAL,UINT,UINT);
UINT __attribute__((__stdcall__))   LocalShrink(HLOCAL,UINT);
UINT __attribute__((__stdcall__))   LocalSize(HLOCAL);
BOOL __attribute__((__stdcall__))   LocalUnlock(HLOCAL);
BOOL __attribute__((__stdcall__))   LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   LockFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,LPOVERLAPPED);
PVOID __attribute__((__stdcall__))   LockResource(HGLOBAL);

BOOL __attribute__((__stdcall__))   LogonUserA(LPSTR,LPSTR,LPSTR,DWORD,DWORD,PHANDLE);
BOOL __attribute__((__stdcall__))   LogonUserW(LPWSTR,LPWSTR,LPWSTR,DWORD,DWORD,PHANDLE);
BOOL __attribute__((__stdcall__))   LookupAccountNameA(LPCSTR,LPCSTR,PSID,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
BOOL __attribute__((__stdcall__))   LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
BOOL __attribute__((__stdcall__))   LookupAccountSidA(LPCSTR,PSID,LPSTR,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
BOOL __attribute__((__stdcall__))   LookupAccountSidW(LPCWSTR,PSID,LPWSTR,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
BOOL __attribute__((__stdcall__))   LookupPrivilegeDisplayNameA(LPCSTR,LPCSTR,LPSTR,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   LookupPrivilegeDisplayNameW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   LookupPrivilegeNameA(LPCSTR,PLUID,LPSTR,PDWORD);
BOOL __attribute__((__stdcall__))   LookupPrivilegeNameW(LPCWSTR,PLUID,LPWSTR,PDWORD);
BOOL __attribute__((__stdcall__))   LookupPrivilegeValueA(LPCSTR,LPCSTR,PLUID);
BOOL __attribute__((__stdcall__))   LookupPrivilegeValueW(LPCWSTR,LPCWSTR,PLUID);
LPSTR __attribute__((__stdcall__))   lstrcatA(LPSTR,LPCSTR);
LPWSTR __attribute__((__stdcall__))   lstrcatW(LPWSTR,LPCWSTR);
int __attribute__((__stdcall__))   lstrcmpA(LPCSTR,LPCSTR);
int __attribute__((__stdcall__))   lstrcmpiA(LPCSTR,LPCSTR);
int __attribute__((__stdcall__))   lstrcmpiW( LPCWSTR,LPCWSTR);
int __attribute__((__stdcall__))   lstrcmpW(LPCWSTR,LPCWSTR);
LPSTR __attribute__((__stdcall__))   lstrcpyA(LPSTR,LPCSTR);
LPSTR __attribute__((__stdcall__))   lstrcpynA(LPSTR,LPCSTR,int);
LPWSTR __attribute__((__stdcall__))   lstrcpynW(LPWSTR,LPCWSTR,int);
LPWSTR __attribute__((__stdcall__))   lstrcpyW(LPWSTR,LPCWSTR);
int __attribute__((__stdcall__))   lstrlenA(LPCSTR);
int __attribute__((__stdcall__))   lstrlenW(LPCWSTR);
BOOL __attribute__((__stdcall__))   MakeAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);

BOOL __attribute__((__stdcall__))   MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD);
void  __attribute__((__stdcall__))   MapGenericMask(PDWORD,PGENERIC_MAPPING);
PVOID __attribute__((__stdcall__))   MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
PVOID __attribute__((__stdcall__))   MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,PVOID);
BOOL __attribute__((__stdcall__))   MoveFileA(LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   MoveFileExA(LPCSTR,LPCSTR,DWORD);
BOOL __attribute__((__stdcall__))   MoveFileExW(LPCWSTR,LPCWSTR,DWORD);
BOOL __attribute__((__stdcall__))   MoveFileW(LPCWSTR,LPCWSTR);
int __attribute__((__stdcall__))   MulDiv(int,int,int);
BOOL __attribute__((__stdcall__))   NotifyChangeEventLog(HANDLE,HANDLE);
BOOL __attribute__((__stdcall__))   ObjectCloseAuditAlarmA(LPCSTR,PVOID,BOOL);
BOOL __attribute__((__stdcall__))   ObjectCloseAuditAlarmW(LPCWSTR,PVOID,BOOL);
BOOL __attribute__((__stdcall__))   ObjectDeleteAuditAlarmA(LPCSTR,PVOID,BOOL);
BOOL __attribute__((__stdcall__))   ObjectDeleteAuditAlarmW(LPCWSTR,PVOID,BOOL);
BOOL __attribute__((__stdcall__))   ObjectOpenAuditAlarmA(LPCSTR,PVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
BOOL __attribute__((__stdcall__))   ObjectOpenAuditAlarmW(LPCWSTR,PVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
BOOL __attribute__((__stdcall__))   ObjectPrivilegeAuditAlarmA(LPCSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
BOOL __attribute__((__stdcall__))   ObjectPrivilegeAuditAlarmW(LPCWSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
HANDLE __attribute__((__stdcall__))   OpenBackupEventLogA(LPCSTR,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenBackupEventLogW(LPCWSTR,LPCWSTR);
HANDLE __attribute__((__stdcall__))   OpenEventA(DWORD,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenEventLogA (LPCSTR,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenEventLogW(LPCWSTR,LPCWSTR);
HANDLE __attribute__((__stdcall__))   OpenEventW(DWORD,BOOL,LPCWSTR);
HFILE __attribute__((__stdcall__))   OpenFile(LPCSTR,LPOFSTRUCT,UINT);
HANDLE __attribute__((__stdcall__))   OpenFileMappingA(DWORD,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenFileMappingW(DWORD,BOOL,LPCWSTR);
HANDLE __attribute__((__stdcall__))   OpenMutexA(DWORD,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenMutexW(DWORD,BOOL,LPCWSTR);
HANDLE __attribute__((__stdcall__))   OpenProcess(DWORD,BOOL,DWORD);
BOOL __attribute__((__stdcall__))   OpenProcessToken(HANDLE,DWORD,PHANDLE);
HANDLE __attribute__((__stdcall__))   OpenSemaphoreA(DWORD,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenSemaphoreW(DWORD,BOOL,LPCWSTR);



BOOL __attribute__((__stdcall__))   OpenThreadToken(HANDLE,DWORD,BOOL,PHANDLE);
HANDLE __attribute__((__stdcall__))   OpenWaitableTimerA(DWORD,BOOL,LPCSTR);
HANDLE __attribute__((__stdcall__))   OpenWaitableTimerW(DWORD,BOOL,LPCWSTR);
void __attribute__((__stdcall__))   OutputDebugStringA(LPCSTR);
void __attribute__((__stdcall__))   OutputDebugStringW(LPCWSTR);
BOOL __attribute__((__stdcall__))   PeekNamedPipe(HANDLE,PVOID,DWORD,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   PostQueuedCompletionStatus(HANDLE,DWORD,DWORD,LPOVERLAPPED);
DWORD __attribute__((__stdcall__))   PrepareTape(HANDLE,DWORD,BOOL);
BOOL __attribute__((__stdcall__))   PrivilegeCheck (HANDLE,PPRIVILEGE_SET,PBOOL);
BOOL __attribute__((__stdcall__))   PrivilegedServiceAuditAlarmA(LPCSTR,LPCSTR,HANDLE,PPRIVILEGE_SET,BOOL);
BOOL __attribute__((__stdcall__))   PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDLE,PPRIVILEGE_SET,BOOL);
BOOL __attribute__((__stdcall__))   PulseEvent(HANDLE);
BOOL __attribute__((__stdcall__))   PurgeComm(HANDLE,DWORD);
DWORD __attribute__((__stdcall__))   QueryDosDeviceA(LPCSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   QueryDosDeviceW(LPCWSTR,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   QueryPerformanceCounter(PLARGE_INTEGER);
BOOL __attribute__((__stdcall__))   QueryPerformanceFrequency(PLARGE_INTEGER);
DWORD __attribute__((__stdcall__))   QueueUserAPC(PAPCFUNC,HANDLE,DWORD);
void __attribute__((__stdcall__))   RaiseException(DWORD,DWORD,DWORD,const DWORD*);
BOOL __attribute__((__stdcall__))   ReadDirectoryChangesW(HANDLE,PVOID,DWORD,BOOL,DWORD,PDWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
BOOL __attribute__((__stdcall__))   ReadEventLogA(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
BOOL __attribute__((__stdcall__))   ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
BOOL __attribute__((__stdcall__))   ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
BOOL __attribute__((__stdcall__))   ReadFileScatter(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   ReadProcessMemory(HANDLE,PCVOID,PVOID,DWORD,PDWORD);
HANDLE __attribute__((__stdcall__))   RegisterEventSourceA (LPCSTR,LPCSTR);
HANDLE __attribute__((__stdcall__))   RegisterEventSourceW(LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   ReleaseMutex(HANDLE);
BOOL __attribute__((__stdcall__))   ReleaseSemaphore(HANDLE,LONG,LPLONG);
BOOL __attribute__((__stdcall__))   RemoveDirectoryA(LPCSTR);
BOOL __attribute__((__stdcall__))   RemoveDirectoryW(LPCWSTR);
BOOL __attribute__((__stdcall__))   ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR*,PVOID);
BOOL __attribute__((__stdcall__))   ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR*,PVOID);
BOOL __attribute__((__stdcall__))   ResetEvent(HANDLE);
DWORD __attribute__((__stdcall__))   ResumeThread(HANDLE);
BOOL __attribute__((__stdcall__))   RevertToSelf(void);
DWORD __attribute__((__stdcall__))   SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
DWORD __attribute__((__stdcall__))   SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
BOOL __attribute__((__stdcall__))   SetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
BOOL __attribute__((__stdcall__))   SetCommBreak(HANDLE);
BOOL __attribute__((__stdcall__))   SetCommConfig(HANDLE,LPCOMMCONFIG,DWORD);
BOOL __attribute__((__stdcall__))   SetCommMask(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetCommState(HANDLE,LPDCB);
BOOL __attribute__((__stdcall__))   SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
BOOL __attribute__((__stdcall__))   SetComputerNameA(LPCSTR);
BOOL __attribute__((__stdcall__))   SetComputerNameW(LPCWSTR);
BOOL __attribute__((__stdcall__))   SetCurrentDirectoryA(LPCSTR);
BOOL __attribute__((__stdcall__))   SetCurrentDirectoryW(LPCWSTR);
BOOL __attribute__((__stdcall__))   SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD);
BOOL __attribute__((__stdcall__))   SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD);
BOOL __attribute__((__stdcall__))   SetEndOfFile(HANDLE);
BOOL __attribute__((__stdcall__))   SetEnvironmentVariableA(LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
UINT __attribute__((__stdcall__))   SetErrorMode(UINT);
BOOL __attribute__((__stdcall__))   SetEvent(HANDLE);
void  __attribute__((__stdcall__))   SetFileApisToANSI(void);
void  __attribute__((__stdcall__))   SetFileApisToOEM(void);
BOOL __attribute__((__stdcall__))   SetFileAttributesA(LPCSTR,DWORD);
BOOL __attribute__((__stdcall__))   SetFileAttributesW(LPCWSTR,DWORD);
DWORD __attribute__((__stdcall__))   SetFilePointer(HANDLE,LONG,PLONG,DWORD);
BOOL __attribute__((__stdcall__))   SetFilePointerEx(HANDLE,LARGE_INTEGER,PLARGE_INTEGER,DWORD);
BOOL __attribute__((__stdcall__))   SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
BOOL __attribute__((__stdcall__))   SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
BOOL __attribute__((__stdcall__))   SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*);
UINT __attribute__((__stdcall__))   SetHandleCount(UINT);
BOOL __attribute__((__stdcall__))   SetHandleInformation(HANDLE,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   SetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
void __attribute__((__stdcall__))   SetLastError(DWORD);
void __attribute__((__stdcall__))   SetLastErrorEx(DWORD,DWORD);
BOOL __attribute__((__stdcall__))   SetLocalTime(const SYSTEMTIME*);
BOOL __attribute__((__stdcall__))   SetMailslotInfo(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetNamedPipeHandleState(HANDLE,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   SetPriorityClass(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetPrivateObjectSecurity(SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR *,PGENERIC_MAPPING,HANDLE);
BOOL __attribute__((__stdcall__))   SetProcessAffinityMask(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetProcessPriorityBoost(HANDLE,BOOL);
BOOL __attribute__((__stdcall__))   SetProcessShutdownParameters(DWORD,DWORD);
BOOL __attribute__((__stdcall__))   SetProcessWorkingSetSize(HANDLE,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
BOOL __attribute__((__stdcall__))   SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
BOOL __attribute__((__stdcall__))   SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL);
BOOL __attribute__((__stdcall__))   SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL);
BOOL __attribute__((__stdcall__))   SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
BOOL __attribute__((__stdcall__))   SetStdHandle(DWORD,HANDLE);

BOOL __attribute__((__stdcall__))   SetSystemPowerState(BOOL,BOOL);
BOOL __attribute__((__stdcall__))   SetSystemTime(const SYSTEMTIME*);
BOOL __attribute__((__stdcall__))   SetSystemTimeAdjustment(DWORD,BOOL);
DWORD __attribute__((__stdcall__))   SetTapeParameters(HANDLE,DWORD,PVOID);
DWORD __attribute__((__stdcall__))   SetTapePosition(HANDLE,DWORD,DWORD,DWORD,DWORD,BOOL);
DWORD __attribute__((__stdcall__))   SetThreadAffinityMask(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetThreadContext(HANDLE,const CONTEXT*);
DWORD __attribute__((__stdcall__))   SetThreadIdealProcessor(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetThreadPriority(HANDLE,int);
BOOL __attribute__((__stdcall__))   SetThreadPriorityBoost(HANDLE,BOOL);
BOOL __attribute__((__stdcall__))   SetThreadToken (PHANDLE,HANDLE);
BOOL __attribute__((__stdcall__))   SetTimeZoneInformation(const TIME_ZONE_INFORMATION *);
BOOL __attribute__((__stdcall__))   SetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD);
LPTOP_LEVEL_EXCEPTION_FILTER __attribute__((__stdcall__))   SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER);
BOOL __attribute__((__stdcall__))   SetupComm(HANDLE,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   SetVolumeLabelA(LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   SetVolumeLabelW(LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,PVOID,BOOL);
BOOL __attribute__((__stdcall__))   SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
DWORD __attribute__((__stdcall__))   SizeofResource(HINSTANCE,HRSRC);
void __attribute__((__stdcall__))   Sleep(DWORD);
DWORD __attribute__((__stdcall__))   SleepEx(DWORD,BOOL);
DWORD __attribute__((__stdcall__))   SuspendThread(HANDLE);
void __attribute__((__stdcall__))   SwitchToFiber(PVOID);
BOOL __attribute__((__stdcall__))   SwitchToThread(void);
BOOL __attribute__((__stdcall__))   SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
BOOL __attribute__((__stdcall__))   SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
BOOL __attribute__((__stdcall__))   TerminateProcess(HANDLE,UINT);
BOOL __attribute__((__stdcall__))   TerminateThread(HANDLE,DWORD);
DWORD __attribute__((__stdcall__))   TlsAlloc(void );
BOOL __attribute__((__stdcall__))   TlsFree(DWORD);
PVOID __attribute__((__stdcall__))   TlsGetValue(DWORD);
BOOL __attribute__((__stdcall__))   TlsSetValue(DWORD,PVOID);
BOOL __attribute__((__stdcall__))   TransactNamedPipe(HANDLE,PVOID,DWORD,PVOID,DWORD,PDWORD,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   TransmitCommChar(HANDLE,char);
BOOL __attribute__((__stdcall__))   TryEnterCriticalSection(LPCRITICAL_SECTION);
LONG __attribute__((__stdcall__))   UnhandledExceptionFilter(LPEXCEPTION_POINTERS);
BOOL __attribute__((__stdcall__))   UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED);


BOOL __attribute__((__stdcall__))   UnmapViewOfFile(PVOID);
BOOL __attribute__((__stdcall__))   UpdateResourceA(HANDLE,LPCSTR,LPCSTR,WORD,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   UpdateResourceW(HANDLE,LPCWSTR,LPCWSTR,WORD,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   VerifyVersionInfoA(LPOSVERSIONINFOEXA,DWORD,DWORDLONG);
BOOL __attribute__((__stdcall__))   VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDLONG);
PVOID __attribute__((__stdcall__))   VirtualAlloc(PVOID,DWORD,DWORD,DWORD);
PVOID __attribute__((__stdcall__))   VirtualAllocEx(HANDLE,PVOID,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   VirtualFree(PVOID,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   VirtualFreeEx(HANDLE,PVOID,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   VirtualLock(PVOID,DWORD);
BOOL __attribute__((__stdcall__))   VirtualProtect(PVOID,DWORD,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   VirtualProtectEx(HANDLE,PVOID,DWORD,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   VirtualQuery(LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
DWORD __attribute__((__stdcall__))   VirtualQueryEx(HANDLE,LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
BOOL __attribute__((__stdcall__))   VirtualUnlock(PVOID,DWORD);
BOOL __attribute__((__stdcall__))   WaitCommEvent(HANDLE,PDWORD,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   WaitForDebugEvent(LPDEBUG_EVENT,DWORD);
DWORD __attribute__((__stdcall__))   WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD);
DWORD __attribute__((__stdcall__))   WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL);
DWORD __attribute__((__stdcall__))   WaitForSingleObject(HANDLE,DWORD);
DWORD __attribute__((__stdcall__))   WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
BOOL __attribute__((__stdcall__))   WaitNamedPipeA(LPCSTR,DWORD);
BOOL __attribute__((__stdcall__))   WaitNamedPipeW(LPCWSTR,DWORD);
BOOL __attribute__((__stdcall__))   WinLoadTrustProvider(GUID*);
BOOL __attribute__((__stdcall__))   WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
BOOL __attribute__((__stdcall__))   WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
BOOL __attribute__((__stdcall__))   WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   WritePrivateProfileStructA(LPCSTR,LPCSTR,LPVOID,UINT,LPCSTR);
BOOL __attribute__((__stdcall__))   WritePrivateProfileStructW(LPCWSTR,LPCWSTR,LPVOID,UINT,LPCWSTR);
BOOL __attribute__((__stdcall__))   WriteProcessMemory(HANDLE,PVOID,PVOID,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   WriteProfileSectionA(LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   WriteProfileSectionW(LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   WriteProfileStringA(LPCSTR,LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   WriteProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR);
DWORD __attribute__((__stdcall__))   WriteTapemark(HANDLE,DWORD,DWORD,BOOL);


# 1736 "/usr/include/w32api/winbase.h" 3

typedef STARTUPINFOA STARTUPINFO,*LPSTARTUPINFO;
typedef WIN32_FIND_DATAA WIN32_FIND_DATA,*LPWIN32_FIND_DATA;
typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO;








































































































































}


# 51 "/usr/include/w32api/windows.h" 2 3


# 1 "/usr/include/w32api/wingdi.h" 1 3







extern "C" {




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































typedef struct _ABC {
	int abcA;
	UINT abcB;
	int abcC;
} ABC,*LPABC;
typedef struct _ABCFLOAT {
	FLOAT abcfA;
	FLOAT abcfB;
	FLOAT abcfC;
} ABCFLOAT,*LPABCFLOAT;
typedef struct tagBITMAP {
	LONG	bmType;
	LONG	bmWidth;
	LONG	bmHeight;
	LONG	bmWidthBytes;
	WORD	bmPlanes;
	WORD	bmBitsPixel;
	LPVOID	bmBits;
} BITMAP,*PBITMAP,*LPBITMAP;
typedef struct tagBITMAPCOREHEADER {
	DWORD	bcSize;
	WORD	bcWidth;
	WORD	bcHeight;
	WORD	bcPlanes;
	WORD	bcBitCount;
} BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
#pragma pack(push,1)
typedef struct tagRGBTRIPLE {
	BYTE rgbtBlue;
	BYTE rgbtGreen;
	BYTE rgbtRed;
} RGBTRIPLE;
#pragma pack(pop)
#pragma pack(push,2)
typedef struct tagBITMAPFILEHEADER {
	WORD	bfType;
	DWORD	bfSize;
	WORD	bfReserved1;
	WORD	bfReserved2;
	DWORD	bfOffBits;
} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
#pragma pack(pop)
typedef struct _BITMAPCOREINFO {
	BITMAPCOREHEADER	bmciHeader;
	RGBTRIPLE	bmciColors[1];
} BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
typedef struct tagBITMAPINFOHEADER{
	DWORD	biSize;
	LONG	biWidth;
	LONG	biHeight;
	WORD	biPlanes;
	WORD	biBitCount;
	DWORD	biCompression;
	DWORD	biSizeImage;
	LONG	biXPelsPerMeter;
	LONG	biYPelsPerMeter;
	DWORD	biClrUsed;
	DWORD	biClrImportant;
} BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
typedef struct tagRGBQUAD {
	BYTE	rgbBlue;
	BYTE	rgbGreen;
	BYTE	rgbRed;
	BYTE	rgbReserved;
} RGBQUAD;
typedef struct tagBITMAPINFO {
	BITMAPINFOHEADER bmiHeader;
	RGBQUAD bmiColors[1];
} BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
typedef long FXPT16DOT16,*LPFXPT16DOT16;
typedef long FXPT2DOT30,*LPFXPT2DOT30;
typedef struct tagCIEXYZ {
	FXPT2DOT30 ciexyzX;
	FXPT2DOT30 ciexyzY;
	FXPT2DOT30 ciexyzZ;
} CIEXYZ,*LPCIEXYZ;
typedef struct tagCIEXYZTRIPLE {
	CIEXYZ ciexyzRed;
	CIEXYZ ciexyzGreen;
	CIEXYZ ciexyzBlue;
} CIEXYZTRIPLE,*LPCIEXYZTRIPLE;
typedef struct {
	DWORD	bV4Size;
	LONG	bV4Width;
	LONG	bV4Height;
	WORD	bV4Planes;
	WORD	bV4BitCount;
	DWORD	bV4V4Compression;
	DWORD	bV4SizeImage;
	LONG	bV4XPelsPerMeter;
	LONG	bV4YPelsPerMeter;
	DWORD	bV4ClrUsed;
	DWORD	bV4ClrImportant;
	DWORD	bV4RedMask;
	DWORD	bV4GreenMask;
	DWORD	bV4BlueMask;
	DWORD	bV4AlphaMask;
	DWORD	bV4CSType;
	CIEXYZTRIPLE bV4Endpoints;
	DWORD	bV4GammaRed;
	DWORD	bV4GammaGreen;
	DWORD	bV4GammaBlue;
} BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER;
typedef struct tagFONTSIGNATURE {
	DWORD	fsUsb[4];
	DWORD	fsCsb[2];
} FONTSIGNATURE,*LPFONTSIGNATURE;
typedef struct {
	UINT ciCharset;
	UINT ciACP;
	FONTSIGNATURE fs;
} CHARSETINFO,*LPCHARSETINFO;
typedef struct  tagCOLORADJUSTMENT {
	WORD	caSize;
	WORD	caFlags;
	WORD	caIlluminantIndex;
	WORD	caRedGamma;
	WORD	caGreenGamma;
	WORD	caBlueGamma;
	WORD	caReferenceBlack;
	WORD	caReferenceWhite;
	SHORT	caContrast;
	SHORT	caBrightness;
	SHORT	caColorfulness;
	SHORT	caRedGreenTint;
} COLORADJUSTMENT,*LPCOLORADJUSTMENT;
typedef struct _devicemodeA {
	BYTE dmDeviceName[32 ];
	WORD dmSpecVersion;
	WORD dmDriverVersion;
	WORD dmSize;
	WORD dmDriverExtra;
	DWORD dmFields;
	short dmOrientation;
	short dmPaperSize;
	short dmPaperLength;
	short dmPaperWidth;
	short dmScale;
	short dmCopies;
	short dmDefaultSource;
	short dmPrintQuality;
	short dmColor;
	short dmDuplex;
	short dmYResolution;
	short dmTTOption;
	short dmCollate;
	BYTE dmFormName[32 ];
	WORD dmLogPixels;
	DWORD dmBitsPerPel;
	DWORD dmPelsWidth;
	DWORD dmPelsHeight;
	DWORD dmDisplayFlags;
	DWORD dmDisplayFrequency;
	DWORD dmICMMethod;
	DWORD dmICMIntent;
	DWORD dmMediaType;
	DWORD dmDitherType;
	DWORD dmICCManufacturer;
	DWORD dmICCModel;
} DEVMODEA,*LPDEVMODEA,*PDEVMODEA;
typedef struct _devicemodeW {
	WCHAR dmDeviceName[32 ];
	WORD dmSpecVersion;
	WORD dmDriverVersion;
	WORD dmSize;
	WORD dmDriverExtra;
	DWORD dmFields;
	short dmOrientation;
	short dmPaperSize;
	short dmPaperLength;
	short dmPaperWidth;
	short dmScale;
	short dmCopies;
	short dmDefaultSource;
	short dmPrintQuality;
	short dmColor;
	short dmDuplex;
	short dmYResolution;
	short dmTTOption;
	short dmCollate;
	WCHAR dmFormName[32 ];
	WORD dmLogPixels;
	DWORD dmBitsPerPel;
	DWORD dmPelsWidth;
	DWORD dmPelsHeight;
	DWORD dmDisplayFlags;
	DWORD dmDisplayFrequency;
	DWORD dmICMMethod;
	DWORD dmICMIntent;
	DWORD dmMediaType;
	DWORD dmDitherType;
	DWORD dmICCManufacturer;
	DWORD dmICCModel;
} DEVMODEW,*LPDEVMODEW,*PDEVMODEW;
typedef struct tagDIBSECTION {
	BITMAP dsBm;
	BITMAPINFOHEADER dsBmih;
	DWORD dsBitfields[3];
	HANDLE dshSection;
	DWORD dsOffset;
} DIBSECTION;
typedef struct _DOCINFOA {
	int cbSize;
	LPCTSTR lpszDocName;
	LPCTSTR lpszOutput;
	LPCTSTR lpszDatatype;
	DWORD fwType;
} DOCINFOA,*LPDOCINFOA;
typedef struct _DOCINFOW {
	int cbSize;
	LPCWSTR lpszDocName;
	LPCWSTR lpszOutput;
	LPCWSTR lpszDatatype;
	DWORD fwType;
} DOCINFOW,*LPDOCINFOW;
typedef struct tagEMR {
	DWORD iType;
	DWORD nSize;
} EMR,*PEMR;
typedef struct tagEMRANGLEARC {
	EMR emr;
	POINTL ptlCenter;
	DWORD nRadius;
	FLOAT eStartAngle;
	FLOAT eSweepAngle;
} EMRANGLEARC,*PEMRANGLEARC;
typedef struct tagEMRARC {
	EMR emr;
	RECTL rclBox;
	POINTL ptlStart;
	POINTL ptlEnd;
} EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
typedef struct  _XFORM {
	FLOAT eM11;
	FLOAT eM12;
	FLOAT eM21;
	FLOAT eM22;
	FLOAT eDx;
	FLOAT eDy;
} XFORM,*PXFORM,*LPXFORM;
typedef struct tagEMRBITBLT {
	EMR emr;
	RECTL rclBounds;
	LONG xDest;
	LONG yDest;
	LONG cxDest;
	LONG cyDest;
	DWORD dwRop;
	LONG xSrc;
	LONG ySrc;
	XFORM xformSrc;
	COLORREF crBkColorSrc;
	DWORD iUsageSrc;
	DWORD offBmiSrc;
	DWORD offBitsSrc;
	DWORD cbBitsSrc;
} EMRBITBLT,*PEMRBITBLT;
typedef struct tagLOGBRUSH {
	UINT lbStyle;
	COLORREF lbColor;
	LONG lbHatch;
} LOGBRUSH,*PLOGBRUSH,*LPLOGBRUSH;
typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
typedef struct tagEMRCREATEBRUSHINDIRECT {
	EMR emr;
	DWORD ihBrush;
	LOGBRUSH lb;
} EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
typedef LONG LCSCSTYPE;
typedef LONG LCSGAMUTMATCH;
typedef struct tagLOGCOLORSPACEA {
	DWORD lcsSignature;
	DWORD lcsVersion;
	DWORD lcsSize;
	LCSCSTYPE lcsCSType;
	LCSGAMUTMATCH lcsIntent;
	CIEXYZTRIPLE lcsEndpoints;
	DWORD lcsGammaRed;
	DWORD lcsGammaGreen;
	DWORD lcsGammaBlue;
	CHAR lcsFilename[260 ];
} LOGCOLORSPACEA,*LPLOGCOLORSPACEA;
typedef struct tagLOGCOLORSPACEW {
	DWORD lcsSignature;
	DWORD lcsVersion;
	DWORD lcsSize;
	LCSCSTYPE lcsCSType;
	LCSGAMUTMATCH lcsIntent;
	CIEXYZTRIPLE lcsEndpoints;
	DWORD lcsGammaRed;
	DWORD lcsGammaGreen;
	DWORD lcsGammaBlue;
	WCHAR lcsFilename[260 ];
} LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
typedef struct tagEMRCREATECOLORSPACE {
	EMR emr;
	DWORD ihCS;
	LOGCOLORSPACEW lcs;
} EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
	EMR emr;
	DWORD ihBrush;
	DWORD iUsage;
	DWORD offBmi;
	DWORD cbBmi;
	DWORD offBits;
	DWORD cbBits;
} EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
typedef struct tagEMRCREATEMONOBRUSH {
	EMR emr;
	DWORD ihBrush;
	DWORD iUsage;
	DWORD offBmi;
	DWORD cbBmi;
	DWORD offBits;
	DWORD cbBits;
} EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
typedef struct tagPALETTEENTRY {
	BYTE peRed;
	BYTE peGreen;
	BYTE peBlue;
	BYTE peFlags;
} PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;
typedef struct tagLOGPALETTE {
	WORD palVersion;
	WORD palNumEntries;
	PALETTEENTRY palPalEntry[1];
} LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;
typedef struct tagEMRCREATEPALETTE {
	EMR emr;
	DWORD ihPal;
	LOGPALETTE lgpl;
} EMRCREATEPALETTE,*PEMRCREATEPALETTE;
typedef struct tagLOGPEN {
	UINT lopnStyle;
	POINT lopnWidth;
	COLORREF lopnColor;
} LOGPEN,*PLOGPEN,*LPLOGPEN;
typedef struct tagEMRCREATEPEN {
	EMR emr;
	DWORD ihPen;
	LOGPEN lopn;
} EMRCREATEPEN,*PEMRCREATEPEN;
typedef struct tagEMRELLIPSE {
	EMR emr;
	RECTL rclBox;
} EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
typedef struct tagEMREOF {
	EMR emr;
	DWORD nPalEntries;
	DWORD offPalEntries;
	DWORD nSizeLast;
} EMREOF,*PEMREOF;
typedef struct tagEMREXCLUDECLIPRECT {
	EMR emr;
	RECTL rclClip;
} EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
typedef struct tagPANOSE {
	BYTE bFamilyType;
	BYTE bSerifStyle;
	BYTE bWeight;
	BYTE bProportion;
	BYTE bContrast;
	BYTE bStrokeVariation;
	BYTE bArmStyle;
	BYTE bLetterform;
	BYTE bMidline;
	BYTE bXHeight;
} PANOSE;
typedef struct tagLOGFONTA {
	LONG	lfHeight;
	LONG	lfWidth;
	LONG	lfEscapement;
	LONG	lfOrientation;
	LONG	lfWeight;
	BYTE	lfItalic;
	BYTE	lfUnderline;
	BYTE	lfStrikeOut;
	BYTE	lfCharSet;
	BYTE	lfOutPrecision;
	BYTE	lfClipPrecision;
	BYTE	lfQuality;
	BYTE	lfPitchAndFamily;
	CHAR	lfFaceName[32 ];
} LOGFONTA,*PLOGFONTA,*LPLOGFONTA;
typedef struct tagLOGFONTW {
	LONG	lfHeight;
	LONG	lfWidth;
	LONG	lfEscapement;
	LONG	lfOrientation;
	LONG	lfWeight;
	BYTE	lfItalic;
	BYTE	lfUnderline;
	BYTE	lfStrikeOut;
	BYTE	lfCharSet;
	BYTE	lfOutPrecision;
	BYTE	lfClipPrecision;
	BYTE	lfQuality;
	BYTE	lfPitchAndFamily;
	WCHAR	lfFaceName[32 ];
} LOGFONTW,*PLOGFONTW,*LPLOGFONTW;
typedef struct tagEXTLOGFONTA {
	LOGFONTA	elfLogFont;
	BYTE	elfFullName[64 ];
	BYTE	elfStyle[32 ];
	DWORD	elfVersion;
	DWORD	elfStyleSize;
	DWORD	elfMatch;
	DWORD	elfReserved;
	BYTE	elfVendorId[4 ];
	DWORD	elfCulture;
	PANOSE	elfPanose;
} EXTLOGFONTA,*PEXTLOGFONTA,*LPEXTLOGFONTA;
typedef struct tagEXTLOGFONTW {
	LOGFONTW	elfLogFont;
	WCHAR	elfFullName[64 ];
	WCHAR	elfStyle[32 ];
	DWORD	elfVersion;
	DWORD	elfStyleSize;
	DWORD	elfMatch;
	DWORD	elfReserved;
	BYTE	elfVendorId[4 ];
	DWORD	elfCulture;
	PANOSE	elfPanose;
} EXTLOGFONTW,*PEXTLOGFONTW,*LPEXTLOGFONTW;
typedef struct tagEMREXTCREATEFONTINDIRECTW {
	EMR emr;
	DWORD ihFont;
	EXTLOGFONTW elfw;
} EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
typedef struct tagEXTLOGPEN {
	UINT elpPenStyle;
	UINT elpWidth;
	UINT elpBrushStyle;
	COLORREF elpColor;
	LONG elpHatch;
	DWORD elpNumEntries;
	DWORD elpStyleEntry[1];
} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN;
typedef struct tagEMREXTCREATEPEN {
	EMR emr;
	DWORD ihPen;
	DWORD offBmi;
	DWORD cbBmi;
	DWORD offBits;
	DWORD cbBits;
	EXTLOGPEN elp;
} EMREXTCREATEPEN,*PEMREXTCREATEPEN;
typedef struct tagEMREXTFLOODFILL {
	EMR emr;
	POINTL ptlStart;
	COLORREF crColor;
	DWORD iMode;
} EMREXTFLOODFILL,*PEMREXTFLOODFILL;
typedef struct tagEMREXTSELECTCLIPRGN {
	EMR emr;
	DWORD cbRgnData;
	DWORD iMode;
	BYTE RgnData[1];
} EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
typedef struct tagEMRTEXT {
	POINTL ptlReference;
	DWORD nChars;
	DWORD offString;
	DWORD fOptions;
	RECTL rcl;
	DWORD offDx;
} EMRTEXT,*PEMRTEXT;
typedef struct tagEMREXTTEXTOUTA {
	EMR emr;
	RECTL rclBounds;
	DWORD iGraphicsMode;
	FLOAT exScale;
	FLOAT eyScale;
	EMRTEXT emrtext;
} EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
typedef struct tagEMRFILLPATH {
	EMR emr;
	RECTL rclBounds;
} EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
typedef struct tagEMRFILLRGN {
	EMR emr;
	RECTL rclBounds;
	DWORD cbRgnData;
	DWORD ihBrush;
	BYTE RgnData[1];
} EMRFILLRGN,*PEMRFILLRGN;
typedef struct tagEMRFORMAT   {
	DWORD dSignature;
	DWORD nVersion;
	DWORD cbData;
	DWORD offData;
} EMRFORMAT;
typedef struct tagEMRFRAMERGN {
	EMR emr;
	RECTL rclBounds;
	DWORD cbRgnData;
	DWORD ihBrush;
	SIZEL szlStroke;
	BYTE RgnData[1];
} EMRFRAMERGN,*PEMRFRAMERGN;
typedef struct tagEMRGDICOMMENT {
	EMR emr;
	DWORD cbData;
	BYTE Data[1];
} EMRGDICOMMENT,*PEMRGDICOMMENT;
typedef struct tagEMRINVERTRGN {
	EMR emr;
	RECTL rclBounds;
	DWORD cbRgnData;
	BYTE RgnData[1];
} EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
typedef struct tagEMRLINETO {
	EMR emr;
	POINTL ptl;
} EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
typedef struct tagEMRMASKBLT {
	EMR emr;
	RECTL rclBounds;
	LONG xDest;
	LONG yDest;
	LONG cxDest;
	LONG cyDest;
	DWORD dwRop;
	LONG xSrc;
	LONG ySrc;
	XFORM xformSrc;
	COLORREF crBkColorSrc;
	DWORD iUsageSrc;
	DWORD offBmiSrc;
	DWORD cbBmiSrc;
	DWORD offBitsSrc;
	DWORD cbBitsSrc;
	LONG xMask;
	LONG yMask;
	DWORD iUsageMask;
	DWORD offBmiMask;
	DWORD cbBmiMask;
	DWORD offBitsMask;
	DWORD cbBitsMask;
} EMRMASKBLT,*PEMRMASKBLT;
typedef struct tagEMRMODIFYWORLDTRANSFORM {
	EMR emr;
	XFORM xform;
	DWORD iMode;
} EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
typedef struct tagEMROFFSETCLIPRGN {
	EMR emr;
	POINTL ptlOffset;
} EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
typedef struct tagEMRPLGBLT {
	EMR emr;
	RECTL rclBounds;
	POINTL aptlDest[3];
	LONG xSrc;
	LONG ySrc;
	LONG cxSrc;
	LONG cySrc;
	XFORM xformSrc;
	COLORREF crBkColorSrc;
	DWORD iUsageSrc;
	DWORD offBmiSrc;
	DWORD cbBmiSrc;
	DWORD offBitsSrc;
	DWORD cbBitsSrc;
	LONG xMask;
	LONG yMask;
	DWORD iUsageMask;
	DWORD offBmiMask;
	DWORD cbBmiMask;
	DWORD offBitsMask;
	DWORD cbBitsMask;
} EMRPLGBLT,*PEMRPLGBLT;
typedef struct tagEMRPOLYDRAW {
	EMR emr;
	RECTL rclBounds;
	DWORD cptl;
	POINTL aptl[1];
	BYTE abTypes[1];
} EMRPOLYDRAW,*PEMRPOLYDRAW;
typedef struct tagEMRPOLYDRAW16 {
	EMR emr;
	RECTL rclBounds;
	DWORD cpts;
	POINTS apts[1];
	BYTE abTypes[1];
} EMRPOLYDRAW16,*PEMRPOLYDRAW16;
typedef struct tagEMRPOLYLINE {
	EMR emr;
	RECTL rclBounds;
	DWORD cptl;
	POINTL aptl[1];
} EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO;
typedef struct tagEMRPOLYLINE16 {
	EMR emr;
	RECTL rclBounds;
	DWORD cpts;
	POINTL apts[1];
} EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
typedef struct tagEMRPOLYPOLYLINE {
	EMR emr;
	RECTL rclBounds;
	DWORD nPolys;
	DWORD cptl;
	DWORD aPolyCounts[1];
	POINTL aptl[1];
} EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON;
typedef struct tagEMRPOLYPOLYLINE16 {
	EMR emr;
	RECTL rclBounds;
	DWORD nPolys;
	DWORD cpts;
	DWORD aPolyCounts[1];
	POINTS apts[1];
} EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16;
typedef struct tagEMRPOLYTEXTOUTA {
	EMR emr;
	RECTL rclBounds;
	DWORD iGraphicsMode;
	FLOAT exScale;
	FLOAT eyScale;
	LONG cStrings;
	EMRTEXT aemrtext[1];
} EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
typedef struct tagEMRRESIZEPALETTE {
	EMR emr;
	DWORD ihPal;
	DWORD cEntries;
} EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
typedef struct tagEMRRESTOREDC {
	EMR emr;
	LONG iRelative;
} EMRRESTOREDC,*PEMRRESTOREDC;
typedef struct tagEMRROUNDRECT {
	EMR emr;
	RECTL rclBox;
	SIZEL szlCorner;
} EMRROUNDRECT,*PEMRROUNDRECT;
typedef struct tagEMRSCALEVIEWPORTEXTEX {
	EMR emr;
	LONG xNum;
	LONG xDenom;
	LONG yNum;
	LONG yDenom;
} EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
typedef struct tagEMRSELECTCOLORSPACE {
	EMR emr;
	DWORD ihCS;
} EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
typedef struct tagEMRSELECTOBJECT {
	EMR emr;
	DWORD ihObject;
} EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
typedef struct tagEMRSELECTPALETTE {
	EMR emr;
	DWORD ihPal;
} EMRSELECTPALETTE,*PEMRSELECTPALETTE;
typedef struct tagEMRSETARCDIRECTION {
	EMR emr;
	DWORD iArcDirection;
} EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
typedef struct tagEMRSETTEXTCOLOR {
	EMR emr;
	COLORREF crColor;
} EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
typedef struct tagEMRSETCOLORADJUSTMENT {
	EMR emr;
	COLORADJUSTMENT ColorAdjustment;
} EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
typedef struct tagEMRSETDIBITSTODEVICE {
	EMR emr;
	RECTL rclBounds;
	LONG xDest;
	LONG yDest;
	LONG xSrc;
	LONG ySrc;
	LONG cxSrc;
	LONG cySrc;
	DWORD offBmiSrc;
	DWORD cbBmiSrc;
	DWORD offBitsSrc;
	DWORD cbBitsSrc;
	DWORD iUsageSrc;
	DWORD iStartScan;
	DWORD cScans;
} EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE;
typedef struct tagEMRSETMAPPERFLAGS {
	EMR emr;
	DWORD dwFlags;
} EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
typedef struct tagEMRSETMITERLIMIT {
	EMR emr;
	FLOAT eMiterLimit;
} EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
typedef struct tagEMRSETPALETTEENTRIES {
	EMR emr;
	DWORD ihPal;
	DWORD iStart;
	DWORD cEntries;
	PALETTEENTRY aPalEntries[1];
} EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
typedef struct tagEMRSETPIXELV {
	EMR emr;
	POINTL ptlPixel;
	COLORREF crColor;
} EMRSETPIXELV,*PEMRSETPIXELV;
typedef struct tagEMRSETVIEWPORTEXTEX {
	EMR emr;
	SIZEL szlExtent;
} EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
typedef struct tagEMRSETVIEWPORTORGEX {
	EMR emr;
	POINTL ptlOrigin;
} EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
typedef struct tagEMRSETWORLDTRANSFORM {
	EMR emr;
	XFORM xform;
} EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
typedef struct tagEMRSTRETCHBLT {
	EMR emr;
	RECTL rclBounds;
	LONG xDest;
	LONG yDest;
	LONG cxDest;
	LONG cyDest;
	DWORD dwRop;
	LONG xSrc;
	LONG ySrc;
	XFORM xformSrc;
	COLORREF crBkColorSrc;
	DWORD iUsageSrc;
	DWORD offBmiSrc;
	DWORD cbBmiSrc;
	DWORD offBitsSrc;
	DWORD cbBitsSrc;
	LONG cxSrc;
	LONG cySrc;
} EMRSTRETCHBLT,*PEMRSTRETCHBLT;
typedef struct tagEMRSTRETCHDIBITS {
	EMR emr;
	RECTL rclBounds;
	LONG xDest;
	LONG yDest;
	LONG xSrc;
	LONG ySrc;
	LONG cxSrc;
	LONG cySrc;
	DWORD offBmiSrc;
	DWORD cbBmiSrc;
	DWORD offBitsSrc;
	DWORD cbBitsSrc;
	DWORD iUsageSrc;
	DWORD dwRop;
	LONG cxDest;
	LONG cyDest;
} EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS;
typedef struct tagABORTPATH {
	EMR emr;
} EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE;
typedef struct tagEMRSELECTCLIPPATH {
	EMR emr;
	DWORD iMode;
} EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN,EMRENABLEICM,*PEMRENABLEICM;
#pragma pack(push,2)
typedef struct tagMETAHEADER {
	WORD mtType;
	WORD mtHeaderSize;
	WORD mtVersion;
	DWORD mtSize;
	WORD mtNoObjects;
	DWORD mtMaxRecord;
	WORD mtNoParameters;
} METAHEADER,*PMETAHEADER,*LPMETAHEADER;
#pragma pack(pop)
typedef struct tagENHMETAHEADER {
	DWORD iType;
	DWORD nSize;
	RECTL rclBounds;
	RECTL rclFrame;
	DWORD dSignature;
	DWORD nVersion;
	DWORD nBytes;
	DWORD nRecords;
	WORD nHandles;
	WORD sReserved;
	DWORD nDescription;
	DWORD offDescription;
	DWORD nPalEntries;
	SIZEL szlDevice;
	SIZEL szlMillimeters;
} ENHMETAHEADER,*LPENHMETAHEADER;
typedef struct tagMETARECORD {
	DWORD rdSize;
	WORD rdFunction;
	WORD rdParm[1];
} METARECORD,*PMETARECORD,*LPMETARECORD;
typedef struct tagENHMETARECORD {
	DWORD iType;
	DWORD nSize;
	DWORD dParm[1];
} ENHMETARECORD,*LPENHMETARECORD;
typedef struct tagHANDLETABLE {
	HGDIOBJ objectHandle[1];
} HANDLETABLE,*LPHANDLETABLE;
typedef struct tagTEXTMETRICA {
	LONG tmHeight;
	LONG tmAscent;
	LONG tmDescent;
	LONG tmInternalLeading;
	LONG tmExternalLeading;
	LONG tmAveCharWidth;
	LONG tmMaxCharWidth;
	LONG tmWeight;
	LONG tmOverhang;
	LONG tmDigitizedAspectX;
	LONG tmDigitizedAspectY;
	BYTE tmFirstChar;
	BYTE tmLastChar;
	BYTE tmDefaultChar;
	BYTE tmBreakChar;
	BYTE tmItalic;
	BYTE tmUnderlined;
	BYTE tmStruckOut;
	BYTE tmPitchAndFamily;
	BYTE tmCharSet;
} TEXTMETRICA,*PTEXTMETRICA,*LPTEXTMETRICA;
typedef struct tagTEXTMETRICW {
	LONG tmHeight;
	LONG tmAscent;
	LONG tmDescent;
	LONG tmInternalLeading;
	LONG tmExternalLeading;
	LONG tmAveCharWidth;
	LONG tmMaxCharWidth;
	LONG tmWeight;
	LONG tmOverhang;
	LONG tmDigitizedAspectX;
	LONG tmDigitizedAspectY;
	WCHAR tmFirstChar;
	WCHAR tmLastChar;
	WCHAR tmDefaultChar;
	WCHAR tmBreakChar;
	BYTE tmItalic;
	BYTE tmUnderlined;
	BYTE tmStruckOut;
	BYTE tmPitchAndFamily;
	BYTE tmCharSet;
} TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW;
typedef struct _RGNDATAHEADER {
	DWORD dwSize;
	DWORD iType;
	DWORD nCount;
	DWORD nRgnSize;
	RECT rcBound;
} RGNDATAHEADER;
typedef struct _RGNDATA {
	RGNDATAHEADER rdh;
	char Buffer[1];
} RGNDATA,*PRGNDATA, *LPRGNDATA;
 

typedef struct tagGCP_RESULTSA {
	DWORD lStructSize;
	LPSTR lpOutString;
	UINT *lpOrder;
	INT *lpDx;
	INT *lpCaretPos;
	LPSTR lpClass;
	UINT *lpGlyphs;
	UINT nGlyphs;
	UINT nMaxFit;
} GCP_RESULTSA,*LPGCP_RESULTSA;
typedef struct tagGCP_RESULTSW {
	DWORD lStructSize;
	LPWSTR lpOutString;
	UINT *lpOrder;
	INT *lpDx;
	INT *lpCaretPos;
	LPWSTR lpClass;
	UINT *lpGlyphs;
	UINT nGlyphs;
	UINT nMaxFit;
} GCP_RESULTSW,*LPGCP_RESULTSW;
typedef struct _GLYPHMETRICS {
	UINT gmBlackBoxX;
	UINT gmBlackBoxY;
	POINT gmptGlyphOrigin;
	short gmCellIncX;
	short gmCellIncY;
} GLYPHMETRICS,*LPGLYPHMETRICS;
typedef struct tagKERNINGPAIR {
	WORD wFirst;
	WORD wSecond;
	int iKernAmount;
} KERNINGPAIR,*LPKERNINGPAIR;
typedef struct _FIXED {
	WORD fract;
	short value;
} FIXED;
typedef struct _MAT2 {
	FIXED eM11;
	FIXED eM12;
	FIXED eM21;
	FIXED eM22;
} MAT2,*LPMAT2;
typedef struct _OUTLINETEXTMETRICA {
	UINT otmSize;
	TEXTMETRICA otmTextMetrics;
	BYTE otmFiller;
	PANOSE otmPanoseNumber;
	UINT otmfsSelection;
	UINT otmfsType;
	int otmsCharSlopeRise;
	int otmsCharSlopeRun;
	int otmItalicAngle;
	UINT otmEMSquare;
	int otmAscent;
	int otmDescent;
	UINT otmLineGap;
	UINT otmsCapEmHeight;
	UINT otmsXHeight;
	RECT otmrcFontBox;
	int otmMacAscent;
	int otmMacDescent;
	UINT otmMacLineGap;
	UINT otmusMinimumPPEM;
	POINT otmptSubscriptSize;
	POINT otmptSubscriptOffset;
	POINT otmptSuperscriptSize;
	POINT otmptSuperscriptOffset;
	UINT otmsStrikeoutSize;
	int otmsStrikeoutPosition;
	int otmsUnderscoreSize;
	int otmsUnderscorePosition;
	PSTR otmpFamilyName;
	PSTR otmpFaceName;
	PSTR otmpStyleName;
	PSTR otmpFullName;
} OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA;
typedef struct _OUTLINETEXTMETRICW {
	UINT otmSize;
	TEXTMETRICW otmTextMetrics;
	BYTE otmFiller;
	PANOSE otmPanoseNumber;
	UINT otmfsSelection;
	UINT otmfsType;
	int otmsCharSlopeRise;
	int otmsCharSlopeRun;
	int otmItalicAngle;
	UINT otmEMSquare;
	int otmAscent;
	int otmDescent;
	UINT otmLineGap;
	UINT otmsCapEmHeight;
	UINT otmsXHeight;
	RECT otmrcFontBox;
	int otmMacAscent;
	int otmMacDescent;
	UINT otmMacLineGap;
	UINT otmusMinimumPPEM;
	POINT otmptSubscriptSize;
	POINT otmptSubscriptOffset;
	POINT otmptSuperscriptSize;
	POINT otmptSuperscriptOffset;
	UINT otmsStrikeoutSize;
	int otmsStrikeoutPosition;
	int otmsUnderscoreSize;
	int otmsUnderscorePosition;
	PSTR otmpFamilyName;
	PSTR otmpFaceName;
	PSTR otmpStyleName;
	PSTR otmpFullName;
} OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW;
typedef struct _RASTERIZER_STATUS {
	short nSize;
	short wFlags;
	short nLanguageID;
} RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
typedef struct _POLYTEXTA {
	int x;
	int y;
	UINT n;
	LPCSTR lpstr;
	UINT uiFlags;
	RECT rcl;
	int *pdx;
} POLYTEXTA, *PPOLYTEXTA;
typedef struct _POLYTEXTW {
	int x;
	int y;
	UINT n;
	LPCWSTR lpstr;
	UINT uiFlags;
	RECT rcl;
	int *pdx;
} POLYTEXTW, *PPOLYTEXTW;
typedef struct tagPIXELFORMATDESCRIPTOR {
	WORD nSize;
	WORD nVersion;
	DWORD dwFlags;
	BYTE iPixelType;
	BYTE cColorBits;
	BYTE cRedBits;
	BYTE cRedShift;
	BYTE cGreenBits;
	BYTE cGreenShift;
	BYTE cBlueBits;
	BYTE cBlueShift;
	BYTE cAlphaBits;
	BYTE cAlphaShift;
	BYTE cAccumBits;
	BYTE cAccumRedBits;
	BYTE cAccumGreenBits;
	BYTE cAccumBlueBits;
	BYTE cAccumAlphaBits;
	BYTE cDepthBits;
	BYTE cStencilBits;
	BYTE cAuxBuffers;
	BYTE iLayerType;
	BYTE bReserved;
	DWORD dwLayerMask;
	DWORD dwVisibleMask;
	DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
typedef struct tagMETAFILEPICT {
	LONG mm;
	LONG xExt;
	LONG yExt;
	HMETAFILE hMF;
} METAFILEPICT,*LPMETAFILEPICT;
typedef struct tagLOCALESIGNATURE {
	DWORD lsUsb[4];
	DWORD lsCsbDefault[2];
	DWORD lsCsbSupported[2];
} LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
typedef LONG LCSTYPE;
#pragma pack(push,4)
typedef struct tagNEWTEXTMETRICA {
	LONG tmHeight;
	LONG tmAscent;
	LONG tmDescent;
	LONG tmInternalLeading;
	LONG tmExternalLeading;
	LONG tmAveCharWidth;
	LONG tmMaxCharWidth;
	LONG tmWeight;
	LONG tmOverhang;
	LONG tmDigitizedAspectX;
	LONG tmDigitizedAspectY;
	BYTE tmFirstChar;
	BYTE tmLastChar;
	BYTE tmDefaultChar;
	BYTE tmBreakChar;
	BYTE tmItalic;
	BYTE tmUnderlined;
	BYTE tmStruckOut;
	BYTE tmPitchAndFamily;
	BYTE tmCharSet;
	DWORD ntmFlags;
	UINT ntmSizeEM;
	UINT ntmCellHeight;
	UINT ntmAvgWidth;
} NEWTEXTMETRICA,*PNEWTEXTMETRICA,*LPNEWTEXTMETRICA;
typedef struct tagNEWTEXTMETRICW {
	LONG tmHeight;
	LONG tmAscent;
	LONG tmDescent;
	LONG tmInternalLeading;
	LONG tmExternalLeading;
	LONG tmAveCharWidth;
	LONG tmMaxCharWidth;
	LONG tmWeight;
	LONG tmOverhang;
	LONG tmDigitizedAspectX;
	LONG tmDigitizedAspectY;
	WCHAR tmFirstChar;
	WCHAR tmLastChar;
	WCHAR tmDefaultChar;
	WCHAR tmBreakChar;
	BYTE tmItalic;
	BYTE tmUnderlined;
	BYTE tmStruckOut;
	BYTE tmPitchAndFamily;
	BYTE tmCharSet;
	DWORD ntmFlags;
	UINT ntmSizeEM;
	UINT ntmCellHeight;
	UINT ntmAvgWidth;
} NEWTEXTMETRICW,*PNEWTEXTMETRICW,*LPNEWTEXTMETRICW;
#pragma pack(pop)
typedef struct tagNEWTEXTMETRICEXA {
	NEWTEXTMETRICA ntmTm;
	FONTSIGNATURE ntmFontSig;
} NEWTEXTMETRICEXA;
typedef struct tagNEWTEXTMETRICEXW {
	NEWTEXTMETRICW ntmTm;
	FONTSIGNATURE ntmFontSig;
} NEWTEXTMETRICEXW;
typedef struct tagPELARRAY {
	LONG paXCount;
	LONG paYCount;
	LONG paXExt;
	LONG paYExt;
	BYTE paRGBs;
} PELARRAY,*PPELARRAY,*LPPELARRAY;
typedef struct tagENUMLOGFONTA {
	LOGFONTA elfLogFont;
	BYTE elfFullName[64 ];
	BYTE elfStyle[32 ];
} ENUMLOGFONTA,*LPENUMLOGFONTA;
typedef struct tagENUMLOGFONTW {
	LOGFONTW elfLogFont;
	WCHAR elfFullName[64 ];
	WCHAR elfStyle[32 ];
} ENUMLOGFONTW,*LPENUMLOGFONTW;
typedef struct tagENUMLOGFONTEXA {
	LOGFONTA elfLogFont;
	BYTE elfFullName[64 ];
	BYTE elfStyle[32 ];
	BYTE elfScript[32 ];
} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
typedef struct tagENUMLOGFONTEXW {
	LOGFONTW elfLogFont;
	WCHAR elfFullName[64 ];
	BYTE elfStyle[32 ];
	BYTE elfScript[32 ];
} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
typedef struct tagPOINTFX {
	FIXED x;
	FIXED y;
} POINTFX,*LPPOINTFX;
typedef struct tagTTPOLYCURVE {
	WORD wType;
	WORD cpfx;
	POINTFX apfx[1];
} TTPOLYCURVE,*LPTTPOLYCURVE;
typedef struct tagTTPOLYGONHEADER {
	DWORD cb;
	DWORD dwType;
	POINTFX pfxStart;
} TTPOLYGONHEADER,*LPTTPOLYGONHEADER;
typedef struct _POINTFLOAT {
	FLOAT x;
	FLOAT y;
} POINTFLOAT,*PPOINTFLOAT;
typedef struct _GLYPHMETRICSFLOAT {
	FLOAT gmfBlackBoxX;
	FLOAT gmfBlackBoxY;
	POINTFLOAT gmfptGlyphOrigin;
	FLOAT gmfCellIncX;
	FLOAT gmfCellIncY;
} GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT;
typedef struct tagLAYERPLANEDESCRIPTOR {
	WORD nSize;
	WORD nVersion;
	DWORD dwFlags;
	BYTE iPixelType;
	BYTE cColorBits;
	BYTE cRedBits;
	BYTE cRedShift;
	BYTE cGreenBits;
	BYTE cGreenShift;
	BYTE cBlueBits;
	BYTE cBlueShift;
	BYTE cAlphaBits;
	BYTE cAlphaShift;
	BYTE cAccumBits;
	BYTE cAccumRedBits;
	BYTE cAccumGreenBits;
	BYTE cAccumBlueBits;
	BYTE cAccumAlphaBits;
	BYTE cDepthBits;
	BYTE cStencilBits;
	BYTE cAuxBuffers;
	BYTE iLayerPlane;
	BYTE bReserved;
	COLORREF crTransparent;
} LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR;
typedef struct _BLENDFUNCTION {
    BYTE BlendOp;
    BYTE BlendFlags;
    BYTE SourceConstantAlpha;
    BYTE AlphaFormat; 
} BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION; 

typedef struct _DESIGNVECTOR {
	DWORD dvReserved;
	DWORD dvNumAxes;
	LONG dvValues[16 ];
} DESIGNVECTOR, *PDESIGNVECTOR,   *LPDESIGNVECTOR;
typedef USHORT COLOR16;
typedef struct _TRIVERTEX {
	LONG x;
	LONG y;
	COLOR16 Red;
	COLOR16 Green;
	COLOR16 Blue;
	COLOR16 Alpha;
} TRIVERTEX, *PTRIVERTEX, *LPTRIVERTEX;
typedef struct _DISPLAY_DEVICE {
  DWORD cb;
  WCHAR DeviceName[32];
  WCHAR DeviceString[128];
  DWORD StateFlags;
  WCHAR DeviceID[128];
  WCHAR DeviceKey[128];
} DISPLAY_DEVICE, *PDISPLAY_DEVICE;

typedef BOOL (__attribute__((__stdcall__))   *ABORTPROC)(HDC,int);
typedef int (__attribute__((__stdcall__))   *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
typedef int (__attribute__((__stdcall__))   *ENHMFENUMPROC)(HDC,HANDLETABLE*,ENHMETARECORD*,int,LPARAM);
typedef int (__attribute__((__stdcall__))   *OLDFONTENUMPROCA)(const LOGFONTA*,const TEXTMETRICA*,DWORD,LPARAM);
typedef int (__attribute__((__stdcall__))   *OLDFONTENUMPROCW)(const LOGFONTW*,const TEXTMETRICW*,DWORD,LPARAM);
typedef OLDFONTENUMPROCA FONTENUMPROCA;
typedef OLDFONTENUMPROCW FONTENUMPROCW;
typedef int (__attribute__((__stdcall__))   *ICMENUMPROCA)(LPSTR,LPARAM);
typedef int (__attribute__((__stdcall__))   *ICMENUMPROCW)(LPWSTR,LPARAM);
typedef void (__attribute__((__stdcall__))   *GOBJENUMPROC)(LPVOID,LPARAM);
typedef void (__attribute__((__stdcall__))   *LINEDDAPROC)(int,int,LPARAM);
typedef UINT (__attribute__((__stdcall__))   *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,UINT);
typedef DWORD (__attribute__((__stdcall__))   *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA);







int __attribute__((__stdcall__))   AbortDoc(HDC);
BOOL __attribute__((__stdcall__))   AbortPath(HDC);
int __attribute__((__stdcall__))   AddFontResourceA(LPCSTR);
int __attribute__((__stdcall__))   AddFontResourceW(LPCWSTR);
BOOL __attribute__((__stdcall__))   AngleArc(HDC,int,int,DWORD,FLOAT,FLOAT);
BOOL __attribute__((__stdcall__))   AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
BOOL __attribute__((__stdcall__))   Arc(HDC,int,int,int,int,int,int,int,int);
BOOL __attribute__((__stdcall__))   ArcTo(HDC,int,int,int,int,int,int,int,int);
BOOL __attribute__((__stdcall__))   BeginPath(HDC);
BOOL __attribute__((__stdcall__))   BitBlt(HDC,int,int,int,int,HDC,int,int,DWORD);
BOOL __attribute__((__stdcall__))   CancelDC(HDC);
BOOL __attribute__((__stdcall__))   CheckColorsInGamut(HDC,PVOID,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   Chord(HDC,int,int,int,int,int,int,int,int);
int __attribute__((__stdcall__))   ChoosePixelFormat(HDC,const  PIXELFORMATDESCRIPTOR*);
HENHMETAFILE __attribute__((__stdcall__))   CloseEnhMetaFile(HDC);
BOOL __attribute__((__stdcall__))   CloseFigure(HDC);
HMETAFILE __attribute__((__stdcall__))   CloseMetaFile(HDC);
BOOL __attribute__((__stdcall__))   ColorMatchToTarget(HDC,HDC,DWORD);
int __attribute__((__stdcall__))   CombineRgn(HRGN,HRGN,HRGN,int);
BOOL __attribute__((__stdcall__))   CombineTransform(LPXFORM,const XFORM*,const XFORM*);
HENHMETAFILE __attribute__((__stdcall__))   CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
HENHMETAFILE __attribute__((__stdcall__))   CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
HMETAFILE __attribute__((__stdcall__))   CopyMetaFileA(HMETAFILE,LPCSTR);
HMETAFILE __attribute__((__stdcall__))   CopyMetaFileW(HMETAFILE,LPCWSTR);
HBITMAP __attribute__((__stdcall__))   CreateBitmap(int,int,UINT,UINT,PCVOID);
HBITMAP __attribute__((__stdcall__))   CreateBitmapIndirect(const BITMAP*);
HBRUSH __attribute__((__stdcall__))   CreateBrushIndirect(const LOGBRUSH*);
HCOLORSPACE __attribute__((__stdcall__))   CreateColorSpaceA(LPLOGCOLORSPACEA);
HCOLORSPACE __attribute__((__stdcall__))   CreateColorSpaceW(LPLOGCOLORSPACEW);
HBITMAP __attribute__((__stdcall__))   CreateCompatibleBitmap(HDC,int,int);
HDC __attribute__((__stdcall__))   CreateCompatibleDC(HDC);
HDC __attribute__((__stdcall__))   CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
HDC __attribute__((__stdcall__))   CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
HBITMAP __attribute__((__stdcall__))   CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT);
HBRUSH __attribute__((__stdcall__))   CreateDIBPatternBrush(HGLOBAL,UINT);
HBRUSH __attribute__((__stdcall__))   CreateDIBPatternBrushPt(PCVOID,UINT);
HBITMAP __attribute__((__stdcall__))   CreateDIBSection(HDC,const BITMAPINFO*,UINT,void**,HANDLE,DWORD);
HBITMAP __attribute__((__stdcall__))   CreateDiscardableBitmap(HDC,int,int);
HRGN __attribute__((__stdcall__))   CreateEllipticRgn(int,int,int,int);
HRGN __attribute__((__stdcall__))   CreateEllipticRgnIndirect(LPCRECT);
HDC __attribute__((__stdcall__))   CreateEnhMetaFileA(HDC,LPCSTR,LPCRECT,LPCSTR);
HDC __attribute__((__stdcall__))   CreateEnhMetaFileW(HDC,LPCWSTR,LPCRECT,LPCWSTR);
HFONT __attribute__((__stdcall__))   CreateFontA(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
HFONT __attribute__((__stdcall__))   CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
HFONT __attribute__((__stdcall__))   CreateFontIndirectA(const LOGFONTA*);
HFONT __attribute__((__stdcall__))   CreateFontIndirectW(const LOGFONTW*);
HPALETTE __attribute__((__stdcall__))   CreateHalftonePalette(HDC);
HBRUSH __attribute__((__stdcall__))   CreateHatchBrush(int,COLORREF);
HDC __attribute__((__stdcall__))   CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
HDC __attribute__((__stdcall__))   CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
HDC __attribute__((__stdcall__))   CreateMetaFileA(LPCSTR);
HDC __attribute__((__stdcall__))   CreateMetaFileW(LPCWSTR);
HPALETTE __attribute__((__stdcall__))   CreatePalette(const LOGPALETTE*);
HBRUSH __attribute__((__stdcall__))   CreatePatternBrush(HBITMAP);
HPEN __attribute__((__stdcall__))   CreatePen(int,int,COLORREF);
HPEN __attribute__((__stdcall__))   CreatePenIndirect(const LOGPEN*);
HRGN __attribute__((__stdcall__))   CreatePolygonRgn(const POINT*,int,int);
HRGN __attribute__((__stdcall__))   CreatePolyPolygonRgn(const POINT*,const INT*,int,int);
HRGN __attribute__((__stdcall__))   CreateRectRgn(int,int,int,int);
HRGN __attribute__((__stdcall__))   CreateRectRgnIndirect(LPCRECT);
HRGN __attribute__((__stdcall__))   CreateRoundRectRgn(int,int,int,int,int,int);
BOOL __attribute__((__stdcall__))   CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
HBRUSH __attribute__((__stdcall__))   CreateSolidBrush(COLORREF);
BOOL __attribute__((__stdcall__))   DeleteColorSpace(HCOLORSPACE);
BOOL __attribute__((__stdcall__))   DeleteDC(HDC);
BOOL __attribute__((__stdcall__))   DeleteEnhMetaFile(HENHMETAFILE);
BOOL __attribute__((__stdcall__))   DeleteMetaFile(HMETAFILE);
BOOL __attribute__((__stdcall__))   DeleteObject(HGDIOBJ);
int __attribute__((__stdcall__))   DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
DWORD __attribute__((__stdcall__))   DeviceCapabilitiesA(LPCSTR,LPCSTR,WORD,LPSTR,const DEVMODEA*);
DWORD __attribute__((__stdcall__))   DeviceCapabilitiesW(LPCWSTR,LPCWSTR,WORD,LPWSTR,const DEVMODEW*);
BOOL __attribute__((__stdcall__))   DPtoLP(HDC,LPPOINT,int);
int __attribute__((__stdcall__))   DrawEscape(HDC,int,int,LPCSTR);
BOOL __attribute__((__stdcall__))   Ellipse(HDC,int,int,int,int);
int __attribute__((__stdcall__))   EndDoc(HDC);
int __attribute__((__stdcall__))   EndPage(HDC);
BOOL __attribute__((__stdcall__))   EndPath(HDC);
BOOL __attribute__((__stdcall__))   EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,PVOID,LPCRECT);
int __attribute__((__stdcall__))   EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
int __attribute__((__stdcall__))   EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
int __attribute__((__stdcall__))   EnumFontFamiliesExA(HDC,PLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
int __attribute__((__stdcall__))   EnumFontFamiliesExW(HDC,PLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
int __attribute__((__stdcall__))   EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
int __attribute__((__stdcall__))   EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
int __attribute__((__stdcall__))   EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
int __attribute__((__stdcall__))   EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
BOOL __attribute__((__stdcall__))   EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
int __attribute__((__stdcall__))   EnumObjects(HDC,int,GOBJENUMPROC,LPARAM);
BOOL __attribute__((__stdcall__))   EqualRgn(HRGN,HRGN);
int __attribute__((__stdcall__))   Escape(HDC,int,int,LPCSTR,PVOID);
int __attribute__((__stdcall__))   ExcludeClipRect(HDC,int,int,int,int);
int __attribute__((__stdcall__))   ExcludeUpdateRgn(HDC,HWND);
HPEN __attribute__((__stdcall__))   ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
HRGN __attribute__((__stdcall__))   ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
int __attribute__((__stdcall__))   ExtEscape(HDC,int,int,LPCSTR,int,LPSTR);
BOOL __attribute__((__stdcall__))   ExtFloodFill(HDC,int,int,COLORREF,UINT);
int __attribute__((__stdcall__))   ExtSelectClipRgn(HDC,HRGN,int);
BOOL __attribute__((__stdcall__))   ExtTextOutA(HDC,int,int,UINT,LPCRECT,LPCSTR,UINT,const INT*);
BOOL __attribute__((__stdcall__))   ExtTextOutW(HDC,int,int,UINT,LPCRECT,LPCWSTR,UINT,const INT*);
BOOL __attribute__((__stdcall__))   FillPath(HDC);
int __attribute__((__stdcall__))   FillRect(HDC,LPCRECT,HBRUSH);
int __attribute__((__stdcall__))   FillRgn(HDC,HRGN,HBRUSH);
BOOL __attribute__((__stdcall__))   FixBrushOrgEx(HDC,int,int,LPPOINT);
BOOL __attribute__((__stdcall__))   FlattenPath(HDC);
BOOL __attribute__((__stdcall__))   FloodFill(HDC,int,int,COLORREF);
BOOL __attribute__((__stdcall__))   GdiComment(HDC,UINT,const BYTE*);
BOOL __attribute__((__stdcall__))   GdiFlush(void);
DWORD __attribute__((__stdcall__))   GdiGetBatchLimit(void);
DWORD __attribute__((__stdcall__))   GdiSetBatchLimit(DWORD);








int __attribute__((__stdcall__))   GetArcDirection(HDC);
BOOL __attribute__((__stdcall__))   GetAspectRatioFilterEx(HDC,LPSIZE);
LONG __attribute__((__stdcall__))   GetBitmapBits(HBITMAP,LONG,PVOID);
BOOL __attribute__((__stdcall__))   GetBitmapDimensionEx(HBITMAP,LPSIZE);
COLORREF __attribute__((__stdcall__))   GetBkColor(HDC);
int __attribute__((__stdcall__))   GetBkMode(HDC);
UINT __attribute__((__stdcall__))   GetBoundsRect(HDC,LPRECT,UINT);
BOOL __attribute__((__stdcall__))   GetBrushOrgEx(HDC,LPPOINT);
BOOL __attribute__((__stdcall__))   GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
BOOL __attribute__((__stdcall__))   GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
BOOL __attribute__((__stdcall__))   GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
BOOL __attribute__((__stdcall__))   GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
DWORD __attribute__((__stdcall__))   GetCharacterPlacementA(HDC,LPCSTR,int,int,LPGCP_RESULTSA,DWORD);
DWORD __attribute__((__stdcall__))   GetCharacterPlacementW(HDC,LPCWSTR,int,int,LPGCP_RESULTSW,DWORD);
BOOL __attribute__((__stdcall__))   GetCharWidth32A(HDC,UINT,UINT,LPINT);
BOOL __attribute__((__stdcall__))   GetCharWidth32W(HDC,UINT,UINT,LPINT);
BOOL __attribute__((__stdcall__))   GetCharWidthA(HDC,UINT,UINT,LPINT);
BOOL __attribute__((__stdcall__))   GetCharWidthW(HDC,UINT,UINT,LPINT);
BOOL __attribute__((__stdcall__))   GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
BOOL __attribute__((__stdcall__))   GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
int __attribute__((__stdcall__))   GetClipBox(HDC,LPRECT);
int __attribute__((__stdcall__))   GetClipRgn(HDC,HRGN);
BOOL __attribute__((__stdcall__))   GetColorAdjustment(HDC,LPCOLORADJUSTMENT);
HANDLE __attribute__((__stdcall__))   GetColorSpace(HDC);
HGDIOBJ __attribute__((__stdcall__))   GetCurrentObject(HDC,UINT);
BOOL __attribute__((__stdcall__))   GetCurrentPositionEx(HDC,LPPOINT);
HCURSOR __attribute__((__stdcall__))   GetCursor(void);
BOOL __attribute__((__stdcall__))   GetDCOrgEx(HDC,LPPOINT);
int __attribute__((__stdcall__))   GetDeviceCaps(HDC,int);
BOOL __attribute__((__stdcall__))   GetDeviceGammaRamp(HDC,PVOID);
UINT __attribute__((__stdcall__))   GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
int __attribute__((__stdcall__))   GetDIBits(HDC,HBITMAP,UINT,UINT,PVOID,LPBITMAPINFO,UINT);
HENHMETAFILE __attribute__((__stdcall__))   GetEnhMetaFileA(LPCSTR);
HENHMETAFILE __attribute__((__stdcall__))   GetEnhMetaFileW(LPCWSTR);
UINT __attribute__((__stdcall__))   GetEnhMetaFileBits(HENHMETAFILE,UINT,LPBYTE);
UINT __attribute__((__stdcall__))   GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
UINT __attribute__((__stdcall__))   GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
UINT __attribute__((__stdcall__))   GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
UINT __attribute__((__stdcall__))   GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
UINT __attribute__((__stdcall__))   GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,const  PIXELFORMATDESCRIPTOR*);
DWORD __attribute__((__stdcall__))   GetFontData(HDC,DWORD,DWORD,PVOID,DWORD);
DWORD __attribute__((__stdcall__))   GetFontLanguageInfo(HDC);
DWORD __attribute__((__stdcall__))   GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
DWORD __attribute__((__stdcall__))   GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
int __attribute__((__stdcall__))   GetGraphicsMode(HDC);
BOOL __attribute__((__stdcall__))   GetICMProfileA(HDC,DWORD,LPSTR);
BOOL __attribute__((__stdcall__))   GetICMProfileW(HDC,DWORD,LPWSTR);
DWORD __attribute__((__stdcall__))   GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
DWORD __attribute__((__stdcall__))   GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
BOOL __attribute__((__stdcall__))   GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
BOOL __attribute__((__stdcall__))   GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
int __attribute__((__stdcall__))   GetMapMode(HDC);
HMETAFILE __attribute__((__stdcall__))   GetMetaFileA(LPCSTR);
HMETAFILE __attribute__((__stdcall__))   GetMetaFileW(LPCWSTR);
UINT __attribute__((__stdcall__))   GetMetaFileBitsEx(HMETAFILE,UINT,PVOID);
int __attribute__((__stdcall__))   GetMetaRgn(HDC,HRGN);
BOOL __attribute__((__stdcall__))   GetMiterLimit(HDC,PFLOAT);
COLORREF __attribute__((__stdcall__))   GetNearestColor(HDC,COLORREF);
UINT __attribute__((__stdcall__))   GetNearestPaletteIndex(HPALETTE,COLORREF);
int __attribute__((__stdcall__))   GetObjectA(HGDIOBJ,int,PVOID);
int __attribute__((__stdcall__))   GetObjectW(HGDIOBJ,int,PVOID);
DWORD __attribute__((__stdcall__))   GetObjectType(HGDIOBJ);
UINT __attribute__((__stdcall__))   GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
UINT __attribute__((__stdcall__))   GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
UINT __attribute__((__stdcall__))   GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
int __attribute__((__stdcall__))   GetPath(HDC,LPPOINT,PBYTE,int);
COLORREF __attribute__((__stdcall__))   GetPixel(HDC,int,int);
int __attribute__((__stdcall__))   GetPixelFormat(HDC);
int __attribute__((__stdcall__))   GetPolyFillMode(HDC);
BOOL __attribute__((__stdcall__))   GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
int __attribute__((__stdcall__))   GetRandomRgn (HDC,HRGN,INT);
DWORD __attribute__((__stdcall__))   GetRegionData(HRGN,DWORD,LPRGNDATA);
int __attribute__((__stdcall__))   GetRgnBox(HRGN,LPRECT);
int __attribute__((__stdcall__))   GetROP2(HDC);
HGDIOBJ __attribute__((__stdcall__))   GetStockObject(int);
int __attribute__((__stdcall__))   GetStretchBltMode(HDC);
UINT __attribute__((__stdcall__))   GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
UINT __attribute__((__stdcall__))   GetSystemPaletteUse(HDC);
UINT __attribute__((__stdcall__))   GetTextAlign(HDC);
int __attribute__((__stdcall__))   GetTextCharacterExtra(HDC);
int __attribute__((__stdcall__))   GetTextCharset(HDC);
int __attribute__((__stdcall__))   GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
COLORREF __attribute__((__stdcall__))   GetTextColor(HDC);
BOOL __attribute__((__stdcall__))   GetTextExtentExPointA(HDC,LPCSTR,int,int,LPINT,LPINT,LPSIZE);
BOOL __attribute__((__stdcall__))   GetTextExtentExPointW( HDC,LPCWSTR,int,int,LPINT,LPINT,LPSIZE );
BOOL __attribute__((__stdcall__))   GetTextExtentPointA(HDC,LPCSTR,int,LPSIZE);
BOOL __attribute__((__stdcall__))   GetTextExtentPointW(HDC,LPCWSTR,int,LPSIZE);
BOOL __attribute__((__stdcall__))   GetTextExtentPoint32A(HDC,LPCSTR,int,LPSIZE);
BOOL __attribute__((__stdcall__))   GetTextExtentPoint32W( HDC,LPCWSTR,int,LPSIZE);
int __attribute__((__stdcall__))   GetTextFaceA(HDC,int,LPSTR);
int __attribute__((__stdcall__))   GetTextFaceW(HDC,int,LPWSTR);
BOOL __attribute__((__stdcall__))   GetTextMetricsA(HDC,LPTEXTMETRICA);
BOOL __attribute__((__stdcall__))   GetTextMetricsW(HDC,LPTEXTMETRICW);
BOOL __attribute__((__stdcall__))   GetViewportExtEx(HDC,LPSIZE);
BOOL __attribute__((__stdcall__))   GetViewportOrgEx(HDC,LPPOINT);
BOOL __attribute__((__stdcall__))   GetWindowExtEx(HDC,LPSIZE);
BOOL __attribute__((__stdcall__))   GetWindowOrgEx(HDC,LPPOINT);
UINT __attribute__((__stdcall__))   GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
BOOL __attribute__((__stdcall__))   GetWorldTransform(HDC,LPXFORM);
int __attribute__((__stdcall__))   IntersectClipRect(HDC,int,int,int,int);
BOOL __attribute__((__stdcall__))   InvertRgn(HDC,HRGN);
BOOL __attribute__((__stdcall__))   LineDDA(int,int,int,int,LINEDDAPROC,LPARAM);
BOOL __attribute__((__stdcall__))   LineTo(HDC,int,int);
BOOL __attribute__((__stdcall__))   LPtoDP(HDC,LPPOINT,int);
BOOL __attribute__((__stdcall__))   MaskBlt(HDC,int,int,int,int,HDC,int,int,HBITMAP,int,int,DWORD);
BOOL __attribute__((__stdcall__))   ModifyWorldTransform(HDC,const XFORM*,DWORD);
BOOL __attribute__((__stdcall__))   MoveToEx(HDC,int,int,LPPOINT);
int __attribute__((__stdcall__))   OffsetClipRgn(HDC,int,int);
int __attribute__((__stdcall__))   OffsetRgn(HRGN,int,int);
BOOL __attribute__((__stdcall__))   OffsetViewportOrgEx(HDC,int,int,LPPOINT);
BOOL __attribute__((__stdcall__))   OffsetWindowOrgEx(HDC,int,int,LPPOINT);
BOOL __attribute__((__stdcall__))   PaintRgn(HDC,HRGN);
BOOL __attribute__((__stdcall__))   PatBlt(HDC,int,int,int,int,DWORD);
HRGN __attribute__((__stdcall__))   PathToRegion(HDC);
BOOL __attribute__((__stdcall__))   Pie(HDC,int,int,int,int,int,int,int,int);
BOOL __attribute__((__stdcall__))   PlayEnhMetaFile(HDC,HENHMETAFILE,LPCRECT);
BOOL __attribute__((__stdcall__))   PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
BOOL __attribute__((__stdcall__))   PlayMetaFile(HDC,HMETAFILE);
BOOL __attribute__((__stdcall__))   PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
BOOL __attribute__((__stdcall__))   PlgBlt(HDC,const POINT*,HDC,int,int,int,int,HBITMAP,int,int);
BOOL __attribute__((__stdcall__))   PolyBezier(HDC,const POINT*,DWORD);
BOOL __attribute__((__stdcall__))   PolyBezierTo(HDC,const POINT*,DWORD);
BOOL __attribute__((__stdcall__))   PolyDraw(HDC,const POINT*,const BYTE*,int);
BOOL __attribute__((__stdcall__))   Polygon(HDC,const POINT*,int);
BOOL __attribute__((__stdcall__))   Polyline(HDC,const POINT*,int);
BOOL __attribute__((__stdcall__))   PolylineTo(HDC,const POINT*,DWORD);
BOOL __attribute__((__stdcall__))   PolyPolygon(HDC,const POINT*,const INT*,int);
BOOL __attribute__((__stdcall__))   PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
BOOL __attribute__((__stdcall__))   PolyTextOutA(HDC,const POLYTEXTA*,int);
BOOL __attribute__((__stdcall__))   PolyTextOutW(HDC,const POLYTEXTW*,int);
BOOL __attribute__((__stdcall__))   PtInRegion(HRGN,int,int);
BOOL __attribute__((__stdcall__))   PtVisible(HDC,int,int);
UINT __attribute__((__stdcall__))   RealizePalette(HDC);
BOOL __attribute__((__stdcall__))   Rectangle(HDC,int,int,int,int);
BOOL __attribute__((__stdcall__))   RectInRegion(HRGN,LPCRECT);
BOOL __attribute__((__stdcall__))   RectVisible(HDC,LPCRECT);
BOOL __attribute__((__stdcall__))   RemoveFontResourceA(LPCSTR);
BOOL __attribute__((__stdcall__))   RemoveFontResourceW(LPCWSTR);
HDC __attribute__((__stdcall__))   ResetDCA(HDC,const DEVMODEA*);
HDC __attribute__((__stdcall__))   ResetDCW(HDC,const DEVMODEW*);
BOOL __attribute__((__stdcall__))   ResizePalette(HPALETTE,UINT);
BOOL __attribute__((__stdcall__))   RestoreDC(HDC,int);
BOOL __attribute__((__stdcall__))   RoundRect(HDC,int,int,int,int,int,int);
int __attribute__((__stdcall__))   SaveDC(HDC);
BOOL __attribute__((__stdcall__))   ScaleViewportExtEx(HDC,int,int,int,int,LPSIZE);
BOOL __attribute__((__stdcall__))   ScaleWindowExtEx(HDC,int,int,int,int,LPSIZE);
BOOL __attribute__((__stdcall__))   SelectClipPath(HDC,int);
int __attribute__((__stdcall__))   SelectClipRgn(HDC,HRGN);
HGDIOBJ __attribute__((__stdcall__))   SelectObject(HDC,HGDIOBJ);
HPALETTE __attribute__((__stdcall__))   SelectPalette(HDC,HPALETTE,BOOL);
int __attribute__((__stdcall__))   SetAbortProc(HDC,ABORTPROC);
int __attribute__((__stdcall__))   SetArcDirection(HDC,int);
LONG __attribute__((__stdcall__))   SetBitmapBits(HBITMAP,DWORD,PCVOID);
BOOL __attribute__((__stdcall__))   SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE);
COLORREF __attribute__((__stdcall__))   SetBkColor(HDC,COLORREF);
int __attribute__((__stdcall__))   SetBkMode(HDC,int);
UINT __attribute__((__stdcall__))   SetBoundsRect(HDC,LPCRECT,UINT);
BOOL __attribute__((__stdcall__))   SetBrushOrgEx(HDC,int,int,LPPOINT);
BOOL __attribute__((__stdcall__))   SetColorAdjustment(HDC,const COLORADJUSTMENT*);
BOOL __attribute__((__stdcall__))   SetColorSpace(HDC,HCOLORSPACE);
BOOL __attribute__((__stdcall__))   SetDeviceGammaRamp(HDC,PVOID);
UINT __attribute__((__stdcall__))   SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*);
int __attribute__((__stdcall__))   SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
int __attribute__((__stdcall__))   SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
HENHMETAFILE __attribute__((__stdcall__))   SetEnhMetaFileBits(UINT,const BYTE*);
int __attribute__((__stdcall__))   SetGraphicsMode(HDC,int);
int __attribute__((__stdcall__))   SetICMMode(HDC,int);
BOOL __attribute__((__stdcall__))   SetICMProfileA(HDC,LPSTR);
BOOL __attribute__((__stdcall__))   SetICMProfileW(HDC,LPWSTR);
int __attribute__((__stdcall__))   SetMapMode(HDC,int);
DWORD __attribute__((__stdcall__))   SetMapperFlags(HDC,DWORD);
HMETAFILE __attribute__((__stdcall__))   SetMetaFileBitsEx(UINT,const BYTE *);
int __attribute__((__stdcall__))   SetMetaRgn(HDC);
BOOL __attribute__((__stdcall__))   SetMiterLimit(HDC,FLOAT,PFLOAT);
UINT __attribute__((__stdcall__))   SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
COLORREF __attribute__((__stdcall__))   SetPixel(HDC,int,int,COLORREF);
BOOL __attribute__((__stdcall__))   SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
BOOL __attribute__((__stdcall__))   SetPixelV(HDC,int,int,COLORREF);
int __attribute__((__stdcall__))   SetPolyFillMode(HDC,int);
BOOL __attribute__((__stdcall__))   SetRectRgn(HRGN,int,int,int,int);
int __attribute__((__stdcall__))   SetROP2(HDC,int);
int __attribute__((__stdcall__))   SetStretchBltMode(HDC,int);
UINT __attribute__((__stdcall__))   SetSystemPaletteUse(HDC,UINT);
UINT __attribute__((__stdcall__))   SetTextAlign(HDC,UINT);
int __attribute__((__stdcall__))   SetTextCharacterExtra(HDC,int);
COLORREF __attribute__((__stdcall__))   SetTextColor(HDC,COLORREF);
BOOL __attribute__((__stdcall__))   SetTextJustification(HDC,int,int);
BOOL __attribute__((__stdcall__))   SetViewportExtEx(HDC,int,int,LPSIZE);
BOOL __attribute__((__stdcall__))   SetViewportOrgEx(HDC,int,int,LPPOINT);
BOOL __attribute__((__stdcall__))   SetWindowExtEx(HDC,int,int,LPSIZE);
BOOL __attribute__((__stdcall__))   SetWindowOrgEx(HDC,int,int,LPPOINT);
HENHMETAFILE __attribute__((__stdcall__))   SetWinMetaFileBits(UINT,const BYTE*,HDC,const METAFILEPICT*);
BOOL __attribute__((__stdcall__))   SetWorldTransform(HDC,const XFORM *);
int __attribute__((__stdcall__))   StartDocA(HDC,const DOCINFOA*);
int __attribute__((__stdcall__))   StartDocW(HDC,const DOCINFOW*);
int __attribute__((__stdcall__))   StartPage(HDC);
BOOL __attribute__((__stdcall__))   StretchBlt(HDC,int,int,int,int,HDC,int,int,int,int,DWORD);
int __attribute__((__stdcall__))   StretchDIBits(HDC,int,int,int,int,int,int,int,int,const void  *,const BITMAPINFO *,UINT,DWORD);
BOOL __attribute__((__stdcall__))   StrokeAndFillPath(HDC);
BOOL __attribute__((__stdcall__))   StrokePath(HDC);
BOOL __attribute__((__stdcall__))   SwapBuffers(HDC);
BOOL __attribute__((__stdcall__))   TextOutA(HDC,int,int,LPCSTR,int);
BOOL __attribute__((__stdcall__))   TextOutW(HDC,int,int,LPCWSTR,int);
BOOL __attribute__((__stdcall__))   TranslateCharsetInfo(PDWORD,LPCHARSETINFO,DWORD);
BOOL __attribute__((__stdcall__))   UnrealizeObject(HGDIOBJ);
BOOL __attribute__((__stdcall__))   UpdateColors(HDC);
BOOL __attribute__((__stdcall__))   UpdateICMRegKeyA(DWORD,DWORD,LPSTR,UINT);
BOOL __attribute__((__stdcall__))   UpdateICMRegKeyW(DWORD,DWORD,LPWSTR,UINT);
BOOL __attribute__((__stdcall__))   WidenPath(HDC);
BOOL __attribute__((__stdcall__))   wglCopyContext(HGLRC,HGLRC,UINT);
HGLRC __attribute__((__stdcall__))   wglCreateContext(HDC);
HGLRC __attribute__((__stdcall__))   wglCreateLayerContext(HDC,int);
BOOL __attribute__((__stdcall__))   wglDeleteContext(HGLRC);
BOOL __attribute__((__stdcall__))   wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
HGLRC __attribute__((__stdcall__))   wglGetCurrentContext(void);
HDC __attribute__((__stdcall__))   wglGetCurrentDC(void);
int __attribute__((__stdcall__))   wglGetLayerPaletteEntries(HDC,int,int,int,const  COLORREF*);
PROC __attribute__((__stdcall__))   wglGetProcAddress(LPCSTR);
BOOL __attribute__((__stdcall__))   wglMakeCurrent(HDC,HGLRC);
BOOL __attribute__((__stdcall__))   wglRealizeLayerPalette(HDC,int,BOOL);
int __attribute__((__stdcall__))   wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF*);
BOOL __attribute__((__stdcall__))   wglShareLists(HGLRC,HGLRC);
BOOL __attribute__((__stdcall__))   wglSwapLayerBuffers(HDC,UINT);
BOOL __attribute__((__stdcall__))   wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
BOOL __attribute__((__stdcall__))   wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);







# 2807 "/usr/include/w32api/wingdi.h" 3

typedef BYTE BCHAR;
typedef DOCINFOA DOCINFO, *LPDOCINFO;
typedef LOGFONTA LOGFONT,*PLOGFONT,*LPLOGFONT;
typedef TEXTMETRICA TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;


typedef DEVMODEA DEVMODE,*PDEVMODE,*LPDEVMODE;
typedef EXTLOGFONTA EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
typedef GCP_RESULTSA GCP_RESULTS,*LPGCP_RESULTS;
typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
typedef POLYTEXTA POLYTEXT;
typedef LOGCOLORSPACEA LOGCOLORSPACE,*LPLOGCOLORSPACE;
typedef NEWTEXTMETRICA NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
typedef ENUMLOGFONTA ENUMLOGFONT,*LPENUMLOGFONT;
typedef ENUMLOGFONTEXA ENUMLOGFONTEX,*LPENUMLOGFONTEX;
















































}


# 53 "/usr/include/w32api/windows.h" 2 3



# 1 "/usr/include/w32api/winuser.h" 1 3







extern "C" {





















































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































 






















































 






































































































































































































































































































































































































































































































































































































































































































































































typedef BOOL(__attribute__((__stdcall__))   *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
typedef void (__attribute__((__stdcall__))   *TIMERPROC)(HWND,UINT,UINT,DWORD);
typedef BOOL(__attribute__((__stdcall__))   *GRAYSTRINGPROC)(HDC,LPARAM,int);
typedef LRESULT(__attribute__((__stdcall__))   *HOOKPROC)(int,WPARAM,LPARAM);
typedef BOOL(__attribute__((__stdcall__))   *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
typedef BOOL(__attribute__((__stdcall__))   *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
typedef BOOL(__attribute__((__stdcall__))   *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,DWORD);
typedef BOOL(__attribute__((__stdcall__))   *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,DWORD);
typedef int(__attribute__((__stdcall__))   *EDITWORDBREAKPROCA)(LPSTR,int,int,int);
typedef int(__attribute__((__stdcall__))   *EDITWORDBREAKPROCW)(LPWSTR,int,int,int);
typedef LRESULT(__attribute__((__stdcall__))   *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
typedef BOOL(__attribute__((__stdcall__))   *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
typedef BOOL(__attribute__((__stdcall__))   *WNDENUMPROC)(HWND,LPARAM);
typedef BOOL(__attribute__((__stdcall__))   *ENUMWINDOWSPROC)(HWND,LPARAM);
typedef BOOL(__attribute__((__stdcall__))  * MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
typedef BOOL(__attribute__((__stdcall__))   *NAMEENUMPROCA)(LPSTR,LPARAM);
typedef BOOL(__attribute__((__stdcall__))   *NAMEENUMPROCW)(LPWSTR,LPARAM);
typedef NAMEENUMPROCA DESKTOPENUMPROCA;
typedef NAMEENUMPROCW DESKTOPENUMPROCW;
typedef NAMEENUMPROCA WINSTAENUMPROCA;
typedef NAMEENUMPROCW WINSTAENUMPROCW;
typedef void(__attribute__((__stdcall__))   *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT);
typedef struct  HHOOK__{int i;}* HHOOK  ;
typedef struct  HDWP__{int i;}* HDWP  ;
typedef struct  HDEVNOTIFY__{int i;}* HDEVNOTIFY  ;
typedef struct tagACCEL {
	BYTE fVirt;
	WORD key;
	WORD cmd;
} ACCEL,*LPACCEL;
typedef struct tagACCESSTIMEOUT {
	UINT cbSize;
	DWORD dwFlags;
	DWORD iTimeOutMSec;
} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
typedef struct tagANIMATIONINFO {
	UINT cbSize;
	int iMinAnimate;
} ANIMATIONINFO,*LPANIMATIONINFO;
typedef struct tagCREATESTRUCTA {
	LPVOID	lpCreateParams;
	HINSTANCE	hInstance;
	HMENU	hMenu;
	HWND	hwndParent;
	int	cy;
	int	cx;
	int	y;
	int	x;
	LONG	style;
	LPCSTR	lpszName;
	LPCSTR	lpszClass;
	DWORD	dwExStyle;
} CREATESTRUCTA,*LPCREATESTRUCTA;
typedef struct tagCREATESTRUCTW {
	LPVOID	lpCreateParams;
	HINSTANCE	hInstance;
	HMENU	hMenu;
	HWND	hwndParent;
	int	cy;
	int	cx;
	int	y;
	int	x;
	LONG	style;
	LPCWSTR	lpszName;
	LPCWSTR	lpszClass;
	DWORD	dwExStyle;
} CREATESTRUCTW,*LPCREATESTRUCTW;
typedef struct tagCBT_CREATEWNDA {
	LPCREATESTRUCTA lpcs;
	HWND	hwndInsertAfter;
} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
typedef struct tagCBT_CREATEWNDW {
	LPCREATESTRUCTW lpcs;
	HWND	hwndInsertAfter;
} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
typedef struct tagCBTACTIVATESTRUCT {
	BOOL fMouse;
	HWND hWndActive;
} CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
typedef struct tagCLIENTCREATESTRUCT {
	HANDLE	hWindowMenu;
	UINT	idFirstChild;
} CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
typedef struct tagCOMPAREITEMSTRUCT {
	UINT	CtlType;
	UINT	CtlID;
	HWND	hwndItem;
	UINT	itemID1;
	DWORD	itemData1;
	UINT	itemID2;
	DWORD	itemData2;
	DWORD	dwLocaleId;
} COMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
typedef struct tagCOPYDATASTRUCT {
	DWORD dwData;
	DWORD cbData;
	PVOID lpData;
} COPYDATASTRUCT,*PCOPYDATASTRUCT;
typedef struct tagCURSORSHAPE {
	int xHotSpot;
	int yHotSpot;
	int cx;
	int cy;
	int cbWidth;
    BYTE Planes;
    BYTE BitsPixel;
} CURSORSHAPE,*LPCURSORSHAPE;
typedef struct tagCWPRETSTRUCT {
	LRESULT lResult;
	LPARAM lParam;
	WPARAM wParam;
	DWORD message;
	HWND hwnd;
} CWPRETSTRUCT;
typedef struct tagCWPSTRUCT {
	LPARAM lParam;
	WPARAM wParam;
	UINT message;
	HWND hwnd;
} CWPSTRUCT,*PCWPSTRUCT;
typedef struct tagDEBUGHOOKINFO {
	DWORD idThread;
	DWORD idThreadInstaller;
	LPARAM lParam;
	WPARAM wParam;
	int code;
} DEBUGHOOKINFO,*PDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
typedef struct tagDELETEITEMSTRUCT {
	UINT CtlType;
	UINT CtlID;
	UINT itemID;
	HWND hwndItem;
	UINT itemData;
} DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
#pragma pack(push,2)
typedef struct {
	DWORD style;
	DWORD dwExtendedStyle;
	short x;
	short y;
	short cx;
	short cy;
	WORD id;
} DLGITEMTEMPLATE,*LPDLGITEMTEMPLATE;
typedef struct {
	DWORD style;
	DWORD dwExtendedStyle;
	WORD cdit;
	short x;
	short y;
	short cx;
	short cy;
} DLGTEMPLATE,*LPDLGTEMPLATE;
typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
#pragma pack(pop)
typedef struct tagDRAWITEMSTRUCT {
	UINT CtlType;
	UINT CtlID;
	UINT itemID;
	UINT itemAction;
	UINT itemState;
	HWND hwndItem;
	HDC	hDC;
	RECT rcItem;
	DWORD itemData;
} DRAWITEMSTRUCT,*LPDRAWITEMSTRUCT,*PDRAWITEMSTRUCT;
typedef struct {
	UINT cbSize;
	int iTabLength;
	int iLeftMargin;
	int iRightMargin;
	UINT uiLengthDrawn;
} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
typedef struct tagPAINTSTRUCT {
	HDC	hdc;
	BOOL fErase;
	RECT rcPaint;
	BOOL fRestore;
	BOOL fIncUpdate;
	BYTE rgbReserved[32];
} PAINTSTRUCT,*LPPAINTSTRUCT;
typedef struct tagMSG {
	HWND hwnd;
	UINT message;
	WPARAM wParam;
	LPARAM lParam;
	DWORD time;
	POINT pt;
} MSG,*LPMSG,*PMSG;
typedef struct _ICONINFO {
	BOOL fIcon;
	DWORD xHotspot;
	DWORD yHotspot;
	HBITMAP hbmMask;
	HBITMAP hbmColor;
} ICONINFO,*PICONINFO;
typedef struct tagNMHDR {
	HWND hwndFrom;
	UINT idFrom;
	UINT code;
} NMHDR,*LPNMHDR;
typedef struct _WNDCLASSA {
	UINT style;
	WNDPROC lpfnWndProc;
	int cbClsExtra;
	int cbWndExtra;
	HANDLE hInstance;
	HICON hIcon;
	HCURSOR hCursor;
	HBRUSH hbrBackground;
	LPCSTR lpszMenuName;
	LPCSTR lpszClassName;
} WNDCLASSA,*LPWNDCLASSA,*PWNDCLASSA;
typedef struct _WNDCLASSW {
	UINT style;
	WNDPROC lpfnWndProc;
	int cbClsExtra;
	int cbWndExtra;
	HANDLE hInstance;
	HICON hIcon;
	HCURSOR hCursor;
	HBRUSH hbrBackground;
	LPCWSTR lpszMenuName;
	LPCWSTR lpszClassName;
} WNDCLASSW,*LPWNDCLASSW,*PWNDCLASSW;
typedef struct _WNDCLASSEXA {
	UINT cbSize;
	UINT style;
	WNDPROC lpfnWndProc;
	int cbClsExtra;
	int cbWndExtra;
	HANDLE hInstance;
	HICON hIcon;
	HCURSOR hCursor;
	HBRUSH hbrBackground;
	LPCSTR lpszMenuName;
	LPCSTR lpszClassName;
	HICON hIconSm;
} WNDCLASSEXA,*LPWNDCLASSEXA,*PWNDCLASSEXA;
typedef struct _WNDCLASSEXW {
	UINT cbSize;
	UINT style;
	WNDPROC lpfnWndProc;
	int cbClsExtra;
	int cbWndExtra;
	HANDLE hInstance;
	HICON hIcon;
	HCURSOR hCursor;
	HBRUSH hbrBackground;
	LPCWSTR lpszMenuName;
	LPCWSTR lpszClassName;
	HICON hIconSm;
} WNDCLASSEXW,*LPWNDCLASSEXW,*PWNDCLASSEXW;
typedef struct tagMENUITEMINFOA {
	UINT cbSize;
	UINT fMask;
	UINT fType;
	UINT fState;
	UINT wID;
	HMENU hSubMenu;
	HBITMAP hbmpChecked;
	HBITMAP hbmpUnchecked;
	DWORD dwItemData;
	LPSTR dwTypeData;
	UINT cch;



} MENUITEMINFOA,*LPMENUITEMINFOA;
typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
typedef struct tagMENUITEMINFOW {
	UINT cbSize;
	UINT fMask;
	UINT fType;
	UINT fState;
	UINT wID;
	HMENU hSubMenu;
	HBITMAP hbmpChecked;
	HBITMAP hbmpUnchecked;
	DWORD dwItemData;
	LPWSTR dwTypeData;
	UINT cch;



} MENUITEMINFOW,*LPMENUITEMINFOW;
typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
typedef struct tagSCROLLINFO {
	UINT cbSize;
	UINT fMask;
	int nMin;
	int nMax;
	UINT nPage;
	int nPos;
	int nTrackPos;
} SCROLLINFO,*LPSCROLLINFO;
typedef const SCROLLINFO *LPCSCROLLINFO;
typedef struct _WINDOWPLACEMENT {
	UINT length;
	UINT flags;
	UINT showCmd;
	POINT ptMinPosition;
	POINT ptMaxPosition;
	RECT rcNormalPosition;
} WINDOWPLACEMENT,*LPWINDOWPLACEMENT,*PWINDOWPLACEMENT;
typedef struct {
	WORD versionNumber;
	WORD offset;
} MENUITEMTEMPLATEHEADER;
typedef struct {
	WORD mtOption;
	WORD mtID;
	WCHAR mtString[1];
} MENUITEMTEMPLATE;
typedef void MENUTEMPLATE,MENUTEMPLATEA,MENUTEMPLATEW,*LPMENUTEMPLATEA,*LPMENUTEMPLATEW,*LPMENUTEMPLATE;
typedef struct tagHELPINFO {
	UINT cbSize;
	int iContextType;
	int iCtrlId;
	HANDLE hItemHandle;
	DWORD dwContextId;
	POINT MousePos;
} HELPINFO,*LPHELPINFO;
typedef void(__attribute__((__stdcall__))   *MSGBOXCALLBACK)(LPHELPINFO);
typedef struct {
	UINT cbSize;
	HWND hwndOwner;
	HINSTANCE hInstance;
	LPCSTR lpszText;
	LPCSTR lpszCaption;
	DWORD dwStyle;
	LPCSTR lpszIcon;
	DWORD dwContextHelpId;
	MSGBOXCALLBACK lpfnMsgBoxCallback;
	DWORD dwLanguageId;
} MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
typedef struct {
	UINT cbSize;
	HWND hwndOwner;
	HINSTANCE hInstance;
	LPCWSTR lpszText;
	LPCWSTR lpszCaption;
	DWORD dwStyle;
	LPCWSTR lpszIcon;
	DWORD dwContextHelpId;
	MSGBOXCALLBACK lpfnMsgBoxCallback;
	DWORD dwLanguageId;
} MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
typedef struct tagUSEROBJECTFLAGS {
	BOOL fInherit;
	BOOL fReserved;
	DWORD dwFlags;
} USEROBJECTFLAGS;
typedef struct tagFILTERKEYS {
	UINT cbSize;
	DWORD dwFlags;
	DWORD iWaitMSec;
	DWORD iDelayMSec;
	DWORD iRepeatMSec;
	DWORD iBounceMSec;
} FILTERKEYS;
typedef struct tagHIGHCONTRASTA {
	UINT cbSize;
	DWORD dwFlags;
	LPSTR lpszDefaultScheme;
} HIGHCONTRASTA,*LPHIGHCONTRASTA;
typedef struct tagHIGHCONTRASTW {
	UINT cbSize;
	DWORD dwFlags;
	LPWSTR lpszDefaultScheme;
} HIGHCONTRASTW,*LPHIGHCONTRASTW;
typedef struct tagICONMETRICSA {
	UINT cbSize;
	int iHorzSpacing;
	int iVertSpacing;
	int iTitleWrap;
	LOGFONTA lfFont;
} ICONMETRICSA,*LPICONMETRICSA;
typedef struct tagICONMETRICSW {
	UINT cbSize;
	int iHorzSpacing;
	int iVertSpacing;
	int iTitleWrap;
	LOGFONTW lfFont;
} ICONMETRICSW,*LPICONMETRICSW;
typedef struct tagMINIMIZEDMETRICS {
	UINT cbSize;
	int iWidth;
	int iHorzGap;
	int iVertGap;
	int iArrange;
} MINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
typedef struct tagMOUSEKEYS{
	UINT cbSize;
	DWORD dwFlags;
	DWORD iMaxSpeed;
	DWORD iTimeToMaxSpeed;
	DWORD iCtrlSpeed;
	DWORD dwReserved1;
	DWORD dwReserved2;
} MOUSEKEYS, *LPMOUSEKEYS;
typedef struct tagNONCLIENTMETRICSA {
	UINT cbSize;
	int iBorderWidth;
	int iScrollWidth;
	int iScrollHeight;
	int iCaptionWidth;
	int iCaptionHeight;
	LOGFONTA lfCaptionFont;
	int iSmCaptionWidth;
	int iSmCaptionHeight;
	LOGFONTA lfSmCaptionFont;
	int iMenuWidth;
	int iMenuHeight;
	LOGFONTA lfMenuFont;
	LOGFONTA lfStatusFont;
	LOGFONTA lfMessageFont;
} NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
typedef struct tagNONCLIENTMETRICSW {
	UINT cbSize;
	int iBorderWidth;
	int iScrollWidth;
	int iScrollHeight;
	int iCaptionWidth;
	int iCaptionHeight;
	LOGFONTW lfCaptionFont;
	int iSmCaptionWidth;
	int iSmCaptionHeight;
	LOGFONTW lfSmCaptionFont;
	int iMenuWidth;
	int iMenuHeight;
	LOGFONTW lfMenuFont;
	LOGFONTW lfStatusFont;
	LOGFONTW lfMessageFont;
} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
typedef struct tagSERIALKEYSA {
	UINT cbSize;
	DWORD dwFlags;
	LPSTR lpszActivePort;
	LPSTR lpszPort;
	UINT iBaudRate;
	UINT iPortState;
	UINT iActive;
} SERIALKEYSA,*LPSERIALKEYSA;
typedef struct tagSERIALKEYSW {
	UINT cbSize;
	DWORD dwFlags;
	LPWSTR lpszActivePort;
	LPWSTR lpszPort;
	UINT iBaudRate;
	UINT iPortState;
	UINT iActive;
} SERIALKEYSW,*LPSERIALKEYSW;
typedef struct tagSOUNDSENTRYA {
	UINT cbSize;
	DWORD dwFlags;
	DWORD iFSTextEffect;
	DWORD iFSTextEffectMSec;
	DWORD iFSTextEffectColorBits;
	DWORD iFSGrafEffect;
	DWORD iFSGrafEffectMSec;
	DWORD iFSGrafEffectColor;
	DWORD iWindowsEffect;
	DWORD iWindowsEffectMSec;
	LPSTR lpszWindowsEffectDLL;
	DWORD iWindowsEffectOrdinal;
} SOUNDSENTRYA,*LPSOUNDSENTRYA;
typedef struct tagSOUNDSENTRYW {
	UINT cbSize;
	DWORD dwFlags;
	DWORD iFSTextEffect;
	DWORD iFSTextEffectMSec;
	DWORD iFSTextEffectColorBits;
	DWORD iFSGrafEffect;
	DWORD iFSGrafEffectMSec;
	DWORD iFSGrafEffectColor;
	DWORD iWindowsEffect;
	DWORD iWindowsEffectMSec;
	LPWSTR lpszWindowsEffectDLL;
	DWORD iWindowsEffectOrdinal;
} SOUNDSENTRYW,*LPSOUNDSENTRYW;
typedef struct tagSTICKYKEYS {
	DWORD cbSize;
	DWORD dwFlags;
} STICKYKEYS,*LPSTICKYKEYS;
typedef struct tagTOGGLEKEYS {
	DWORD cbSize;
	DWORD dwFlags;
} TOGGLEKEYS;
typedef struct tagMOUSEHOOKSTRUCT {
	POINT pt;
	HWND hwnd;
	UINT wHitTestCode;
	DWORD dwExtraInfo;
} MOUSEHOOKSTRUCT,   *LPMOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;
typedef struct tagTRACKMOUSEEVENT {
	DWORD cbSize;
	DWORD dwFlags;
	HWND  hwndTrack;
	DWORD dwHoverTime;
} TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
typedef struct tagTPMPARAMS {
	UINT cbSize;
	RECT rcExclude;
} TPMPARAMS,*LPTPMPARAMS;
typedef struct tagEVENTMSG {
	UINT message;
	UINT paramL;
	UINT paramH;
	DWORD time;
	HWND hwnd;
} EVENTMSG,*PEVENTMSGMSG,*LPEVENTMSGMSG, *PEVENTMSG, *LPEVENTMSG;
typedef struct _WINDOWPOS {
	HWND hwnd;
	HWND hwndInsertAfter;
	int x;
	int y;
	int cx;
	int cy;
	UINT flags;
} WINDOWPOS,*PWINDOWPOS,*LPWINDOWPOS;
typedef struct tagMDICREATESTRUCTA {
	LPCSTR szClass;
	LPCSTR szTitle;
	HANDLE hOwner;
	int x;
	int y;
	int cx;
	int cy;
	DWORD style;
	LPARAM lParam;
} MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
typedef struct tagMDICREATESTRUCTW {
	LPCWSTR szClass;
	LPCWSTR szTitle;
	HANDLE hOwner;
	int x;
	int y;
	int cx;
	int cy;
	DWORD style;
	LPARAM lParam;
} MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
typedef struct tagMINMAXINFO {
	POINT ptReserved;
	POINT ptMaxSize;
	POINT ptMaxPosition;
	POINT ptMinTrackSize;
	POINT ptMaxTrackSize;
} MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
typedef struct tagMDINEXTMENU {
	HMENU hmenuIn;
	HMENU hmenuNext;
	HWND hwndNext;
} MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
typedef struct tagMEASUREITEMSTRUCT {
	UINT CtlType;
	UINT CtlID;
	UINT itemID;
	UINT itemWidth;
	UINT itemHeight;
	DWORD itemData;
} MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
typedef struct tagDROPSTRUCT {
	HWND hwndSource;
	HWND hwndSink;
	DWORD wFmt;
	DWORD dwData;
	POINT ptDrop;
	DWORD dwControlData;
} DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
typedef DWORD HELPPOLY;
typedef struct tagMULTIKEYHELPA {
	DWORD mkSize;
	CHAR mkKeylist;
	CHAR szKeyphrase[1];
} MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
typedef struct tagMULTIKEYHELPW {
	DWORD mkSize;
	WCHAR mkKeylist;
	WCHAR szKeyphrase[1];
} MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
typedef struct tagHELPWININFOA {
	int wStructSize;
	int x;
	int y;
	int dx;
	int dy;
	int wMax;
	CHAR rgchMember[2];
} HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
typedef struct tagHELPWININFOW {
	int wStructSize;
	int x;
	int y;
	int dx;
	int dy;
	int wMax;
	WCHAR rgchMember[2];
} HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
typedef struct tagSTYLESTRUCT {  
	DWORD styleOld;
	DWORD styleNew;
} STYLESTRUCT,*LPSTYLESTRUCT;
typedef struct tagALTTABINFO {
	DWORD cbSize;
	int   cItems;
	int   cColumns;
	int   cRows;
	int   iColFocus;
	int   iRowFocus;
	int   cxItem;
	int   cyItem;
	POINT ptStart;
} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
typedef struct tagCOMBOBOXINFO {
	DWORD cbSize;
	RECT rcItem;
	RECT rcButton;
	DWORD stateButton;
	HWND hwndCombo;
	HWND hwndItem;
	HWND hwndList;
} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
typedef struct tagCURSORINFO {
	DWORD cbSize;
	DWORD flags;
	HCURSOR hCursor;
	POINT ptScreenPos;
} CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
typedef struct tagMENUBARINFO {
	DWORD cbSize;
	RECT  rcBar;
	HMENU hMenu;
	HWND  hwndMenu;
	BOOL  fBarFocused:1;
	BOOL  fFocused:1;
} MENUBARINFO, *PMENUBARINFO;
typedef struct tagMENUINFO {
	DWORD cbSize;
	DWORD fMask;
	DWORD dwStyle;
	UINT cyMax;
	HBRUSH  hbrBack;
	DWORD   dwContextHelpID;
	ULONG_PTR dwMenuData;
} MENUINFO, *LPMENUINFO;
typedef MENUINFO const  *LPCMENUINFO; 

typedef struct tagSCROLLBARINFO {
	DWORD cbSize;
	RECT  rcScrollBar;
	int   dxyLineButton;
	int   xyThumbTop;
	int   xyThumbBottom;
	int   reserved;
	DWORD rgstate[5  + 1];
} SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;

typedef struct tagTITLEBARINFO {
	DWORD cbSize;
	RECT  rcTitleBar;
	DWORD rgstate[5  + 1];
} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
typedef struct tagWINDOWINFO {
	DWORD cbSize;
	RECT  rcWindow;
	RECT  rcClient;
	DWORD dwStyle;
	DWORD dwExStyle;
	DWORD dwWindowStatus;
	UINT  cxWindowBorders;
	UINT  cyWindowBorders;
	ATOM  atomWindowType;
	WORD  wCreatorVersion;
} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
typedef struct tagLASTINPUTINFO {
	UINT cbSize;
	DWORD dwTime;
} LASTINPUTINFO, * PLASTINPUTINFO;
typedef struct tagMONITORINFO {
	DWORD cbSize;
	RECT rcMonitor;
	RECT rcWork;
	DWORD dwFlags;
} MONITORINFO,*LPMONITORINFO;
typedef struct tagKBDLLHOOKSTRUCT {
	DWORD vkCode;
	DWORD scanCode;
	DWORD flags;
	DWORD time;
	DWORD dwExtraInfo;
} KBDLLHOOKSTRUCT,   *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
# 2617 "/usr/include/w32api/winuser.h" 3

typedef struct tagMOUSEMOVEPOINT {
  int x;
  int y;
  DWORD time;
  ULONG_PTR dwExtraInfo;
} MOUSEMOVEPOINT, *PMOUSEMOVEPOINT;
typedef struct tagMOUSEINPUT {
  LONG dx;
  LONG dy;
  DWORD mouseData;
  DWORD dwFlags;
  DWORD time;
  ULONG_PTR dwExtraInfo;
} MOUSEINPUT, *PMOUSEINPUT;
typedef struct tagKEYBDINPUT {
  WORD wVk;
  WORD wScan;
  DWORD dwFlags;
  DWORD time;
  ULONG_PTR dwExtraInfo;
} KEYBDINPUT, *PKEYBDINPUT;
typedef struct tagHARDWAREINPUT {
  DWORD uMsg;
  WORD wParamL;
  WORD wParamH;
} HARDWAREINPUT, *PHARDWAREINPUT;
typedef struct tagINPUT {
  DWORD type;
  __extension__  union {
		MOUSEINPUT mi;
		KEYBDINPUT ki;
		HARDWAREINPUT hi;
  }  ;
} INPUT, *PINPUT,   *LPINPUT;
typedef struct tagGUITHREADINFO {
	DWORD cbSize;
	DWORD flags;
	HWND hwndActive;
	HWND hwndFocus;
	HWND hwndCapture;
	HWND hwndMenuOwner;
	HWND hwndMoveSize;
	HWND hwndCaret;
	RECT rcCaret;
} GUITHREADINFO, *PGUITHREADINFO;




















HKL __attribute__((__stdcall__))   ActivateKeyboardLayout(HKL,UINT);
BOOL __attribute__((__stdcall__))   AdjustWindowRect(LPRECT,DWORD,BOOL);
BOOL __attribute__((__stdcall__))   AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
BOOL __attribute__((__stdcall__))   AnyPopup(void);
BOOL __attribute__((__stdcall__))   AppendMenuA(HMENU,UINT,UINT,LPCSTR);
BOOL __attribute__((__stdcall__))   AppendMenuW(HMENU,UINT,UINT,LPCWSTR);
UINT __attribute__((__stdcall__))   ArrangeIconicWindows(HWND);
BOOL __attribute__((__stdcall__))   AttachThreadInput(DWORD,DWORD,BOOL);
HDWP __attribute__((__stdcall__))   BeginDeferWindowPos(int);
HDC __attribute__((__stdcall__))   BeginPaint(HWND,LPPAINTSTRUCT);
BOOL __attribute__((__stdcall__))   BringWindowToTop(HWND);
long __attribute__((__stdcall__))   BroadcastSystemMessage(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   CallMsgFilter(PMSG,int);
LRESULT __attribute__((__stdcall__))   CallNextHookEx(HHOOK,int,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
WORD __attribute__((__stdcall__))   CascadeWindows(HWND,UINT,LPCRECT,UINT,const HWND*);
BOOL __attribute__((__stdcall__))   ChangeClipboardChain(HWND,HWND);
LONG __attribute__((__stdcall__))   ChangeDisplaySettingsA(PDEVMODEA,DWORD);
LONG __attribute__((__stdcall__))   ChangeDisplaySettingsW(PDEVMODEW,DWORD);
BOOL __attribute__((__stdcall__))   ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
BOOL __attribute__((__stdcall__))   ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
LPSTR __attribute__((__stdcall__))   CharLowerA(LPSTR);
LPWSTR __attribute__((__stdcall__))   CharLowerW(LPWSTR);
DWORD __attribute__((__stdcall__))   CharLowerBuffA(LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   CharLowerBuffW(LPWSTR,DWORD);
LPSTR __attribute__((__stdcall__))   CharNextA(LPCSTR);
LPWSTR __attribute__((__stdcall__))   CharNextW(LPCWSTR);
LPSTR __attribute__((__stdcall__))   CharNextExA(WORD,LPCSTR,DWORD);
LPWSTR __attribute__((__stdcall__))   CharNextExW(WORD,LPCWSTR,DWORD);
LPSTR __attribute__((__stdcall__))   CharPrevA(LPCSTR,LPCSTR);
LPWSTR __attribute__((__stdcall__))   CharPrevW(LPCWSTR,LPCWSTR);
LPSTR __attribute__((__stdcall__))   CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
LPWSTR __attribute__((__stdcall__))   CharPrevExW(WORD,LPCWSTR,LPCWSTR,DWORD);
BOOL __attribute__((__stdcall__))   CharToOemA(LPCSTR,LPSTR);
BOOL __attribute__((__stdcall__))   CharToOemW(LPCWSTR,LPSTR);
BOOL __attribute__((__stdcall__))   CharToOemBuffA(LPCSTR,LPSTR,DWORD);
BOOL __attribute__((__stdcall__))   CharToOemBuffW(LPCWSTR,LPSTR,DWORD);
LPSTR __attribute__((__stdcall__))   CharUpperA(LPSTR);
LPWSTR __attribute__((__stdcall__))   CharUpperW(LPWSTR);
DWORD __attribute__((__stdcall__))   CharUpperBuffA(LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   CharUpperBuffW(LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   CheckDlgButton(HWND,int,UINT);
DWORD __attribute__((__stdcall__))   CheckMenuItem(HMENU,UINT,UINT);
BOOL __attribute__((__stdcall__))   CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
BOOL __attribute__((__stdcall__))   CheckRadioButton(HWND,int,int,int);
HWND __attribute__((__stdcall__))   ChildWindowFromPoint(HWND,POINT);
HWND __attribute__((__stdcall__))   ChildWindowFromPointEx(HWND,POINT,UINT);
BOOL __attribute__((__stdcall__))   ClientToScreen(HWND,LPPOINT);
BOOL __attribute__((__stdcall__))   ClipCursor(LPCRECT);
BOOL __attribute__((__stdcall__))   CloseClipboard(void);
BOOL __attribute__((__stdcall__))   CloseDesktop(HDESK);
BOOL __attribute__((__stdcall__))   CloseWindow(HWND);
BOOL __attribute__((__stdcall__))   CloseWindowStation(HWINSTA);
int __attribute__((__stdcall__))   CopyAcceleratorTableA(HACCEL,LPACCEL,int);
int __attribute__((__stdcall__))   CopyAcceleratorTableW(HACCEL,LPACCEL,int);
HCURSOR __attribute__((__stdcall__))   CopyCursor(HCURSOR);
HICON __attribute__((__stdcall__))   CopyIcon(HICON);
HANDLE __attribute__((__stdcall__))   CopyImage(HANDLE,UINT,int,int,UINT);
BOOL __attribute__((__stdcall__))   CopyRect(LPRECT,LPCRECT);
int __attribute__((__stdcall__))   CountClipboardFormats(void);
HACCEL __attribute__((__stdcall__))   CreateAcceleratorTableA(LPACCEL,int);
HACCEL __attribute__((__stdcall__))   CreateAcceleratorTableW(LPACCEL,int);
BOOL __attribute__((__stdcall__))   CreateCaret(HWND,HBITMAP,int,int);
HCURSOR __attribute__((__stdcall__))   CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID);
HDESK __attribute__((__stdcall__))   CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
HDESK __attribute__((__stdcall__))   CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);




HWND __attribute__((__stdcall__))   CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
HWND __attribute__((__stdcall__))   CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
HWND __attribute__((__stdcall__))   CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
HWND __attribute__((__stdcall__))   CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
HICON __attribute__((__stdcall__))   CreateIcon(HINSTANCE,int,int,BYTE,BYTE,const BYTE*,const BYTE*);
HICON __attribute__((__stdcall__))   CreateIconFromResource(PBYTE,DWORD,BOOL,DWORD);
HICON __attribute__((__stdcall__))   CreateIconFromResourceEx(PBYTE,DWORD,BOOL,DWORD,int,int,UINT);
HICON __attribute__((__stdcall__))   CreateIconIndirect(PICONINFO);
HWND __attribute__((__stdcall__))   CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
HWND __attribute__((__stdcall__))   CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
HMENU __attribute__((__stdcall__))   CreateMenu(void);
HMENU __attribute__((__stdcall__))   CreatePopupMenu(void);


HWND __attribute__((__stdcall__))   CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
HWND __attribute__((__stdcall__))   CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
HWINSTA __attribute__((__stdcall__))   CreateWindowStationA(LPSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
HWINSTA __attribute__((__stdcall__))   CreateWindowStationW(LPWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
LRESULT __attribute__((__stdcall__))   DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
HDWP __attribute__((__stdcall__))   DeferWindowPos(HDWP,HWND,HWND,int,int,int,int,UINT);
LRESULT __attribute__((__stdcall__))   DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM);

LRESULT __attribute__((__stdcall__))   DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   DefWindowProcA(HWND,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   DefWindowProcW(HWND,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   DeleteMenu(HMENU,UINT,UINT);
BOOL __attribute__((__stdcall__))   DestroyAcceleratorTable(HACCEL);
BOOL __attribute__((__stdcall__))   DestroyCaret(void);
BOOL __attribute__((__stdcall__))   DestroyCursor(HCURSOR);
BOOL __attribute__((__stdcall__))   DestroyIcon(HICON);
BOOL __attribute__((__stdcall__))   DestroyMenu(HMENU);
BOOL __attribute__((__stdcall__))   DestroyWindow(HWND);




int __attribute__((__stdcall__))   DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
int __attribute__((__stdcall__))   DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
int __attribute__((__stdcall__))   DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
int __attribute__((__stdcall__))   DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
LONG __attribute__((__stdcall__))   DispatchMessageA(const MSG*);
LONG __attribute__((__stdcall__))   DispatchMessageW(const MSG*);
int __attribute__((__stdcall__))   DlgDirListA(HWND,LPSTR,int,int,UINT);
int __attribute__((__stdcall__))   DlgDirListW(HWND,LPWSTR,int,int,UINT);
int __attribute__((__stdcall__))   DlgDirListComboBoxA(HWND,LPSTR,int,int,UINT);
int __attribute__((__stdcall__))   DlgDirListComboBoxW(HWND,LPWSTR,int,int,UINT);
BOOL __attribute__((__stdcall__))   DlgDirSelectComboBoxExA(HWND,LPSTR,int,int);
BOOL __attribute__((__stdcall__))   DlgDirSelectComboBoxExW(HWND,LPWSTR,int,int);
BOOL __attribute__((__stdcall__))   DlgDirSelectExA(HWND,LPSTR,int,int);
BOOL __attribute__((__stdcall__))   DlgDirSelectExW(HWND,LPWSTR,int,int);
BOOL __attribute__((__stdcall__))   DragDetect(HWND,POINT);
DWORD __attribute__((__stdcall__))   DragObject(HWND,HWND,UINT,DWORD,HCURSOR);
BOOL __attribute__((__stdcall__))   DrawAnimatedRects(HWND,int,LPCRECT,LPCRECT);
BOOL __attribute__((__stdcall__))   DrawCaption(HWND,HDC,LPCRECT,UINT);
BOOL __attribute__((__stdcall__))   DrawEdge(HDC,LPRECT,UINT,UINT);
BOOL __attribute__((__stdcall__))   DrawFocusRect(HDC,LPCRECT);
BOOL __attribute__((__stdcall__))   DrawFrameControl(HDC,LPRECT,UINT,UINT);
BOOL __attribute__((__stdcall__))   DrawIcon(HDC,int,int,HICON);
BOOL __attribute__((__stdcall__))   DrawIconEx(HDC,int,int,HICON,int,int,UINT,HBRUSH,UINT);
BOOL __attribute__((__stdcall__))   DrawMenuBar(HWND);
BOOL __attribute__((__stdcall__))   DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
BOOL __attribute__((__stdcall__))   DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
int __attribute__((__stdcall__))   DrawTextA(HDC,LPCSTR,int,LPRECT,UINT);
int __attribute__((__stdcall__))   DrawTextW(HDC,LPCWSTR,int,LPRECT,UINT);
int __attribute__((__stdcall__))   DrawTextExA(HDC,LPSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
int __attribute__((__stdcall__))   DrawTextExW(HDC,LPWSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
BOOL __attribute__((__stdcall__))   EmptyClipboard(void);
BOOL __attribute__((__stdcall__))   EnableMenuItem(HMENU,UINT,UINT);
BOOL __attribute__((__stdcall__))   EnableScrollBar(HWND,UINT,UINT);
BOOL __attribute__((__stdcall__))   EnableWindow(HWND,BOOL);
BOOL __attribute__((__stdcall__))   EndDeferWindowPos(HDWP);
BOOL __attribute__((__stdcall__))   EndDialog(HWND,int);
BOOL __attribute__((__stdcall__))   EndMenu(void );
BOOL __attribute__((__stdcall__))   EndPaint(HWND,const PAINTSTRUCT*);
BOOL __attribute__((__stdcall__))   EnumChildWindows(HWND,ENUMWINDOWSPROC,LPARAM);
UINT __attribute__((__stdcall__))   EnumClipboardFormats(UINT);
BOOL __attribute__((__stdcall__))   EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
BOOL __attribute__((__stdcall__))   EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
BOOL __attribute__((__stdcall__))   EnumDesktopWindows(HDESK,ENUMWINDOWSPROC,LPARAM);
BOOL __attribute__((__stdcall__))   EnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
BOOL __attribute__((__stdcall__))   EnumDisplaySettingsA(LPCSTR,DWORD,PDEVMODEA);
BOOL __attribute__((__stdcall__))   EnumDisplaySettingsW(LPCWSTR,DWORD,PDEVMODEW);
int __attribute__((__stdcall__))   EnumPropsA(HWND,PROPENUMPROCA);
int __attribute__((__stdcall__))   EnumPropsW(HWND,PROPENUMPROCW);
int __attribute__((__stdcall__))   EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
int __attribute__((__stdcall__))   EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);

BOOL __attribute__((__stdcall__))   EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
BOOL __attribute__((__stdcall__))   EnumWindows(WNDENUMPROC,LPARAM);
BOOL __attribute__((__stdcall__))   EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
BOOL __attribute__((__stdcall__))   EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
BOOL __attribute__((__stdcall__))   EqualRect(LPCRECT,LPCRECT);

BOOL __attribute__((__stdcall__))   ExitWindowsEx(UINT,DWORD);
HWND __attribute__((__stdcall__))   FindWindowA(LPCSTR,LPCSTR);
HWND __attribute__((__stdcall__))   FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
HWND __attribute__((__stdcall__))   FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
HWND __attribute__((__stdcall__))   FindWindowW(LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   FlashWindow(HWND,BOOL);
int __attribute__((__stdcall__))   FrameRect(HDC,LPCRECT,HBRUSH);
BOOL __attribute__((__stdcall__))   FrameRgn(HDC,HRGN,HBRUSH,int,int);
HWND __attribute__((__stdcall__))   GetActiveWindow(void);
SHORT __attribute__((__stdcall__))   GetAsyncKeyState(int);
HWND __attribute__((__stdcall__))   GetCapture(void);
UINT __attribute__((__stdcall__))   GetCaretBlinkTime(void);
BOOL __attribute__((__stdcall__))   GetCaretPos(LPPOINT);
BOOL __attribute__((__stdcall__))   GetClassInfoA(HINSTANCE,LPCSTR,LPWNDCLASSA);
BOOL __attribute__((__stdcall__))   GetClassInfoExA(HINSTANCE,LPCSTR,LPWNDCLASSEXA);
BOOL __attribute__((__stdcall__))   GetClassInfoW(HINSTANCE,LPCWSTR,LPWNDCLASSW);
BOOL __attribute__((__stdcall__))   GetClassInfoExW(HINSTANCE,LPCWSTR,LPWNDCLASSEXW);
DWORD __attribute__((__stdcall__))   GetClassLongA(HWND,int);
DWORD __attribute__((__stdcall__))   GetClassLongW(HWND,int);
int __attribute__((__stdcall__))   GetClassNameA(HWND,LPSTR,int);
int __attribute__((__stdcall__))   GetClassNameW(HWND,LPWSTR,int);
WORD __attribute__((__stdcall__))   GetClassWord(HWND,int);
BOOL __attribute__((__stdcall__))   GetClientRect(HWND,LPRECT);
HANDLE __attribute__((__stdcall__))   GetClipboardData(UINT);
int __attribute__((__stdcall__))   GetClipboardFormatNameA(UINT,LPSTR,int);
int __attribute__((__stdcall__))   GetClipboardFormatNameW(UINT,LPWSTR,int);
HWND __attribute__((__stdcall__))   GetClipboardOwner(void);
HWND __attribute__((__stdcall__))   GetClipboardViewer(void);
BOOL __attribute__((__stdcall__))   GetClipCursor(LPRECT);
BOOL __attribute__((__stdcall__))   GetCursorPos(LPPOINT);
HDC __attribute__((__stdcall__))   GetDC(HWND);
HDC __attribute__((__stdcall__))   GetDCEx(HWND,HRGN,DWORD);
HWND __attribute__((__stdcall__))   GetDesktopWindow(void);
long __attribute__((__stdcall__))   GetDialogBaseUnits(void);
int __attribute__((__stdcall__))   GetDlgCtrlID(HWND);
HWND __attribute__((__stdcall__))   GetDlgItem(HWND,int);
UINT __attribute__((__stdcall__))   GetDlgItemInt(HWND,int,PBOOL,BOOL);
UINT __attribute__((__stdcall__))   GetDlgItemTextA(HWND,int,LPSTR,int);
UINT __attribute__((__stdcall__))   GetDlgItemTextW(HWND,int,LPWSTR,int);
UINT __attribute__((__stdcall__))   GetDoubleClickTime(void);
HWND __attribute__((__stdcall__))   GetFocus(void);
HWND __attribute__((__stdcall__))   GetForegroundWindow(void);
BOOL __attribute__((__stdcall__))   GetIconInfo(HICON,PICONINFO);
BOOL __attribute__((__stdcall__))   GetInputState(void);
UINT __attribute__((__stdcall__))   GetKBCodePage(void);
HKL __attribute__((__stdcall__))   GetKeyboardLayout(DWORD);
UINT __attribute__((__stdcall__))   GetKeyboardLayoutList(int,HKL*);
BOOL __attribute__((__stdcall__))   GetKeyboardLayoutNameA(LPSTR);
BOOL __attribute__((__stdcall__))   GetKeyboardLayoutNameW(LPWSTR);
BOOL __attribute__((__stdcall__))   GetKeyboardState(PBYTE);
int __attribute__((__stdcall__))   GetKeyboardType(int);
int __attribute__((__stdcall__))   GetKeyNameTextA(LONG,LPSTR,int);
int __attribute__((__stdcall__))   GetKeyNameTextW(LONG,LPWSTR,int);
SHORT __attribute__((__stdcall__))   GetKeyState(int);
HWND __attribute__((__stdcall__))   GetLastActivePopup(HWND);
DWORD __attribute__((__stdcall__))   GetLastError(void);
HMENU __attribute__((__stdcall__))   GetMenu(HWND);
LONG __attribute__((__stdcall__))   GetMenuCheckMarkDimensions(void);
DWORD __attribute__((__stdcall__))   GetMenuContextHelpId(HMENU);
UINT __attribute__((__stdcall__))   GetMenuDefaultItem(HMENU,UINT,UINT);
int __attribute__((__stdcall__))   GetMenuItemCount(HMENU);
UINT __attribute__((__stdcall__))   GetMenuItemID(HMENU,int);
BOOL __attribute__((__stdcall__))   GetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA);
BOOL __attribute__((__stdcall__))   GetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW);
BOOL __attribute__((__stdcall__))   GetMenuItemRect(HWND,HMENU,UINT,LPRECT);
UINT __attribute__((__stdcall__))   GetMenuState(HMENU,UINT,UINT);
int __attribute__((__stdcall__))   GetMenuStringA(HMENU,UINT,LPSTR,int,UINT);
int __attribute__((__stdcall__))   GetMenuStringW(HMENU,UINT,LPWSTR,int,UINT);
BOOL __attribute__((__stdcall__))   GetMessageA(LPMSG,HWND,UINT,UINT);
BOOL __attribute__((__stdcall__))   GetMessageW(LPMSG,HWND,UINT,UINT);
LONG __attribute__((__stdcall__))   GetMessageExtraInfo(void);
DWORD __attribute__((__stdcall__))   GetMessagePos(void);
LONG __attribute__((__stdcall__))   GetMessageTime(void);
HWND __attribute__((__stdcall__))   GetNextDlgGroupItem(HWND,HWND,BOOL);
HWND __attribute__((__stdcall__))   GetNextDlgTabItem(HWND,HWND,BOOL);

HWND __attribute__((__stdcall__))   GetOpenClipboardWindow(void);
HWND __attribute__((__stdcall__))   GetParent(HWND);
int __attribute__((__stdcall__))   GetPriorityClipboardFormat(UINT*,int);
HANDLE __attribute__((__stdcall__))   GetPropA(HWND,LPCSTR);
HANDLE __attribute__((__stdcall__))   GetPropW(HWND,LPCWSTR);
DWORD __attribute__((__stdcall__))   GetQueueStatus(UINT);
BOOL __attribute__((__stdcall__))   GetScrollInfo(HWND,int,LPSCROLLINFO);
int __attribute__((__stdcall__))   GetScrollPos(HWND,int);
BOOL __attribute__((__stdcall__))   GetScrollRange(HWND,int,LPINT,LPINT);
HMENU __attribute__((__stdcall__))   GetSubMenu(HMENU,int);
DWORD __attribute__((__stdcall__))   GetSysColor(int);
HBRUSH __attribute__((__stdcall__))   GetSysColorBrush(int);

HMENU __attribute__((__stdcall__))   GetSystemMenu(HWND,BOOL);
int __attribute__((__stdcall__))   GetSystemMetrics(int);
DWORD __attribute__((__stdcall__))   GetTabbedTextExtentA(HDC,LPCSTR,int,int,LPINT);
DWORD __attribute__((__stdcall__))   GetTabbedTextExtentW(HDC,LPCWSTR,int,int,LPINT);
LONG __attribute__((__stdcall__))   GetWindowLongA(HWND,int);
LONG __attribute__((__stdcall__))   GetWindowLongW(HWND,int);







HDESK __attribute__((__stdcall__))   GetThreadDesktop(DWORD);
HWND __attribute__((__stdcall__))   GetTopWindow(HWND);
BOOL __attribute__((__stdcall__))   GetUpdateRect(HWND,LPRECT,BOOL);
int __attribute__((__stdcall__))   GetUpdateRgn(HWND,HRGN,BOOL);
BOOL __attribute__((__stdcall__))   GetUserObjectInformationA(HANDLE,int,PVOID,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetUserObjectInformationW(HANDLE,int,PVOID,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
HWND __attribute__((__stdcall__))   GetWindow(HWND,UINT);
DWORD __attribute__((__stdcall__))   GetWindowContextHelpId(HWND);
HDC __attribute__((__stdcall__))   GetWindowDC(HWND);
BOOL __attribute__((__stdcall__))   GetWindowExtEx(HDC,LPSIZE);
BOOL __attribute__((__stdcall__))   GetWindowPlacement(HWND,WINDOWPLACEMENT*);
BOOL __attribute__((__stdcall__))   GetWindowRect(HWND,LPRECT);
int __attribute__((__stdcall__))   GetWindowRgn(HWND,HRGN);

int __attribute__((__stdcall__))   GetWindowTextA(HWND,LPSTR,int);
int __attribute__((__stdcall__))   GetWindowTextLengthA(HWND);
int __attribute__((__stdcall__))   GetWindowTextLengthW(HWND);
int __attribute__((__stdcall__))   GetWindowTextW(HWND,LPWSTR,int);
WORD __attribute__((__stdcall__))   GetWindowWord(HWND,int);
BOOL __attribute__((__stdcall__))   GetAltTabInfoA(HWND,int,PALTTABINFO,LPSTR,UINT);
BOOL __attribute__((__stdcall__))   GetAltTabInfoW(HWND,int,PALTTABINFO,LPWSTR,UINT);
BOOL __attribute__((__stdcall__))   GetComboBoxInfo(HWND,PCOMBOBOXINFO);
BOOL __attribute__((__stdcall__))   GetCursorInfo(PCURSORINFO);
BOOL __attribute__((__stdcall__))   GetLastInputInfo(PLASTINPUTINFO);
DWORD __attribute__((__stdcall__))   GetListBoxInfo(HWND);
BOOL __attribute__((__stdcall__))   GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
BOOL __attribute__((__stdcall__))   GetMenuInfo(HMENU,LPMENUINFO);
BOOL __attribute__((__stdcall__))   GetScrollBarInfo(HWND,LONG,PSCROLLBARINFO);
BOOL __attribute__((__stdcall__))   GetTitleBarInfo(HWND,PTITLEBARINFO);
BOOL __attribute__((__stdcall__))   GetWindowInfo(HWND,PWINDOWINFO);
BOOL __attribute__((__stdcall__))   GetMonitorInfoA(HMONITOR,LPMONITORINFO);
BOOL __attribute__((__stdcall__))   GetMonitorInfoW(HMONITOR,LPMONITORINFO);
UINT __attribute__((__stdcall__))   GetWindowModuleFileNameA(HWND,LPSTR,UINT);
UINT __attribute__((__stdcall__))   GetWindowModuleFileNameW(HWND,LPWSTR,UINT);
BOOL __attribute__((__stdcall__))   GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
BOOL __attribute__((__stdcall__))   GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
BOOL __attribute__((__stdcall__))   HideCaret(HWND);
BOOL __attribute__((__stdcall__))   HiliteMenuItem(HWND,HMENU,UINT,UINT);
BOOL __attribute__((__stdcall__))   InflateRect(LPRECT,int,int);
BOOL __attribute__((__stdcall__))   InSendMessage(void );
BOOL __attribute__((__stdcall__))   InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
BOOL __attribute__((__stdcall__))   InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
BOOL __attribute__((__stdcall__))   InsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
BOOL __attribute__((__stdcall__))   InsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);
BOOL __attribute__((__stdcall__))   IntersectRect(LPRECT,LPCRECT,LPCRECT);
BOOL __attribute__((__stdcall__))   InvalidateRect(HWND,LPCRECT,BOOL);
BOOL __attribute__((__stdcall__))   InvalidateRgn(HWND,HRGN,BOOL);
BOOL __attribute__((__stdcall__))   InvertRect(HDC,LPCRECT);
BOOL __attribute__((__stdcall__))   IsCharAlphaA(CHAR ch);
BOOL __attribute__((__stdcall__))   IsCharAlphaNumericA(CHAR);
BOOL __attribute__((__stdcall__))   IsCharAlphaNumericW(WCHAR);
BOOL __attribute__((__stdcall__))   IsCharAlphaW(WCHAR);
BOOL __attribute__((__stdcall__))   IsCharLowerA(CHAR);
BOOL __attribute__((__stdcall__))   IsCharLowerW(WCHAR);
BOOL __attribute__((__stdcall__))   IsCharUpperA(CHAR);
BOOL __attribute__((__stdcall__))   IsCharUpperW(WCHAR);
BOOL __attribute__((__stdcall__))   IsChild(HWND,HWND);
BOOL __attribute__((__stdcall__))   IsClipboardFormatAvailable(UINT);
BOOL __attribute__((__stdcall__))   IsDialogMessageA(HWND,LPMSG);
BOOL __attribute__((__stdcall__))   IsDialogMessageW(HWND,LPMSG);
UINT __attribute__((__stdcall__))   IsDlgButtonChecked(HWND,int);
BOOL __attribute__((__stdcall__))   IsIconic(HWND);
BOOL __attribute__((__stdcall__))   IsMenu(HMENU);
BOOL __attribute__((__stdcall__))   IsRectEmpty(LPCRECT);
BOOL __attribute__((__stdcall__))   IsWindow(HWND);
BOOL __attribute__((__stdcall__))   IsWindowEnabled(HWND);
BOOL __attribute__((__stdcall__))   IsWindowUnicode(HWND);
BOOL __attribute__((__stdcall__))   IsWindowVisible(HWND);
BOOL __attribute__((__stdcall__))   IsZoomed(HWND);
void  __attribute__((__stdcall__))   keybd_event(BYTE,BYTE,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   KillTimer(HWND,UINT);
HACCEL __attribute__((__stdcall__))   LoadAcceleratorsA(HINSTANCE,LPCSTR);
HACCEL __attribute__((__stdcall__))   LoadAcceleratorsW(HINSTANCE,LPCWSTR);
HBITMAP __attribute__((__stdcall__))   LoadBitmapA(HINSTANCE,LPCSTR);
HBITMAP __attribute__((__stdcall__))   LoadBitmapW(HINSTANCE,LPCWSTR);
HCURSOR __attribute__((__stdcall__))   LoadCursorA(HINSTANCE,LPCSTR);
HCURSOR __attribute__((__stdcall__))   LoadCursorFromFileA(LPCSTR);
HCURSOR __attribute__((__stdcall__))   LoadCursorFromFileW(LPCWSTR);
HCURSOR __attribute__((__stdcall__))   LoadCursorW(HINSTANCE,LPCWSTR);
HICON __attribute__((__stdcall__))   LoadIconA(HINSTANCE,LPCSTR);
HICON __attribute__((__stdcall__))   LoadIconW(HINSTANCE,LPCWSTR);
HANDLE __attribute__((__stdcall__))   LoadImageA(HINSTANCE,LPCSTR,UINT,int,int,UINT);
HANDLE __attribute__((__stdcall__))   LoadImageW(HINSTANCE,LPCWSTR,UINT,int,int,UINT);
HKL __attribute__((__stdcall__))   LoadKeyboardLayoutA(LPCSTR,UINT);
HKL __attribute__((__stdcall__))   LoadKeyboardLayoutW(LPCWSTR,UINT);
HMENU __attribute__((__stdcall__))   LoadMenuA(HINSTANCE,LPCSTR);
HMENU __attribute__((__stdcall__))   LoadMenuIndirectA(const MENUTEMPLATE*);
HMENU __attribute__((__stdcall__))   LoadMenuIndirectW(const MENUTEMPLATE*);
HMENU __attribute__((__stdcall__))   LoadMenuW(HINSTANCE,LPCWSTR);
int __attribute__((__stdcall__))   LoadStringA(HINSTANCE,UINT,LPSTR,int);
int __attribute__((__stdcall__))   LoadStringW(HINSTANCE,UINT,LPWSTR,int);
BOOL __attribute__((__stdcall__))   LockWindowUpdate(HWND);
int __attribute__((__stdcall__))   LookupIconIdFromDirectory(PBYTE,BOOL);
int __attribute__((__stdcall__))   LookupIconIdFromDirectoryEx(PBYTE,BOOL,int,int,UINT);
BOOL __attribute__((__stdcall__))   MapDialogRect(HWND,LPRECT);
UINT __attribute__((__stdcall__))   MapVirtualKeyA(UINT,UINT);
UINT __attribute__((__stdcall__))   MapVirtualKeyExA(UINT,UINT,HKL);
UINT __attribute__((__stdcall__))   MapVirtualKeyExW(UINT,UINT,HKL);
UINT __attribute__((__stdcall__))   MapVirtualKeyW(UINT,UINT);
int __attribute__((__stdcall__))   MapWindowPoints(HWND,HWND,LPPOINT,UINT);
int __attribute__((__stdcall__))   MenuItemFromPoint(HWND,HMENU,POINT);
BOOL __attribute__((__stdcall__))   MessageBeep(UINT);
int __attribute__((__stdcall__))   MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
int __attribute__((__stdcall__))   MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
int __attribute__((__stdcall__))   MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
int __attribute__((__stdcall__))   MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
int __attribute__((__stdcall__))   MessageBoxIndirectA(const  MSGBOXPARAMSA*);
int __attribute__((__stdcall__))   MessageBoxIndirectW(const  MSGBOXPARAMSW*);
BOOL __attribute__((__stdcall__))   ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
BOOL __attribute__((__stdcall__))   ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
void __attribute__((__stdcall__))   mouse_event(DWORD,DWORD,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   MoveWindow(HWND,int,int,int,int,BOOL);
DWORD __attribute__((__stdcall__))   MsgWaitForMultipleObjects(DWORD,const  HANDLE*,BOOL,DWORD,DWORD);
DWORD __attribute__((__stdcall__))   MsgWaitForMultipleObjectsEx(DWORD,const  HANDLE*,DWORD,DWORD,DWORD);
DWORD __attribute__((__stdcall__))   OemKeyScan(WORD);
BOOL __attribute__((__stdcall__))   OemToCharA(LPCSTR,LPSTR);
BOOL __attribute__((__stdcall__))   OemToCharBuffA(LPCSTR,LPSTR,DWORD);
BOOL __attribute__((__stdcall__))   OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   OemToCharW(LPCSTR,LPWSTR);
BOOL __attribute__((__stdcall__))   OffsetRect(LPRECT,int,int);
BOOL __attribute__((__stdcall__))   OpenClipboard(HWND);
HDESK __attribute__((__stdcall__))   OpenDesktopA(LPSTR,DWORD,BOOL,DWORD);
HDESK __attribute__((__stdcall__))   OpenDesktopW(LPWSTR,DWORD,BOOL,DWORD);
BOOL __attribute__((__stdcall__))   OpenIcon(HWND);
HDESK __attribute__((__stdcall__))   OpenInputDesktop(DWORD,BOOL,DWORD);
HWINSTA __attribute__((__stdcall__))   OpenWindowStationA(LPSTR,BOOL,DWORD);
HWINSTA __attribute__((__stdcall__))   OpenWindowStationW(LPWSTR,BOOL,DWORD);
BOOL __attribute__((__stdcall__))   PaintDesktop(HDC);
BOOL __attribute__((__stdcall__))   PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
BOOL __attribute__((__stdcall__))   PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);


BOOL __attribute__((__stdcall__))   PostMessageA(HWND,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   PostMessageW(HWND,UINT,WPARAM,LPARAM);
void __attribute__((__stdcall__))   PostQuitMessage(int);
BOOL __attribute__((__stdcall__))   PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   PtInRect(LPCRECT,POINT);
BOOL __attribute__((__stdcall__))   RedrawWindow(HWND,LPCRECT,HRGN,UINT);
ATOM __attribute__((__stdcall__))   RegisterClassA(const  WNDCLASSA*);
ATOM __attribute__((__stdcall__))   RegisterClassW(const  WNDCLASSW*);
ATOM __attribute__((__stdcall__))   RegisterClassExA(const  WNDCLASSEXA*);
ATOM __attribute__((__stdcall__))   RegisterClassExW(const  WNDCLASSEXW*);
UINT __attribute__((__stdcall__))   RegisterClipboardFormatA(LPCSTR);
UINT __attribute__((__stdcall__))   RegisterClipboardFormatW(LPCWSTR);
BOOL __attribute__((__stdcall__))   RegisterHotKey(HWND,int,UINT,UINT);
UINT __attribute__((__stdcall__))   RegisterWindowMessageA(LPCSTR);
UINT __attribute__((__stdcall__))   RegisterWindowMessageW(LPCWSTR);
BOOL __attribute__((__stdcall__))   ReleaseCapture(void);
int __attribute__((__stdcall__))   ReleaseDC(HWND,HDC);
BOOL __attribute__((__stdcall__))   RemoveMenu(HMENU,UINT,UINT);
HANDLE __attribute__((__stdcall__))   RemovePropA(HWND,LPCSTR);
HANDLE __attribute__((__stdcall__))   RemovePropW(HWND,LPCWSTR);
BOOL __attribute__((__stdcall__))   ReplyMessage(LRESULT);
BOOL __attribute__((__stdcall__))   ScreenToClient(HWND,LPPOINT);
BOOL __attribute__((__stdcall__))   ScrollDC(HDC,int,int,LPCRECT,LPCRECT,HRGN,LPRECT);
BOOL __attribute__((__stdcall__))   ScrollWindow(HWND,int,int,LPCRECT,LPCRECT);
int __attribute__((__stdcall__))   ScrollWindowEx(HWND,int,int,LPCRECT,LPCRECT,HRGN,LPRECT,UINT);
LONG __attribute__((__stdcall__))   SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM);
LONG __attribute__((__stdcall__))   SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM);
LRESULT __attribute__((__stdcall__))   SendMessageA(HWND,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
BOOL __attribute__((__stdcall__))   SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
LRESULT __attribute__((__stdcall__))   SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
LRESULT __attribute__((__stdcall__))   SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
LRESULT __attribute__((__stdcall__))   SendMessageW(HWND,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
HWND __attribute__((__stdcall__))   SetActiveWindow(HWND);
HWND __attribute__((__stdcall__))   SetCapture(HWND hWnd);
BOOL __attribute__((__stdcall__))   SetCaretBlinkTime(UINT);
BOOL __attribute__((__stdcall__))   SetCaretPos(int,int);
DWORD __attribute__((__stdcall__))   SetClassLongA(HWND,int,LONG);
DWORD __attribute__((__stdcall__))   SetClassLongW(HWND,int,LONG);
WORD __attribute__((__stdcall__))   SetClassWord(HWND,int,WORD);
HANDLE __attribute__((__stdcall__))   SetClipboardData(UINT,HANDLE);
HWND __attribute__((__stdcall__))   SetClipboardViewer(HWND);
HCURSOR __attribute__((__stdcall__))   SetCursor(HCURSOR);
BOOL __attribute__((__stdcall__))   SetCursorPos(int,int);
void  __attribute__((__stdcall__))   SetDebugErrorLevel(DWORD);
BOOL __attribute__((__stdcall__))   SetDlgItemInt(HWND,int,UINT,BOOL);
BOOL __attribute__((__stdcall__))   SetDlgItemTextA(HWND,int,LPCSTR);
BOOL __attribute__((__stdcall__))   SetDlgItemTextW(HWND,int,LPCWSTR);
BOOL __attribute__((__stdcall__))   SetDoubleClickTime(UINT);
HWND __attribute__((__stdcall__))   SetFocus(HWND);
BOOL __attribute__((__stdcall__))   SetForegroundWindow(HWND);
BOOL __attribute__((__stdcall__))   SetKeyboardState(PBYTE);
BOOL __attribute__((__stdcall__))   SetMenu(HWND,HMENU);
BOOL __attribute__((__stdcall__))   SetMenuContextHelpId(HMENU,DWORD);
BOOL __attribute__((__stdcall__))   SetMenuDefaultItem(HMENU,UINT,UINT);
BOOL __attribute__((__stdcall__))   SetMenuInfo(HMENU,LPCMENUINFO);
BOOL __attribute__((__stdcall__))   SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
BOOL __attribute__((__stdcall__))   SetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
BOOL __attribute__((__stdcall__))   SetMenuItemInfoW( HMENU,UINT,BOOL,LPCMENUITEMINFOW);
LPARAM __attribute__((__stdcall__))   SetMessageExtraInfo(LPARAM);
BOOL __attribute__((__stdcall__))   SetMessageQueue(int);
HWND __attribute__((__stdcall__))   SetParent(HWND,HWND);
BOOL __attribute__((__stdcall__))   SetProcessWindowStation(HWINSTA);
BOOL __attribute__((__stdcall__))   SetPropA(HWND,LPCSTR,HANDLE);
BOOL __attribute__((__stdcall__))   SetPropW(HWND,LPCWSTR,HANDLE);
BOOL __attribute__((__stdcall__))   SetRect(LPRECT,int,int,int,int);
BOOL __attribute__((__stdcall__))   SetRectEmpty(LPRECT);
int __attribute__((__stdcall__))   SetScrollInfo(HWND,int,LPCSCROLLINFO,BOOL);
int __attribute__((__stdcall__))   SetScrollPos(HWND,int,int,BOOL);
BOOL __attribute__((__stdcall__))   SetScrollRange(HWND,int,int,int,BOOL);
BOOL __attribute__((__stdcall__))   SetSysColors(int,const INT *,const COLORREF *);

BOOL __attribute__((__stdcall__))   SetSystemCursor(HCURSOR,DWORD);
BOOL __attribute__((__stdcall__))   SetThreadDesktop(HDESK);
UINT __attribute__((__stdcall__))   SetTimer(HWND,UINT,UINT,TIMERPROC);
BOOL __attribute__((__stdcall__))   SetUserObjectInformationA(HANDLE,int,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   SetUserObjectInformationW(HANDLE,int,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
BOOL __attribute__((__stdcall__))   SetWindowContextHelpId(HWND,DWORD);
LONG __attribute__((__stdcall__))   SetWindowLongA(HWND,int,LONG);
LONG __attribute__((__stdcall__))   SetWindowLongW(HWND,int,LONG);







BOOL __attribute__((__stdcall__))   SetWindowPlacement(HWND hWnd,const WINDOWPLACEMENT*);
BOOL __attribute__((__stdcall__))   SetWindowPos(HWND,HWND,int,int,int,int,UINT);
int __attribute__((__stdcall__))   SetWindowRgn(HWND,HRGN,BOOL);
HOOKPROC __attribute__((__stdcall__))   SetWindowsHookA(int,HOOKPROC);
HHOOK __attribute__((__stdcall__))   SetWindowsHookExA(int,HOOKPROC,HINSTANCE,DWORD);
HHOOK __attribute__((__stdcall__))   SetWindowsHookExW(int,HOOKPROC,HINSTANCE,DWORD);
BOOL __attribute__((__stdcall__))   SetWindowTextA(HWND,LPCSTR);
BOOL __attribute__((__stdcall__))   SetWindowTextW(HWND,LPCWSTR);
WORD __attribute__((__stdcall__))   SetWindowWord(HWND,int,WORD);
BOOL __attribute__((__stdcall__))   ShowCaret(HWND);
int __attribute__((__stdcall__))   ShowCursor(BOOL);
BOOL __attribute__((__stdcall__))   ShowOwnedPopups(HWND,BOOL);
BOOL __attribute__((__stdcall__))   ShowScrollBar(HWND,int,BOOL);
BOOL __attribute__((__stdcall__))   ShowWindow(HWND,int);
BOOL __attribute__((__stdcall__))   ShowWindowAsync(HWND,int);
BOOL __attribute__((__stdcall__))   SubtractRect(LPRECT,LPCRECT,LPCRECT);
BOOL __attribute__((__stdcall__))   SwapMouseButton(BOOL);
BOOL __attribute__((__stdcall__))   SwitchDesktop(HDESK);
BOOL __attribute__((__stdcall__))   SystemParametersInfoA(UINT,UINT,PVOID,UINT);
BOOL __attribute__((__stdcall__))   SystemParametersInfoW(UINT,UINT,PVOID,UINT);
LONG __attribute__((__stdcall__))   TabbedTextOutA(HDC,int,int,LPCSTR,int,int,LPINT,int);
LONG __attribute__((__stdcall__))   TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,LPINT,int);
WORD __attribute__((__stdcall__))   TileWindows(HWND,UINT,LPCRECT,UINT,const HWND *);
int __attribute__((__stdcall__))   ToAscii(UINT,UINT,PBYTE,LPWORD,UINT);
int __attribute__((__stdcall__))   ToAsciiEx(UINT,UINT,PBYTE,LPWORD,UINT,HKL);
int __attribute__((__stdcall__))   ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT);
int __attribute__((__stdcall__))   ToUnicodeEx(UINT,UINT,PBYTE,LPWSTR,int,UINT,HKL);
BOOL __attribute__((__stdcall__))   TrackMouseEvent(LPTRACKMOUSEEVENT);
BOOL __attribute__((__stdcall__))   TrackPopupMenu(HMENU,UINT,int,int,int,HWND,LPCRECT);
BOOL __attribute__((__stdcall__))   TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
int __attribute__((__stdcall__))   TranslateAcceleratorA(HWND,HACCEL,LPMSG);
int __attribute__((__stdcall__))   TranslateAcceleratorW(HWND,HACCEL,LPMSG);
BOOL __attribute__((__stdcall__))   TranslateMDISysAccel(HWND,LPMSG);
BOOL __attribute__((__stdcall__))   TranslateMessage(const MSG*);
BOOL __attribute__((__stdcall__))   UnhookWindowsHook(int,HOOKPROC);
BOOL __attribute__((__stdcall__))   UnhookWindowsHookEx(HHOOK);
BOOL __attribute__((__stdcall__))   UnionRect(LPRECT,LPCRECT,LPCRECT);
BOOL __attribute__((__stdcall__))   UnloadKeyboardLayout(HKL);
BOOL __attribute__((__stdcall__))   UnregisterClassA(LPCSTR,HINSTANCE);
BOOL __attribute__((__stdcall__))   UnregisterClassW(LPCWSTR,HINSTANCE);
BOOL __attribute__((__stdcall__))   UnregisterHotKey(HWND,int);
BOOL __attribute__((__stdcall__))   UpdateWindow(HWND);
BOOL __attribute__((__stdcall__))   ValidateRect(HWND,LPCRECT);
BOOL __attribute__((__stdcall__))   ValidateRgn(HWND,HRGN);
SHORT __attribute__((__stdcall__))   VkKeyScanA(CHAR);
SHORT __attribute__((__stdcall__))   VkKeyScanExA(CHAR,HKL);
SHORT __attribute__((__stdcall__))   VkKeyScanExW(WCHAR,HKL);
SHORT __attribute__((__stdcall__))   VkKeyScanW(WCHAR);
DWORD __attribute__((__stdcall__))   WaitForInputIdle(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   WaitMessage(void);
HWND __attribute__((__stdcall__))   WindowFromDC(HDC hDC);
HWND __attribute__((__stdcall__))   WindowFromPoint(POINT);
UINT __attribute__((__stdcall__))   WinExec(LPCSTR,UINT);
BOOL __attribute__((__stdcall__))   WinHelpA(HWND,LPCSTR,UINT,DWORD);
BOOL __attribute__((__stdcall__))   WinHelpW(HWND,LPCWSTR,UINT,DWORD);
int __attribute__((__cdecl__))   wsprintfA(LPSTR,LPCSTR,...);
int __attribute__((__cdecl__))   wsprintfW(LPWSTR,LPCWSTR,...);
int __attribute__((__stdcall__))   wvsprintfA(LPSTR,LPCSTR,va_list arglist);
int __attribute__((__stdcall__))   wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);

# 3389 "/usr/include/w32api/winuser.h" 3









typedef WNDCLASSA WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
typedef WNDCLASSEXA WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
typedef MENUITEMINFOA MENUITEMINFO,*LPMENUITEMINFO;
typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
typedef MSGBOXPARAMSA MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
typedef HIGHCONTRASTA HIGHCONTRAST,*LPHIGHCONTRAST;
typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
typedef SERIALKEYSA SERIALKEYS,*LPSERIALKEYS;
typedef SOUNDSENTRYA SOUNDSENTRY,*LPSOUNDSENTRY;
typedef CREATESTRUCTA CREATESTRUCT, *LPCREATESTRUCT;
typedef CBT_CREATEWNDA CBT_CREATEWND, *LPCBT_CREATEWND;
typedef MDICREATESTRUCTA MDICREATESTRUCT,*LPMDICREATESTRUCT;
typedef MULTIKEYHELPA MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;





































































































































}


# 56 "/usr/include/w32api/windows.h" 2 3



# 1 "/usr/include/w32api/winnls.h" 1 3







extern "C" {





































































































































































































































































































































































































# 416 "/usr/include/w32api/winnls.h" 3






typedef DWORD LCTYPE;
typedef DWORD CALTYPE;
typedef DWORD CALID;
typedef DWORD LGRPID;
typedef BOOL (__attribute__((__stdcall__))   *CALINFO_ENUMPROCA)(LPSTR);
typedef BOOL (__attribute__((__stdcall__))   *CALINFO_ENUMPROCW)(LPWSTR);
typedef BOOL (__attribute__((__stdcall__))  * CALINFO_ENUMPROCEXA)(LPSTR, CALID);
typedef BOOL (__attribute__((__stdcall__))  * CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
typedef BOOL (__attribute__((__stdcall__))  * LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
typedef BOOL (__attribute__((__stdcall__))  * LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
typedef BOOL (__attribute__((__stdcall__))  * LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
typedef BOOL (__attribute__((__stdcall__))  * LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
typedef BOOL (__attribute__((__stdcall__))  * UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
typedef BOOL (__attribute__((__stdcall__))  * UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
typedef BOOL (__attribute__((__stdcall__))   *LOCALE_ENUMPROCA)(LPSTR);
typedef BOOL (__attribute__((__stdcall__))   *LOCALE_ENUMPROCW)(LPWSTR);
typedef BOOL (__attribute__((__stdcall__))   *CODEPAGE_ENUMPROCA)(LPSTR);
typedef BOOL (__attribute__((__stdcall__))   *CODEPAGE_ENUMPROCW)(LPWSTR);
typedef BOOL (__attribute__((__stdcall__))   *DATEFMT_ENUMPROCA)(LPSTR);
typedef BOOL (__attribute__((__stdcall__))   *DATEFMT_ENUMPROCW)(LPWSTR);
typedef BOOL (__attribute__((__stdcall__))  * DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
typedef BOOL (__attribute__((__stdcall__))  * DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
typedef BOOL (__attribute__((__stdcall__))   *TIMEFMT_ENUMPROCA)(LPSTR);
typedef BOOL (__attribute__((__stdcall__))   *TIMEFMT_ENUMPROCW)(LPWSTR);

typedef struct _cpinfo {
	UINT MaxCharSize;
	BYTE DefaultChar[2 ];
	BYTE LeadByte[12 ];
} CPINFO,*LPCPINFO;
typedef struct _cpinfoexA {
    UINT MaxCharSize;
    BYTE DefaultChar[2 ];
    BYTE LeadByte[12 ];
    WCHAR UnicodeDefaultChar;
    UINT CodePage;
    CHAR CodePageName[260 ];
} CPINFOEXA, *LPCPINFOEXA;
typedef struct _cpinfoexW {
    UINT MaxCharSize;
    BYTE DefaultChar[2 ];
    BYTE LeadByte[12 ];
    WCHAR UnicodeDefaultChar;
    UINT CodePage;
    WCHAR CodePageName[260 ];
} CPINFOEXW, *LPCPINFOEXW;
typedef struct _currencyfmtA {
	UINT NumDigits;
	UINT LeadingZero;
	UINT Grouping;
	LPSTR lpDecimalSep;
	LPSTR lpThousandSep;
	UINT NegativeOrder;
	UINT PositiveOrder;
	LPSTR lpCurrencySymbol;
} CURRENCYFMTA, *LPCURRENCYFMTA;
typedef struct _currencyfmtW {
	UINT NumDigits;
	UINT LeadingZero;
	UINT Grouping;
	LPWSTR lpDecimalSep;
	LPWSTR lpThousandSep;
	UINT NegativeOrder;
	UINT PositiveOrder;
	LPWSTR lpCurrencySymbol;
} CURRENCYFMTW, *LPCURRENCYFMTW;
typedef struct _numberfmtA {
	UINT NumDigits;
	UINT LeadingZero;
	UINT Grouping;
	LPSTR lpDecimalSep;
	LPSTR lpThousandSep;
	UINT NegativeOrder;
} NUMBERFMTA, *LPNUMBERFMTA;
typedef struct _numberfmtW {
	UINT NumDigits;
	UINT LeadingZero;
	UINT Grouping;
	LPWSTR lpDecimalSep;
	LPWSTR lpThousandSep;
	UINT NegativeOrder;
} NUMBERFMTW, *LPNUMBERFMTW;

int __attribute__((__stdcall__))   CompareStringA(LCID,DWORD,LPCSTR,int,LPCSTR,int);
int __attribute__((__stdcall__))   CompareStringW(LCID,DWORD,LPCWSTR,int,LPCWSTR,int);
LCID __attribute__((__stdcall__))   ConvertDefaultLocale(LCID);
BOOL __attribute__((__stdcall__))   EnumCalendarInfoA(CALINFO_ENUMPROCA,LCID,CALID,CALTYPE);
BOOL __attribute__((__stdcall__))   EnumCalendarInfoW(CALINFO_ENUMPROCW,LCID,CALID,CALTYPE);
BOOL __attribute__((__stdcall__))   EnumDateFormatsA(DATEFMT_ENUMPROCA,LCID,DWORD);
BOOL __attribute__((__stdcall__))   EnumDateFormatsW(DATEFMT_ENUMPROCW,LCID,DWORD);
BOOL __attribute__((__stdcall__))   EnumSystemCodePagesA(CODEPAGE_ENUMPROCA,DWORD);
BOOL __attribute__((__stdcall__))   EnumSystemCodePagesW(CODEPAGE_ENUMPROCW,DWORD);
BOOL __attribute__((__stdcall__))   EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD);
BOOL __attribute__((__stdcall__))   EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD);
BOOL __attribute__((__stdcall__))   EnumTimeFormatsA(TIMEFMT_ENUMPROCA,LCID,DWORD);
BOOL __attribute__((__stdcall__))   EnumTimeFormatsW(TIMEFMT_ENUMPROCW,LCID,DWORD);
int __attribute__((__stdcall__))   FoldStringA(DWORD,LPCSTR,int,LPSTR,int);
int __attribute__((__stdcall__))   FoldStringW(DWORD,LPCWSTR,int,LPWSTR,int);
UINT __attribute__((__stdcall__))   GetACP(void);
BOOL __attribute__((__stdcall__))   GetCPInfo(UINT,LPCPINFO);
BOOL __attribute__((__stdcall__))   GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
BOOL __attribute__((__stdcall__))   GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
int __attribute__((__stdcall__))   GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,int);
int __attribute__((__stdcall__))   GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int);
int __attribute__((__stdcall__))   GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
int __attribute__((__stdcall__))   GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
int __attribute__((__stdcall__))   GetLocaleInfoA(LCID,LCTYPE,LPSTR,int);
int __attribute__((__stdcall__))   GetLocaleInfoW(LCID,LCTYPE,LPWSTR,int);
int __attribute__((__stdcall__))   GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int);
int __attribute__((__stdcall__))   GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int);
UINT __attribute__((__stdcall__))   GetOEMCP(void);
BOOL __attribute__((__stdcall__))   GetStringTypeA(LCID,DWORD,LPCSTR,int,LPWORD);
BOOL __attribute__((__stdcall__))   GetStringTypeW(DWORD,LPCWSTR,int,LPWORD);
BOOL __attribute__((__stdcall__))   GetStringTypeExA(LCID,DWORD,LPCSTR,int,LPWORD);
BOOL __attribute__((__stdcall__))   GetStringTypeExW(LCID,DWORD,LPCWSTR,int,LPWORD);
LANGID __attribute__((__stdcall__))   GetSystemDefaultLangID(void);
LCID __attribute__((__stdcall__))   GetSystemDefaultLCID(void);
LCID __attribute__((__stdcall__))   GetThreadLocale(void);
int __attribute__((__stdcall__))   GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
int __attribute__((__stdcall__))   GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
LANGID __attribute__((__stdcall__))   GetUserDefaultLangID(void);
LCID __attribute__((__stdcall__))   GetUserDefaultLCID(void);
BOOL __attribute__((__stdcall__))   IsDBCSLeadByte(BYTE);
BOOL __attribute__((__stdcall__))   IsDBCSLeadByteEx(UINT,BYTE);
BOOL __attribute__((__stdcall__))   IsValidCodePage(UINT);
BOOL __attribute__((__stdcall__))   IsValidLocale(LCID,DWORD);
int __attribute__((__stdcall__))   LCMapStringA(LCID,DWORD,LPCSTR,int,LPSTR,int);
int __attribute__((__stdcall__))   LCMapStringW(LCID,DWORD,LPCWSTR,int,LPWSTR,int);
int __attribute__((__stdcall__))   MultiByteToWideChar(UINT,DWORD,LPCSTR,int,LPWSTR,int);
BOOL __attribute__((__stdcall__))   SetLocaleInfoA(LCID,LCTYPE,LPCSTR);
BOOL __attribute__((__stdcall__))   SetLocaleInfoW(LCID,LCTYPE,LPCWSTR);
BOOL __attribute__((__stdcall__))   SetThreadLocale(LCID);
int __attribute__((__stdcall__))   WideCharToMultiByte(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
# 569 "/usr/include/w32api/winnls.h" 3


# 610 "/usr/include/w32api/winnls.h" 3











typedef CPINFOEXA CPINFOEX;
typedef LPCPINFOEXA LPCPINFOEX;
typedef CURRENCYFMTA CURRENCYFMT;
typedef LPCURRENCYFMTA LPCURRENCYFMT;
typedef NUMBERFMTA NUMBERFMT;
typedef LPNUMBERFMTA LPNUMBERFMT;

























}


# 59 "/usr/include/w32api/windows.h" 2 3



# 1 "/usr/include/w32api/winver.h" 1 3







extern "C" {












































































typedef struct tagVS_FIXEDFILEINFO {
	DWORD dwSignature;
	DWORD dwStrucVersion;
	DWORD dwFileVersionMS;
	DWORD dwFileVersionLS;
	DWORD dwProductVersionMS;
	DWORD dwProductVersionLS;
	DWORD dwFileFlagsMask;
	DWORD dwFileFlags;
	DWORD dwFileOS;
	DWORD dwFileType;
	DWORD dwFileSubtype;
	DWORD dwFileDateMS;
	DWORD dwFileDateLS;
} VS_FIXEDFILEINFO;
DWORD __attribute__((__stdcall__))   VerFindFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,PUINT,LPSTR,PUINT);
DWORD __attribute__((__stdcall__))   VerFindFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT,LPWSTR,PUINT);
DWORD __attribute__((__stdcall__))   VerInstallFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,PUINT);
DWORD __attribute__((__stdcall__))   VerInstallFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT);
DWORD __attribute__((__stdcall__))   GetFileVersionInfoSizeA(LPSTR,PDWORD);
DWORD __attribute__((__stdcall__))   GetFileVersionInfoSizeW(LPWSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetFileVersionInfoA(LPSTR,DWORD,DWORD,PVOID);
BOOL __attribute__((__stdcall__))   GetFileVersionInfoW(LPWSTR,DWORD,DWORD,PVOID);
DWORD __attribute__((__stdcall__))   VerLanguageNameA(DWORD,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   VerLanguageNameW(DWORD,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   VerQueryValueA(const LPVOID,LPSTR,LPVOID*,PUINT);
BOOL __attribute__((__stdcall__))   VerQueryValueW(const LPVOID,LPWSTR,LPVOID*,PUINT);
# 120 "/usr/include/w32api/winver.h" 3











}


# 62 "/usr/include/w32api/windows.h" 2 3



# 1 "/usr/include/w32api/winnetwk.h" 1 3







extern "C" {























































































































































typedef struct _NETRESOURCEA {
	DWORD dwScope;
	DWORD dwType;
	DWORD dwDisplayType;
	DWORD dwUsage;
	LPSTR lpLocalName;
	LPSTR lpRemoteName;
	LPSTR lpComment ;
	LPSTR lpProvider;
}NETRESOURCEA,*LPNETRESOURCEA;
typedef struct _NETRESOURCEW {
	DWORD dwScope;
	DWORD dwType;
	DWORD dwDisplayType;
	DWORD dwUsage;
	LPWSTR lpLocalName;
	LPWSTR lpRemoteName;
	LPWSTR lpComment ;
	LPWSTR lpProvider;
}NETRESOURCEW,*LPNETRESOURCEW;
typedef struct _CONNECTDLGSTRUCTA{
	DWORD cbStructure;
	HWND hwndOwner;
	LPNETRESOURCEA lpConnRes;
	DWORD dwFlags;
	DWORD dwDevNum;
} CONNECTDLGSTRUCTA,*LPCONNECTDLGSTRUCTA;
typedef struct _CONNECTDLGSTRUCTW{
	DWORD cbStructure;
	HWND hwndOwner;
	LPNETRESOURCEW lpConnRes;
	DWORD dwFlags;
	DWORD dwDevNum;
} CONNECTDLGSTRUCTW,*LPCONNECTDLGSTRUCTW;
typedef struct _DISCDLGSTRUCTA{
	DWORD cbStructure;
	HWND hwndOwner;
	LPSTR lpLocalName;
	LPSTR lpRemoteName;
	DWORD dwFlags;
} DISCDLGSTRUCTA,*LPDISCDLGSTRUCTA;
typedef struct _DISCDLGSTRUCTW{
	DWORD cbStructure;
	HWND hwndOwner;
	LPWSTR lpLocalName;
	LPWSTR lpRemoteName;
	DWORD dwFlags;
} DISCDLGSTRUCTW,*LPDISCDLGSTRUCTW;
typedef struct _UNIVERSAL_NAME_INFOA { LPSTR lpUniversalName; }UNIVERSAL_NAME_INFOA,*LPUNIVERSAL_NAME_INFOA;
typedef struct _UNIVERSAL_NAME_INFOW { LPWSTR lpUniversalName; }UNIVERSAL_NAME_INFOW,*LPUNIVERSAL_NAME_INFOW;
typedef struct _REMOTE_NAME_INFOA {
	LPSTR lpUniversalName;
	LPSTR lpConnectionName;
	LPSTR lpRemainingPath;
}REMOTE_NAME_INFOA,*LPREMOTE_NAME_INFOA;
typedef struct _REMOTE_NAME_INFOW {
	LPWSTR lpUniversalName;
	LPWSTR lpConnectionName;
	LPWSTR lpRemainingPath;
}REMOTE_NAME_INFOW,*LPREMOTE_NAME_INFOW;
typedef struct _NETINFOSTRUCT{
	DWORD cbStructure;
	DWORD dwProviderVersion;
	DWORD dwStatus;
	DWORD dwCharacteristics;
	DWORD dwHandle;
	WORD wNetType;
	DWORD dwPrinters;
	DWORD dwDrives;
} NETINFOSTRUCT,*LPNETINFOSTRUCT;
typedef UINT(__attribute__((__stdcall__))    *PFNGETPROFILEPATHA)(LPCSTR,LPSTR,UINT);
typedef UINT(__attribute__((__stdcall__))    *PFNGETPROFILEPATHW)(LPCWSTR,LPWSTR,UINT);
typedef UINT(__attribute__((__stdcall__))    *PFNRECONCILEPROFILEA)(LPCSTR,LPCSTR,DWORD);
typedef UINT(__attribute__((__stdcall__))    *PFNRECONCILEPROFILEW)(LPCWSTR,LPCWSTR,DWORD);
typedef BOOL(__attribute__((__stdcall__))    *PFNPROCESSPOLICIESA)(HWND,LPCSTR,LPCSTR,LPCSTR,DWORD);
typedef BOOL(__attribute__((__stdcall__))    *PFNPROCESSPOLICIESW)(HWND,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
typedef struct _NETCONNECTINFOSTRUCT{
	DWORD cbStructure;
	DWORD dwFlags;
	DWORD dwSpeed;
	DWORD dwDelay;
	DWORD dwOptDataSize;
} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT;

DWORD __attribute__((__stdcall__))   WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR);
DWORD __attribute__((__stdcall__))   WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR);
DWORD __attribute__((__stdcall__))   WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
DWORD __attribute__((__stdcall__))   WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
DWORD __attribute__((__stdcall__))   WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
DWORD __attribute__((__stdcall__))   WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
DWORD __attribute__((__stdcall__))   WNetCancelConnectionA(LPCSTR,BOOL);
DWORD __attribute__((__stdcall__))   WNetCancelConnectionW(LPCWSTR,BOOL);
DWORD __attribute__((__stdcall__))   WNetCancelConnection2A(LPCSTR,DWORD,BOOL);
DWORD __attribute__((__stdcall__))   WNetCancelConnection2W(LPCWSTR,DWORD,BOOL);
DWORD __attribute__((__stdcall__))   WNetGetConnectionA(LPCSTR,LPSTR,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetConnectionW(LPCWSTR,LPWSTR,PDWORD);
DWORD __attribute__((__stdcall__))   WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD,PDWORD);
DWORD __attribute__((__stdcall__))   WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD,PDWORD);
DWORD __attribute__((__stdcall__))   WNetSetConnectionA(LPCSTR,DWORD,PVOID);
DWORD __attribute__((__stdcall__))   WNetSetConnectionW(LPCWSTR,DWORD,PVOID);
DWORD __attribute__((__stdcall__))   WNetConnectionDialog(HWND,DWORD);
DWORD __attribute__((__stdcall__))   WNetDisconnectDialog(HWND,DWORD);
DWORD __attribute__((__stdcall__))   WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA);
DWORD __attribute__((__stdcall__))   WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW);
DWORD __attribute__((__stdcall__))   WNetDisconnectDialog1A(LPDISCDLGSTRUCTA);
DWORD __attribute__((__stdcall__))   WNetDisconnectDialog1W(LPDISCDLGSTRUCTW);
DWORD __attribute__((__stdcall__))   WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE);
DWORD __attribute__((__stdcall__))   WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE);
DWORD __attribute__((__stdcall__))   WNetEnumResourceA(HANDLE,PDWORD,PVOID,PDWORD);
DWORD __attribute__((__stdcall__))   WNetEnumResourceW(HANDLE,PDWORD,PVOID,PDWORD);
DWORD __attribute__((__stdcall__))   WNetCloseEnum(HANDLE);
DWORD __attribute__((__stdcall__))   WNetGetUniversalNameA(LPCSTR,DWORD,PVOID,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetUniversalNameW(LPCWSTR,DWORD,PVOID,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetUserA(LPCSTR,LPSTR,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetUserW(LPCWSTR,LPWSTR,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetProviderNameA(DWORD,LPSTR,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetProviderNameW(DWORD,LPWSTR,PDWORD);
DWORD __attribute__((__stdcall__))   WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT);
DWORD __attribute__((__stdcall__))   WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT);
DWORD __attribute__((__stdcall__))   WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPCSTR*);
DWORD __attribute__((__stdcall__))   WNetGetResourceInformationW(LPNETRESOURCEA,LPVOID,LPDWORD,LPCWSTR*);
DWORD __attribute__((__stdcall__))   WNetGetLastErrorA(PDWORD,LPSTR,DWORD,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   WNetGetLastErrorW(PDWORD,LPWSTR,DWORD,LPWSTR,DWORD);
DWORD __attribute__((__stdcall__))   MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT);
DWORD __attribute__((__stdcall__))   MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT);
# 313 "/usr/include/w32api/winnetwk.h" 3




typedef NETRESOURCEA NETRESOURCE,*LPNETRESOURCE;
typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
typedef DISCDLGSTRUCTA DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;






















}


# 65 "/usr/include/w32api/windows.h" 2 3



# 1 "/usr/include/w32api/winreg.h" 1 3







extern "C" {
































typedef ACCESS_MASK REGSAM;
typedef struct value_entA {
	LPSTR ve_valuename;
	DWORD ve_valuelen;
	DWORD ve_valueptr;
	DWORD ve_type;
} VALENTA,*PVALENTA;
typedef struct value_entW {
	LPWSTR ve_valuename;
	DWORD ve_valuelen;
	DWORD ve_valueptr;
	DWORD ve_type;
} VALENTW,*PVALENTW;
BOOL __attribute__((__stdcall__))   AbortSystemShutdownA(LPCSTR);
BOOL __attribute__((__stdcall__))   AbortSystemShutdownW(LPCWSTR);
BOOL __attribute__((__stdcall__))   InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL);
BOOL __attribute__((__stdcall__))   InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL);
LONG __attribute__((__stdcall__))   RegCloseKey(HKEY);
LONG __attribute__((__stdcall__))   RegConnectRegistryA(LPCSTR,HKEY,PHKEY);
LONG __attribute__((__stdcall__))   RegConnectRegistryW(LPCWSTR,HKEY,PHKEY);
LONG __attribute__((__stdcall__))   RegCreateKeyA(HKEY,LPCSTR,PHKEY);
LONG __attribute__((__stdcall__))   RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
LONG __attribute__((__stdcall__))   RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
LONG __attribute__((__stdcall__))   RegCreateKeyW(HKEY,LPCWSTR,PHKEY);
LONG __attribute__((__stdcall__))   RegDeleteKeyA(HKEY,LPCSTR);
LONG __attribute__((__stdcall__))   RegDeleteKeyW(HKEY,LPCWSTR);
LONG __attribute__((__stdcall__))   RegDeleteValueA(HKEY,LPCSTR);
LONG __attribute__((__stdcall__))   RegDeleteValueW(HKEY,LPCWSTR);
LONG __attribute__((__stdcall__))   RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
LONG __attribute__((__stdcall__))   RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
LONG __attribute__((__stdcall__))   RegEnumKeyExA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,LPSTR,PDWORD,PFILETIME);
LONG __attribute__((__stdcall__))   RegEnumKeyExW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,LPWSTR,PDWORD,PFILETIME);
LONG __attribute__((__stdcall__))   RegEnumValueA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
LONG __attribute__((__stdcall__))   RegEnumValueW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
LONG __attribute__((__stdcall__))   RegFlushKey(HKEY);
LONG __attribute__((__stdcall__))   RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PDWORD);
LONG __attribute__((__stdcall__))   RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
LONG __attribute__((__stdcall__))   RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
LONG __attribute__((__stdcall__))   RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
LONG __attribute__((__stdcall__))   RegOpenKeyA(HKEY,LPCSTR,PHKEY);
LONG __attribute__((__stdcall__))   RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
LONG __attribute__((__stdcall__))   RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
LONG __attribute__((__stdcall__))   RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
LONG __attribute__((__stdcall__))   RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
LONG __attribute__((__stdcall__))   RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
LONG __attribute__((__stdcall__))   RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
LONG __attribute__((__stdcall__))   RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD);
LONG __attribute__((__stdcall__))   RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
LONG __attribute__((__stdcall__))   RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
LONG __attribute__((__stdcall__))   RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
LONG __attribute__((__stdcall__))   RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG);
LONG __attribute__((__stdcall__))   RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
LONG __attribute__((__stdcall__))   RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
LONG __attribute__((__stdcall__))   RegRestoreKeyA(HKEY,LPCSTR,DWORD);
LONG __attribute__((__stdcall__))   RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
LONG __attribute__((__stdcall__))   RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
LONG __attribute__((__stdcall__))   RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
LONG __attribute__((__stdcall__))   RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
LONG __attribute__((__stdcall__))   RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
LONG __attribute__((__stdcall__))   RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE*,DWORD);
LONG __attribute__((__stdcall__))   RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE*,DWORD);
LONG __attribute__((__stdcall__))   RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
LONG __attribute__((__stdcall__))   RegUnLoadKeyA(HKEY,LPCSTR);
LONG __attribute__((__stdcall__))   RegUnLoadKeyW(HKEY,LPCWSTR);

# 131 "/usr/include/w32api/winreg.h" 3

typedef VALENTA VALENT,*PVALENT;


























}


# 68 "/usr/include/w32api/windows.h" 2 3



# 1 "/usr/include/w32api/winsvc.h" 1 3







extern "C" {





























































typedef struct _SERVICE_STATUS {
	DWORD dwServiceType;
	DWORD dwCurrentState;
	DWORD dwControlsAccepted;
	DWORD dwWin32ExitCode;
	DWORD dwServiceSpecificExitCode;
	DWORD dwCheckPoint;
	DWORD dwWaitHint;
} SERVICE_STATUS,*LPSERVICE_STATUS;
typedef struct _SERVICE_STATUS_PROCESS {
	DWORD dwServiceType;
	DWORD dwCurrentState;
	DWORD dwControlsAccepted;
	DWORD dwWin32ExitCode;
	DWORD dwServiceSpecificExitCode;
	DWORD dwCheckPoint;
	DWORD dwWaitHint;
	DWORD dwProcessId;
	DWORD dwServiceFlags;
} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
typedef enum _SC_STATUS_TYPE {
	SC_STATUS_PROCESS_INFO = 0
} SC_STATUS_TYPE;
typedef enum _SC_ENUM_TYPE {
        SC_ENUM_PROCESS_INFO = 0
} SC_ENUM_TYPE;
typedef struct _ENUM_SERVICE_STATUSA {
	LPSTR lpServiceName;
	LPSTR lpDisplayName;
	SERVICE_STATUS ServiceStatus;
} ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
typedef struct _ENUM_SERVICE_STATUSW {
	LPWSTR lpServiceName;
	LPWSTR lpDisplayName;
	SERVICE_STATUS ServiceStatus;
} ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
	LPSTR lpServiceName;
	LPSTR lpDisplayName;
	SERVICE_STATUS_PROCESS ServiceStatusProcess;
} ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
	LPWSTR lpServiceName;
	LPWSTR lpDisplayName;
	SERVICE_STATUS_PROCESS ServiceStatusProcess;
} ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
typedef struct _QUERY_SERVICE_CONFIGA {
	DWORD dwServiceType;
	DWORD dwStartType;
	DWORD dwErrorControl;
	LPSTR lpBinaryPathName;
	LPSTR lpLoadOrderGroup;
	DWORD dwTagId;
	LPSTR lpDependencies;
	LPSTR lpServiceStartName;
	LPSTR lpDisplayName;
} QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
typedef struct _QUERY_SERVICE_CONFIGW {
	DWORD dwServiceType;
	DWORD dwStartType;
	DWORD dwErrorControl;
	LPWSTR lpBinaryPathName;
	LPWSTR lpLoadOrderGroup;
	DWORD dwTagId;
	LPWSTR lpDependencies;
	LPWSTR lpServiceStartName;
	LPWSTR lpDisplayName;
} QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
typedef struct _QUERY_SERVICE_LOCK_STATUSA {
	DWORD fIsLocked;
	LPSTR lpLockOwner;
	DWORD dwLockDuration;
} QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
typedef struct _QUERY_SERVICE_LOCK_STATUSW {
	DWORD fIsLocked;
	LPWSTR lpLockOwner;
	DWORD dwLockDuration;
} QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
typedef void (__attribute__((__stdcall__))   *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
typedef void (__attribute__((__stdcall__))   *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
typedef struct _SERVICE_TABLE_ENTRYA {
	LPSTR lpServiceName;
	LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
} SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
typedef struct _SERVICE_TABLE_ENTRYW {
	LPWSTR lpServiceName;
	LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
} SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
typedef struct  SC_HANDLE__{int i;}* SC_HANDLE  ;
typedef SC_HANDLE *LPSC_HANDLE;
typedef PVOID SC_LOCK;
typedef DWORD SERVICE_STATUS_HANDLE;
typedef void (__attribute__((__stdcall__))   *LPHANDLER_FUNCTION)(DWORD);
typedef DWORD (__attribute__((__stdcall__))   *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
typedef struct _SERVICE_DESCRIPTIONA {
	LPSTR lpDescription;
} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
typedef struct _SERVICE_DESCRIPTIONW {
	LPWSTR lpDescription;
} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
typedef enum _SC_ACTION_TYPE {
        SC_ACTION_NONE          = 0,
        SC_ACTION_RESTART       = 1,
        SC_ACTION_REBOOT        = 2,
        SC_ACTION_RUN_COMMAND   = 3
} SC_ACTION_TYPE;
typedef struct _SC_ACTION {
	SC_ACTION_TYPE	Type;
	DWORD		Delay;
} SC_ACTION,*LPSC_ACTION;
typedef struct _SERVICE_FAILURE_ACTIONSA {
	DWORD	dwResetPeriod;
	LPSTR	lpRebootMsg;
	LPSTR	lpCommand;
	DWORD	cActions;
	SC_ACTION * lpsaActions;
} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
typedef struct _SERVICE_FAILURE_ACTIONSW {
	DWORD	dwResetPeriod;
	LPWSTR	lpRebootMsg;
	LPWSTR	lpCommand;
	DWORD	cActions;
	SC_ACTION * lpsaActions;
} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;

BOOL __attribute__((__stdcall__))   ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
BOOL __attribute__((__stdcall__))   ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
BOOL __attribute__((__stdcall__))   ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
BOOL __attribute__((__stdcall__))   CloseServiceHandle(SC_HANDLE);
BOOL __attribute__((__stdcall__))   ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
SC_HANDLE __attribute__((__stdcall__))   CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,PDWORD,LPCSTR,LPCSTR,LPCSTR);
SC_HANDLE __attribute__((__stdcall__))   CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,PDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
BOOL __attribute__((__stdcall__))   DeleteService(SC_HANDLE);
BOOL __attribute__((__stdcall__))   EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
BOOL __attribute__((__stdcall__))   EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
BOOL __attribute__((__stdcall__))   GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
BOOL __attribute__((__stdcall__))   GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
SC_LOCK __attribute__((__stdcall__))   LockServiceDatabase(SC_HANDLE);
BOOL __attribute__((__stdcall__))   NotifyBootConfigStatus(BOOL);
SC_HANDLE __attribute__((__stdcall__))   OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
SC_HANDLE __attribute__((__stdcall__))   OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
SC_HANDLE __attribute__((__stdcall__))   OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
SC_HANDLE __attribute__((__stdcall__))   OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
BOOL __attribute__((__stdcall__))   QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
BOOL __attribute__((__stdcall__))   QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
BOOL __attribute__((__stdcall__))   QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
SERVICE_STATUS_HANDLE __attribute__((__stdcall__))   RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
SERVICE_STATUS_HANDLE __attribute__((__stdcall__))   RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
SERVICE_STATUS_HANDLE __attribute__((__stdcall__))   RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
SERVICE_STATUS_HANDLE __attribute__((__stdcall__))   RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
BOOL __attribute__((__stdcall__))   SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
BOOL __attribute__((__stdcall__))   SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
BOOL __attribute__((__stdcall__))   StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
BOOL __attribute__((__stdcall__))   StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
BOOL __attribute__((__stdcall__))   StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
BOOL __attribute__((__stdcall__))   StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
BOOL __attribute__((__stdcall__))   UnlockServiceDatabase(SC_LOCK);

# 273 "/usr/include/w32api/winsvc.h" 3

typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION;
typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;






















}


# 71 "/usr/include/w32api/windows.h" 2 3




# 1 "/usr/include/w32api/commdlg.h" 1 3







extern "C" {

#pragma pack(push,1)









































































































































































































typedef UINT (__attribute__((__stdcall__))   *__CDHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
typedef __CDHOOKPROC LPCCHOOKPROC;
typedef __CDHOOKPROC LPCFHOOKPROC;
typedef __CDHOOKPROC LPFRHOOKPROC;
typedef __CDHOOKPROC LPOFNHOOKPROC;
typedef __CDHOOKPROC LPPAGEPAINTHOOK;
typedef __CDHOOKPROC LPPAGESETUPHOOK;
typedef __CDHOOKPROC LPSETUPHOOKPROC;
typedef __CDHOOKPROC LPPRINTHOOKPROC;
typedef struct tagCHOOSECOLORA {
	DWORD	lStructSize;
	HWND	hwndOwner;
	HWND	hInstance;
	COLORREF	rgbResult;
	COLORREF*	lpCustColors;
	DWORD	Flags;
	LPARAM	lCustData;
	LPCCHOOKPROC	lpfnHook;
	LPCSTR	lpTemplateName;
} CHOOSECOLORA,*LPCHOOSECOLORA;
typedef struct tagCHOOSECOLORW {
	DWORD	lStructSize;
	HWND	hwndOwner;
	HWND	hInstance;
	COLORREF	rgbResult;
	COLORREF*	lpCustColors;
	DWORD	Flags;
	LPARAM	lCustData;
	LPCCHOOKPROC	lpfnHook;
	LPCWSTR	lpTemplateName;
} CHOOSECOLORW,*LPCHOOSECOLORW;
typedef struct tagCHOOSEFONTA {
	DWORD	lStructSize;
	HWND	hwndOwner;
	HDC	hDC;
	LPLOGFONTA	lpLogFont;
	INT	iPointSize;
	DWORD	Flags;
	DWORD	rgbColors;
	LPARAM	lCustData;
	LPCFHOOKPROC	lpfnHook;
	LPCSTR	lpTemplateName;
	HINSTANCE	hInstance;
	LPSTR	lpszStyle;
	WORD	nFontType;
	WORD	___MISSING_ALIGNMENT__;
	INT	nSizeMin;
	INT	nSizeMax;
} CHOOSEFONTA,*LPCHOOSEFONTA;
typedef struct tagCHOOSEFONTW {
	DWORD	lStructSize;
	HWND	hwndOwner;
	HDC	hDC;
	LPLOGFONTW	lpLogFont;
	INT	iPointSize;
	DWORD	Flags;
	DWORD	rgbColors;
	LPARAM	lCustData;
	LPCFHOOKPROC	lpfnHook;
	LPCWSTR	lpTemplateName;
	HINSTANCE	hInstance;
	LPWSTR	lpszStyle;
	WORD	nFontType;
	WORD	___MISSING_ALIGNMENT__;
	INT	nSizeMin;
	INT	nSizeMax;
} CHOOSEFONTW,*LPCHOOSEFONTW;
typedef struct tagDEVNAMES {
	WORD wDriverOffset;
	WORD wDeviceOffset;
	WORD wOutputOffset;
	WORD wDefault;
} DEVNAMES,*LPDEVNAMES;
typedef struct {
	DWORD lStructSize;
	HWND hwndOwner;
	HINSTANCE hInstance;
	DWORD Flags;
	LPSTR lpstrFindWhat;
	LPSTR lpstrReplaceWith;
	WORD wFindWhatLen;
	WORD wReplaceWithLen;
	LPARAM lCustData;
	LPFRHOOKPROC lpfnHook;
	LPCSTR lpTemplateName;
} FINDREPLACEA,*LPFINDREPLACEA;
typedef struct {
	DWORD lStructSize;
	HWND hwndOwner;
	HINSTANCE hInstance;
	DWORD Flags;
	LPWSTR lpstrFindWhat;
	LPWSTR lpstrReplaceWith;
	WORD wFindWhatLen;
	WORD wReplaceWithLen;
	LPARAM lCustData;
	LPFRHOOKPROC lpfnHook;
	LPCWSTR lpTemplateName;
} FINDREPLACEW,*LPFINDREPLACEW;
typedef struct tagOFNA {
	DWORD lStructSize;
	HWND hwndOwner;
	HINSTANCE hInstance;
	LPCSTR lpstrFilter;
	LPSTR lpstrCustomFilter;
	DWORD nMaxCustFilter;
	DWORD nFilterIndex;
	LPSTR lpstrFile;
	DWORD nMaxFile;
	LPSTR lpstrFileTitle;
	DWORD nMaxFileTitle;
	LPCSTR lpstrInitialDir;
	LPCSTR lpstrTitle;
	DWORD Flags;
	WORD nFileOffset;
	WORD nFileExtension;
	LPCSTR lpstrDefExt;
	DWORD lCustData;
	LPOFNHOOKPROC lpfnHook;
	LPCSTR lpTemplateName;
} OPENFILENAMEA,*LPOPENFILENAMEA;
typedef struct tagOFNW {
	DWORD lStructSize;
	HWND hwndOwner;
	HINSTANCE hInstance;
	LPCWSTR lpstrFilter;
	LPWSTR lpstrCustomFilter;
	DWORD nMaxCustFilter;
	DWORD nFilterIndex;
	LPWSTR lpstrFile;
	DWORD nMaxFile;
	LPWSTR lpstrFileTitle;
	DWORD nMaxFileTitle;
	LPCWSTR lpstrInitialDir;
	LPCWSTR lpstrTitle;
	DWORD Flags;
	WORD nFileOffset;
	WORD nFileExtension;
	LPCWSTR lpstrDefExt;
	DWORD lCustData;
	LPOFNHOOKPROC lpfnHook;
	LPCWSTR lpTemplateName;
} OPENFILENAMEW,*LPOPENFILENAMEW;
typedef struct _OFNOTIFYA {
	NMHDR hdr;
	LPOPENFILENAMEA lpOFN;
	LPSTR pszFile;
} OFNOTIFYA,*LPOFNOTIFYA;
typedef struct _OFNOTIFYW {
	NMHDR hdr;
	LPOPENFILENAMEW lpOFN;
	LPWSTR pszFile;
} OFNOTIFYW,*LPOFNOTIFYW;
typedef struct tagPSDA {
	DWORD lStructSize;
	HWND hwndOwner;
	HGLOBAL hDevMode;
	HGLOBAL hDevNames;
	DWORD Flags;
	POINT ptPaperSize;
	RECT rtMinMargin;
	RECT rtMargin;
	HINSTANCE hInstance;
	LPARAM lCustData;
	LPPAGESETUPHOOK lpfnPageSetupHook;
	LPPAGEPAINTHOOK lpfnPagePaintHook;
	LPCSTR lpPageSetupTemplateName;
	HGLOBAL hPageSetupTemplate;
} PAGESETUPDLGA,*LPPAGESETUPDLGA;
typedef struct tagPSDW {
	DWORD lStructSize;
	HWND hwndOwner;
	HGLOBAL hDevMode;
	HGLOBAL hDevNames;
	DWORD Flags;
	POINT ptPaperSize;
	RECT rtMinMargin;
	RECT rtMargin;
	HINSTANCE hInstance;
	LPARAM lCustData;
	LPPAGESETUPHOOK lpfnPageSetupHook;
	LPPAGEPAINTHOOK lpfnPagePaintHook;
	LPCWSTR lpPageSetupTemplateName;
	HGLOBAL hPageSetupTemplate;
} PAGESETUPDLGW,*LPPAGESETUPDLGW;
typedef struct tagPDA {
	DWORD lStructSize;
	HWND hwndOwner;
	HANDLE hDevMode;
	HANDLE hDevNames;
	HDC hDC;
	DWORD Flags;
	WORD nFromPage;
	WORD nToPage;
	WORD nMinPage;
	WORD nMaxPage;
	WORD nCopies;
	HINSTANCE hInstance;
	DWORD lCustData;
	LPPRINTHOOKPROC lpfnPrintHook;
	LPSETUPHOOKPROC lpfnSetupHook;
	LPCSTR lpPrintTemplateName;
	LPCSTR lpSetupTemplateName;
	HANDLE hPrintTemplate;
	HANDLE hSetupTemplate;
} PRINTDLGA,*LPPRINTDLGA;
typedef struct tagPDW {
	DWORD lStructSize;
	HWND hwndOwner;
	HANDLE hDevMode;
	HANDLE hDevNames;
	HDC hDC;
	DWORD Flags;
	WORD nFromPage;
	WORD nToPage;
	WORD nMinPage;
	WORD nMaxPage;
	WORD nCopies;
	HINSTANCE hInstance;
	DWORD lCustData;
	LPPRINTHOOKPROC lpfnPrintHook;
	LPSETUPHOOKPROC lpfnSetupHook;
	LPCWSTR lpPrintTemplateName;
	LPCWSTR lpSetupTemplateName;
	HANDLE hPrintTemplate;
	HANDLE hSetupTemplate;
} PRINTDLGW,*LPPRINTDLGW;
# 492 "/usr/include/w32api/commdlg.h" 3


BOOL __attribute__((__stdcall__))   ChooseColorA(LPCHOOSECOLORA);
BOOL __attribute__((__stdcall__))   ChooseColorW(LPCHOOSECOLORW);
BOOL __attribute__((__stdcall__))   ChooseFontA(LPCHOOSEFONTA);
BOOL __attribute__((__stdcall__))   ChooseFontW(LPCHOOSEFONTW);
DWORD __attribute__((__stdcall__))   CommDlgExtendedError(void);
HWND __attribute__((__stdcall__))   FindTextA(LPFINDREPLACEA);
HWND __attribute__((__stdcall__))   FindTextW(LPFINDREPLACEW);
short __attribute__((__stdcall__))   GetFileTitleA(LPCSTR,LPSTR,WORD);
short __attribute__((__stdcall__))   GetFileTitleW(LPCWSTR,LPWSTR,WORD);
BOOL __attribute__((__stdcall__))   GetOpenFileNameA(LPOPENFILENAMEA);
BOOL __attribute__((__stdcall__))   GetOpenFileNameW(LPOPENFILENAMEW);
BOOL __attribute__((__stdcall__))   GetSaveFileNameA(LPOPENFILENAMEA);
BOOL __attribute__((__stdcall__))   GetSaveFileNameW(LPOPENFILENAMEW);
BOOL __attribute__((__stdcall__))   PageSetupDlgA(LPPAGESETUPDLGA);
BOOL __attribute__((__stdcall__))   PageSetupDlgW(LPPAGESETUPDLGW);
BOOL __attribute__((__stdcall__))   PrintDlgA(LPPRINTDLGA);
BOOL __attribute__((__stdcall__))   PrintDlgW(LPPRINTDLGW);
HWND __attribute__((__stdcall__))   ReplaceTextA(LPFINDREPLACEA);
HWND __attribute__((__stdcall__))   ReplaceTextW(LPFINDREPLACEW);





# 546 "/usr/include/w32api/commdlg.h" 3








typedef CHOOSECOLORA CHOOSECOLOR,*LPCHOOSECOLOR;
typedef CHOOSEFONTA CHOOSEFONT,*LPCHOOSEFONT;
typedef FINDREPLACEA FINDREPLACE,*LPFINDREPLACE;
typedef OPENFILENAMEA OPENFILENAME,*LPOPENFILENAME;
typedef OFNOTIFYA OFNOTIFY,*LPOFNOTIFY;
typedef PAGESETUPDLGA PAGESETUPDLG,*LPPAGESETUPDLG;
typedef PRINTDLGA PRINTDLG,*LPPRINTDLG;














#pragma pack(pop)

}


# 75 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/cderr.h" 1 3












































# 76 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/dde.h" 1 3







extern "C" {














typedef struct {
	unsigned short bAppReturnCode:8,reserved:6,fBusy:1,fAck:1;
} DDEACK;
typedef struct {
	unsigned short reserved:14,fDeferUpd:1,fAckReq:1;
	short cfFormat;
} DDEADVISE;
typedef struct {
	unsigned short unused:12,fResponse:1,fRelease:1,reserved:1,fAckReq:1;
	short cfFormat;
	BYTE Value[1];
} DDEDATA;
typedef struct {
	unsigned short unused:13,fRelease:1,fReserved:2;
	short cfFormat;
	BYTE  Value[1];
} DDEPOKE;
typedef struct {
        unsigned short unused:13,
                 fRelease:1,
                 fDeferUpd:1,
         fAckReq:1;
    short    cfFormat;
} DDELN;

typedef struct {
	unsigned short unused:12,fAck:1,fRelease:1,fReserved:1,fAckReq:1;
    short cfFormat;
    BYTE rgb[1];
} DDEUP;
BOOL __attribute__((__stdcall__))   DdeSetQualityOfService(HWND,const SECURITY_QUALITY_OF_SERVICE*,PSECURITY_QUALITY_OF_SERVICE);
BOOL __attribute__((__stdcall__))   ImpersonateDdeClientWindow(HWND,HWND);
LONG __attribute__((__stdcall__))   PackDDElParam(UINT,UINT,UINT);
BOOL __attribute__((__stdcall__))   UnpackDDElParam(UINT,LONG,PUINT,PUINT);
BOOL __attribute__((__stdcall__))   FreeDDElParam(UINT,LONG);
LONG __attribute__((__stdcall__))   ReuseDDElParam(LONG,UINT,UINT,UINT,UINT);



}


# 77 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/ddeml.h" 1 3







extern "C" {








































































































































typedef struct  HCONVLIST__{int i;}* HCONVLIST  ;
typedef struct  HCONV__{int i;}* HCONV  ;
typedef struct  HSZ__{int i;}* HSZ  ;
typedef struct  HDDEDATA__{int i;}* HDDEDATA  ;
typedef HDDEDATA __attribute__((__stdcall__))   FNCALLBACK(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
typedef HDDEDATA(__attribute__((__stdcall__))   *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
typedef struct tagHSZPAIR {
	HSZ	hszSvc;
	HSZ	hszTopic;
} HSZPAIR, *PHSZPAIR;
typedef struct tagCONVCONTEXT {
	UINT	cb;
	UINT	wFlags;
	UINT	wCountryID;
	int	iCodePage;
	DWORD	dwLangID;
	DWORD	dwSecurity;
	SECURITY_QUALITY_OF_SERVICE qos;
} CONVCONTEXT,*PCONVCONTEXT;
typedef struct tagCONVINFO {
	DWORD	cb;
	DWORD	hUser;
	HCONV	hConvPartner;
	HSZ	hszSvcPartner;
	HSZ	hszServiceReq;
	HSZ	hszTopic;
	HSZ	hszItem;
	UINT	wFmt;
	UINT	wType;
	UINT	wStatus;
	UINT	wConvst;
	UINT	wLastError;
	HCONVLIST	hConvList;
	CONVCONTEXT ConvCtxt;
	HWND	hwnd;
	HWND	hwndPartner;
} CONVINFO,*PCONVINFO;
typedef struct tagDDEML_MSG_HOOK_DATA {
	UINT	uiLo;
	UINT	uiHi;
	DWORD	cbData;
	DWORD	Data[8];
} DDEML_MSG_HOOK_DATA;
typedef struct tagMONHSZSTRUCT {
	UINT	cb;
	BOOL	fsAction;
	DWORD	dwTime;
	HSZ	hsz;
	HANDLE	hTask;
	TCHAR	str[1];
} MONHSZSTRUCT, *PMONHSZSTRUCT;
typedef struct tagMONLINKSTRUCT {
	UINT	cb;
	DWORD	dwTime;
	HANDLE	hTask;
	BOOL	fEstablished;
	BOOL	fNoData;
	HSZ	hszSvc;
	HSZ	hszTopic;
	HSZ	hszItem;
	UINT	wFmt;
	BOOL	fServer;
	HCONV	hConvServer;
	HCONV	hConvClient;
} MONLINKSTRUCT, *PMONLINKSTRUCT;
typedef struct tagMONCONVSTRUCT {
	UINT	cb;
	BOOL	fConnect;
	DWORD	dwTime;
	HANDLE	hTask;
	HSZ	hszSvc;
	HSZ	hszTopic;
	HCONV	hConvClient;
	HCONV	hConvServer;
} MONCONVSTRUCT, *PMONCONVSTRUCT;
typedef struct tagMONCBSTRUCT {
	UINT	cb;
	DWORD	dwTime;
	HANDLE	hTask;
	DWORD	dwRet;
	UINT	wType;
	UINT	wFmt;
	HCONV	hConv;
	HSZ	hsz1;
	HSZ	hsz2;
	HDDEDATA	hData;
	ULONG_PTR	dwData1;
	ULONG_PTR	dwData2;
	CONVCONTEXT	cc;
	DWORD	cbData;
	DWORD	Data[8];
} MONCBSTRUCT, *PMONCBSTRUCT;
typedef struct tagMONERRSTRUCT {
	UINT	cb;
	UINT	wLastError;
	DWORD	dwTime;
	HANDLE	hTask;
} MONERRSTRUCT, *PMONERRSTRUCT;
typedef struct tagMONMSGSTRUCT {
	UINT	cb;
	HWND	hwndTo;
	DWORD	dwTime;
	HANDLE	hTask;
	UINT	wMsg;
	WPARAM	wParam;
	LPARAM	lParam;
	DDEML_MSG_HOOK_DATA dmhd;
} MONMSGSTRUCT, *PMONMSGSTRUCT;

BOOL __attribute__((__stdcall__))   DdeAbandonTransaction(DWORD,HCONV,DWORD);
PBYTE __attribute__((__stdcall__))   DdeAccessData(HDDEDATA,PDWORD);
HDDEDATA __attribute__((__stdcall__))   DdeAddData(HDDEDATA,PBYTE,DWORD,DWORD);
HDDEDATA __attribute__((__stdcall__))   DdeClientTransaction(PBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,PDWORD);
int __attribute__((__stdcall__))   DdeCmpStringHandles(HSZ,HSZ);
HCONV __attribute__((__stdcall__))   DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
HCONVLIST __attribute__((__stdcall__))   DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
HDDEDATA __attribute__((__stdcall__))   DdeCreateDataHandle(DWORD,PBYTE,DWORD,DWORD,HSZ,UINT,UINT);
HSZ __attribute__((__stdcall__))   DdeCreateStringHandleA(DWORD,LPSTR,int);
HSZ __attribute__((__stdcall__))   DdeCreateStringHandleW(DWORD,LPWSTR,int);
BOOL __attribute__((__stdcall__))   DdeDisconnect(HCONV);
BOOL __attribute__((__stdcall__))   DdeDisconnectList(HCONVLIST);
BOOL __attribute__((__stdcall__))   DdeEnableCallback(DWORD,HCONV,UINT);
BOOL __attribute__((__stdcall__))   DdeFreeDataHandle(HDDEDATA);
BOOL __attribute__((__stdcall__))   DdeFreeStringHandle(DWORD,HSZ);
DWORD __attribute__((__stdcall__))   DdeGetData(HDDEDATA,PBYTE,DWORD,DWORD);
UINT __attribute__((__stdcall__))   DdeGetLastError(DWORD);
BOOL __attribute__((__stdcall__))   DdeImpersonateClient(HCONV);
UINT __attribute__((__stdcall__))   DdeInitializeA(PDWORD,PFNCALLBACK,DWORD,DWORD);
UINT __attribute__((__stdcall__))   DdeInitializeW(PDWORD,PFNCALLBACK,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   DdeKeepStringHandle(DWORD,HSZ);
HDDEDATA __attribute__((__stdcall__))   DdeNameService(DWORD,HSZ,HSZ,UINT);
BOOL __attribute__((__stdcall__))   DdePostAdvise(DWORD,HSZ,HSZ);
UINT __attribute__((__stdcall__))   DdeQueryConvInfo(HCONV,DWORD,PCONVINFO);
HCONV __attribute__((__stdcall__))   DdeQueryNextServer(HCONVLIST,HCONV);
DWORD __attribute__((__stdcall__))   DdeQueryStringA(DWORD,HSZ,LPSTR,DWORD,int);
DWORD __attribute__((__stdcall__))   DdeQueryStringW(DWORD,HSZ,LPWSTR,DWORD,int);
HCONV __attribute__((__stdcall__))   DdeReconnect(HCONV);
BOOL __attribute__((__stdcall__))   DdeSetUserHandle(HCONV,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   DdeUnaccessData(HDDEDATA);
BOOL __attribute__((__stdcall__))   DdeUninitialize(DWORD);

# 298 "/usr/include/w32api/ddeml.h" 3














}


# 78 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/dlgs.h" 1 3







extern "C" {







































































































































































typedef struct tagCRGB {
 BYTE bRed;
 BYTE bGreen;
 BYTE bBlue;
 BYTE bExtra;
} CRGB;


}


# 79 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/imm.h" 1 3







extern "C" {











































































































































































































































typedef DWORD HIMC;
typedef DWORD HIMCC;
typedef HKL *LPHKL;
typedef struct tagCOMPOSITIONFORM {
	DWORD dwStyle;
	POINT ptCurrentPos;
	RECT rcArea;
} COMPOSITIONFORM,*PCOMPOSITIONFORM,*LPCOMPOSITIONFORM;
typedef struct tagCANDIDATEFORM {
	DWORD dwIndex;
	DWORD dwStyle;
	POINT ptCurrentPos;
	RECT rcArea;
} CANDIDATEFORM,*PCANDIDATEFORM,*LPCANDIDATEFORM;
typedef struct tagCANDIDATELIST {
	DWORD dwSize;
	DWORD dwStyle;
	DWORD dwCount;
	DWORD dwSelection;
	DWORD dwPageStart;
	DWORD dwPageSize;
	DWORD dwOffset[1];
} CANDIDATELIST,*PCANDIDATELIST,*LPCANDIDATELIST;
typedef struct tagREGISTERWORDA {
	LPSTR lpReading;
	LPSTR lpWord;
} REGISTERWORDA,*PREGISTERWORDA,*LPREGISTERWORDA;
typedef struct tagREGISTERWORDW {
	LPWSTR lpReading;
	LPWSTR lpWord;
} REGISTERWORDW,*PREGISTERWORDW,*LPREGISTERWORDW;
typedef struct tagSTYLEBUFA {
	DWORD dwStyle;
	CHAR szDescription[32 ];
} STYLEBUFA,*PSTYLEBUFA,*LPSTYLEBUFA;
typedef struct tagSTYLEBUFW {
	DWORD dwStyle;
	WCHAR szDescription[32 ];
} STYLEBUFW,*PSTYLEBUFW,*LPSTYLEBUFW;
typedef struct tagIMEMENUITEMINFOA {
	UINT cbSize;
	UINT fType;
	UINT fState;
	UINT wID;
	HBITMAP hbmpChecked;
	HBITMAP hbmpUnchecked;
	DWORD dwItemData;
	CHAR szString[80 ];
	HBITMAP hbmpItem;
} IMEMENUITEMINFOA,*PIMEMENUITEMINFOA,*LPIMEMENUITEMINFOA;
typedef struct tagIMEMENUITEMINFOW {
	UINT cbSize;
	UINT fType;
	UINT fState;
	UINT wID;
	HBITMAP hbmpChecked;
	HBITMAP hbmpUnchecked;
	DWORD dwItemData;
	WCHAR szString[80 ];
	HBITMAP hbmpItem;
} IMEMENUITEMINFOW,*PIMEMENUITEMINFOW,*LPIMEMENUITEMINFOW;
typedef int (__attribute__((__stdcall__))   *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
typedef int (__attribute__((__stdcall__))   *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);







typedef REGISTERWORDA REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD;
typedef STYLEBUFA STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF;
typedef IMEMENUITEMINFOA IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO;

HKL __attribute__((__stdcall__))   ImmInstallIMEA(LPCSTR,LPCSTR);
HKL __attribute__((__stdcall__))   ImmInstallIMEW(LPCWSTR,LPCWSTR);
HWND __attribute__((__stdcall__))   ImmGetDefaultIMEWnd(HWND);
UINT __attribute__((__stdcall__))   ImmGetDescriptionA(HKL,LPSTR,UINT);
UINT __attribute__((__stdcall__))   ImmGetDescriptionW(HKL,LPWSTR,UINT);
UINT __attribute__((__stdcall__))   ImmGetIMEFileNameA(HKL,LPSTR,UINT);
UINT __attribute__((__stdcall__))   ImmGetIMEFileNameW(HKL,LPWSTR,UINT);
DWORD __attribute__((__stdcall__))   ImmGetProperty(HKL,DWORD);
BOOL __attribute__((__stdcall__))   ImmIsIME(HKL);
BOOL __attribute__((__stdcall__))   ImmSimulateHotKey(HWND,DWORD);
HIMC __attribute__((__stdcall__))   ImmCreateContext(void);
BOOL __attribute__((__stdcall__))   ImmDestroyContext(HIMC);
HIMC __attribute__((__stdcall__))   ImmGetContext(HWND);
BOOL __attribute__((__stdcall__))   ImmReleaseContext(HWND,HIMC);
HIMC __attribute__((__stdcall__))   ImmAssociateContext(HWND,HIMC);
LONG __attribute__((__stdcall__))   ImmGetCompositionStringA(HIMC,DWORD,PVOID,DWORD);
LONG __attribute__((__stdcall__))   ImmGetCompositionStringW(HIMC,DWORD,PVOID,DWORD);
BOOL __attribute__((__stdcall__))   ImmSetCompositionStringA(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD);
BOOL __attribute__((__stdcall__))   ImmSetCompositionStringW(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD);
DWORD __attribute__((__stdcall__))   ImmGetCandidateListCountA(HIMC,PDWORD);
DWORD __attribute__((__stdcall__))   ImmGetCandidateListCountW(HIMC,PDWORD);
DWORD __attribute__((__stdcall__))   ImmGetCandidateListA(HIMC,DWORD,PCANDIDATELIST,DWORD);
DWORD __attribute__((__stdcall__))   ImmGetCandidateListW(HIMC,DWORD,PCANDIDATELIST,DWORD);
DWORD __attribute__((__stdcall__))   ImmGetGuideLineA(HIMC,DWORD,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   ImmGetGuideLineW(HIMC,DWORD,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   ImmGetConversionStatus(HIMC,LPDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   ImmSetConversionStatus(HIMC,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   ImmGetOpenStatus(HIMC);
BOOL __attribute__((__stdcall__))   ImmSetOpenStatus(HIMC,BOOL);
BOOL __attribute__((__stdcall__))   ImmGetCompositionFontA(HIMC,LPLOGFONTA);
BOOL __attribute__((__stdcall__))   ImmGetCompositionFontW(HIMC,LPLOGFONTW);
BOOL __attribute__((__stdcall__))   ImmSetCompositionFontA(HIMC,LPLOGFONTA);
BOOL __attribute__((__stdcall__))   ImmSetCompositionFontW(HIMC,LPLOGFONTW);
BOOL __attribute__((__stdcall__))   ImmConfigureIMEA(HKL,HWND,DWORD,PVOID);
BOOL __attribute__((__stdcall__))   ImmConfigureIMEW(HKL,HWND,DWORD,PVOID);
LRESULT __attribute__((__stdcall__))   ImmEscapeA(HKL,HIMC,UINT,PVOID);
LRESULT __attribute__((__stdcall__))   ImmEscapeW(HKL,HIMC,UINT,PVOID);
DWORD __attribute__((__stdcall__))   ImmGetConversionListA(HKL,HIMC,LPCSTR,PCANDIDATELIST,DWORD,UINT);
DWORD __attribute__((__stdcall__))   ImmGetConversionListW(HKL,HIMC,LPCWSTR,PCANDIDATELIST,DWORD,UINT);
BOOL __attribute__((__stdcall__))   ImmNotifyIME(HIMC,DWORD,DWORD,DWORD);
BOOL __attribute__((__stdcall__))   ImmGetStatusWindowPos(HIMC,LPPOINT);
BOOL __attribute__((__stdcall__))   ImmSetStatusWindowPos(HIMC,LPPOINT);
BOOL __attribute__((__stdcall__))   ImmGetCompositionWindow(HIMC,PCOMPOSITIONFORM);
BOOL __attribute__((__stdcall__))   ImmSetCompositionWindow(HIMC,PCOMPOSITIONFORM);
BOOL __attribute__((__stdcall__))   ImmGetCandidateWindow(HIMC,DWORD,PCANDIDATEFORM);
BOOL __attribute__((__stdcall__))   ImmSetCandidateWindow(HIMC,PCANDIDATEFORM);
BOOL __attribute__((__stdcall__))   ImmIsUIMessageA(HWND,UINT,WPARAM,LPARAM);
BOOL __attribute__((__stdcall__))   ImmIsUIMessageW(HWND,UINT,WPARAM,LPARAM);
UINT __attribute__((__stdcall__))   ImmGetVirtualKey(HWND);
BOOL __attribute__((__stdcall__))   ImmRegisterWordA(HKL,LPCSTR,DWORD,LPCSTR);
BOOL __attribute__((__stdcall__))   ImmRegisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR);
BOOL __attribute__((__stdcall__))   ImmUnregisterWordA(HKL,LPCSTR,DWORD,LPCSTR);
BOOL __attribute__((__stdcall__))   ImmUnregisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR);
UINT __attribute__((__stdcall__))   ImmGetRegisterWordStyleA(HKL,UINT,PSTYLEBUFA);
UINT __attribute__((__stdcall__))   ImmGetRegisterWordStyleW(HKL,UINT,PSTYLEBUFW);
UINT __attribute__((__stdcall__))   ImmEnumRegisterWordA(HKL,REGISTERWORDENUMPROCA,LPCSTR,DWORD,LPCSTR,PVOID);
UINT __attribute__((__stdcall__))   ImmEnumRegisterWordW(HKL,REGISTERWORDENUMPROCW,LPCWSTR,DWORD,LPCWSTR,PVOID);
BOOL __attribute__((__stdcall__))   EnableEUDC(BOOL);
BOOL __attribute__((__stdcall__))   ImmDisableIME(DWORD);
DWORD __attribute__((__stdcall__))   ImmGetImeMenuItemsA(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOA,LPIMEMENUITEMINFOA,DWORD);
DWORD __attribute__((__stdcall__))   ImmGetImeMenuItemsW(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOW,LPIMEMENUITEMINFOW,DWORD);

# 400 "/usr/include/w32api/imm.h" 3






















}


# 80 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/lzexpand.h" 1 3







extern "C" {









LONG __attribute__((__stdcall__))   CopyLZFile(INT,INT);
INT __attribute__((__stdcall__))   GetExpandedNameA(LPSTR,LPSTR);
INT __attribute__((__stdcall__))   GetExpandedNameW(LPWSTR,LPWSTR);
void  __attribute__((__stdcall__))   LZClose(INT);
LONG __attribute__((__stdcall__))   LZCopy(INT,INT);
void  __attribute__((__stdcall__))   LZDone(void );
INT __attribute__((__stdcall__))   LZInit(INT);
INT __attribute__((__stdcall__))   LZOpenFileA(LPSTR,LPOFSTRUCT,WORD);
INT __attribute__((__stdcall__))   LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD);
INT __attribute__((__stdcall__))   LZRead(INT,LPSTR,INT);
LONG __attribute__((__stdcall__))   LZSeek(INT,LONG,INT);
INT __attribute__((__stdcall__))   LZStart(void );








}


# 81 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/mmsystem.h" 1 3






#pragma pack(push,1)

extern "C" {

























































































































































































































































































































































































































































































































































































































































































































































































































































































































typedef DWORD MCIERROR;
typedef UINT MCIDEVICEID;
typedef UINT(__attribute__((__stdcall__))   *YIELDPROC)(MCIDEVICEID,DWORD);
typedef UINT MMVERSION;
typedef UINT MMRESULT;
typedef struct mmtime_tag {
	UINT wType;
	union {
		DWORD ms;
		DWORD sample;
		DWORD cb;
		DWORD ticks;
		struct {
			BYTE hour;
			BYTE min;
			BYTE sec;
			BYTE frame;
			BYTE fps;
			BYTE dummy;
			BYTE pad[2];
		} smpte;
		struct {
			DWORD songptrpos;
		} midi;
	} u;
} MMTIME,*PMMTIME,*LPMMTIME;
typedef struct  HDRVR__{int i;}* HDRVR  ;
typedef struct tagDRVCONFIGINFO {
	DWORD dwDCISize;
	LPCWSTR lpszDCISectionName;
	LPCWSTR lpszDCIAliasName;
} DRVCONFIGINFO,*PDRVCONFIGINFO,*LPDRVCONFIGINFO;
typedef struct DRVCONFIGINFOEX {
	DWORD dwDCISize;
	LPCWSTR lpszDCISectionName;
	LPCWSTR lpszDCIAliasName;
	DWORD dnDevNode;
} DRVCONFIGINFOEX,*PDRVCONFIGINFOEX,*LPDRVCONFIGINFOEX;
typedef LRESULT(__attribute__((__stdcall__))  * DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
typedef void (__attribute__((__stdcall__))   DRVCALLBACK)(HDRVR,UINT,DWORD,DWORD,DWORD);
typedef DRVCALLBACK *LPDRVCALLBACK;
typedef DRVCALLBACK *PDRVCALLBACK;
typedef struct  HWAVE__{int i;}* HWAVE  ;
typedef struct  HWAVEIN__{int i;}* HWAVEIN  ;
typedef struct  HWAVEOUT__{int i;}* HWAVEOUT  ;
typedef HWAVEIN *LPHWAVEIN;
typedef HWAVEOUT *LPHWAVEOUT;
typedef DRVCALLBACK WAVECALLBACK;
typedef WAVECALLBACK *LPWAVECALLBACK;
typedef struct wavehdr_tag {
	LPSTR lpData;
	DWORD dwBufferLength;
	DWORD dwBytesRecorded;
	DWORD dwUser;
	DWORD dwFlags;
	DWORD dwLoops;
	struct wavehdr_tag *lpNext;
	DWORD reserved;
} WAVEHDR,*PWAVEHDR,*LPWAVEHDR;
typedef struct tagWAVEOUTCAPSA {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	CHAR szPname[32 ];
	DWORD dwFormats;
	WORD wChannels;
	WORD wReserved1;
	DWORD dwSupport;
} WAVEOUTCAPSA,*PWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
typedef struct tagWAVEOUTCAPSW {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	WCHAR szPname[32 ];
	DWORD dwFormats;
	WORD wChannels;
	WORD wReserved1;
	DWORD dwSupport;
} WAVEOUTCAPSW,*PWAVEOUTCAPSW,*LPWAVEOUTCAPSW;
typedef struct tagWAVEINCAPSA {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	CHAR szPname[32 ];
	DWORD dwFormats;
	WORD wChannels;
	WORD wReserved1;
} WAVEINCAPSA,*PWAVEINCAPSA,*LPWAVEINCAPSA;
typedef struct tagWAVEINCAPSW {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	WCHAR szPname[32 ];
	DWORD dwFormats;
	WORD wChannels;
	WORD wReserved1;
} WAVEINCAPSW,*PWAVEINCAPSW,*LPWAVEINCAPSW;
typedef struct waveformat_tag {
	WORD wFormatTag;
	WORD nChannels;
	DWORD nSamplesPerSec;
	DWORD nAvgBytesPerSec;
	WORD nBlockAlign;
} WAVEFORMAT,*PWAVEFORMAT,*LPWAVEFORMAT;
typedef struct pcmwaveformat_tag {
	WAVEFORMAT wf;
	WORD wBitsPerSample;
} PCMWAVEFORMAT, *PPCMWAVEFORMAT,*LPPCMWAVEFORMAT;


typedef struct tWAVEFORMATEX {
	WORD wFormatTag;
	WORD nChannels;
	DWORD nSamplesPerSec;
	DWORD nAvgBytesPerSec;
	WORD nBlockAlign;
	WORD wBitsPerSample;
	WORD cbSize;
} WAVEFORMATEX,*PWAVEFORMATEX,*LPWAVEFORMATEX;
typedef const WAVEFORMATEX *LPCWAVEFORMATEX;

typedef struct  HMIDI__{int i;}* HMIDI  ;
typedef struct  HMIDIIN__{int i;}* HMIDIIN  ;
typedef struct  HMIDIOUT__{int i;}* HMIDIOUT  ;
typedef struct  HMIDISTRM__{int i;}* HMIDISTRM  ;
typedef HMIDI *LPHMIDI;
typedef HMIDIIN *LPHMIDIIN;
typedef HMIDIOUT *LPHMIDIOUT;
typedef HMIDISTRM *LPHMIDISTRM;
typedef DRVCALLBACK MIDICALLBACK;
typedef MIDICALLBACK *LPMIDICALLBACK;
typedef WORD PATCHARRAY[128 ];
typedef WORD *LPPATCHARRAY;
typedef WORD KEYARRAY[128 ];
typedef WORD *LPKEYARRAY;
typedef struct tagMIDIOUTCAPSA {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	CHAR szPname[32 ];
	WORD wTechnology;
	WORD wVoices;
	WORD wNotes;
	WORD wChannelMask;
	DWORD dwSupport;
} MIDIOUTCAPSA,*PMIDIOUTCAPSA,*LPMIDIOUTCAPSA;
typedef struct tagMIDIOUTCAPSW {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	WCHAR szPname[32 ];
	WORD wTechnology;
	WORD wVoices;
	WORD wNotes;
	WORD wChannelMask;
	DWORD dwSupport;
} MIDIOUTCAPSW,*PMIDIOUTCAPSW,*LPMIDIOUTCAPSW;
typedef struct tagMIDIINCAPSA {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	CHAR szPname[32 ];
	DWORD dwSupport;
} MIDIINCAPSA,*PMIDIINCAPSA,*LPMIDIINCAPSA;
typedef struct tagMIDIINCAPSW {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	WCHAR szPname[32 ];
	DWORD dwSupport;
} MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW;
typedef struct midihdr_tag {
	LPSTR lpData;
	DWORD dwBufferLength;
	DWORD dwBytesRecorded;
	DWORD dwUser;
	DWORD dwFlags;
	struct midihdr_tag *lpNext;
	DWORD reserved;
	DWORD dwOffset;
	DWORD dwReserved[8];
} MIDIHDR,*PMIDIHDR,*LPMIDIHDR;
typedef struct midievent_tag {
	DWORD dwDeltaTime;
	DWORD dwStreamID;
	DWORD dwEvent;
	DWORD dwParms[1];
} MIDIEVENT;
typedef struct midistrmbuffver_tag {
	DWORD dwVersion;
	DWORD dwMid;
	DWORD dwOEMVersion;
} MIDISTRMBUFFVER;
typedef struct midiproptimediv_tag {
	DWORD cbStruct;
	DWORD dwTimeDiv;
} MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV;
typedef struct midiproptempo_tag {
	DWORD cbStruct;
	DWORD dwTempo;
} MIDIPROPTEMPO,*LPMIDIPROPTEMPO;
typedef struct tagAUXCAPSA {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	CHAR szPname[32 ];
	WORD wTechnology;
	WORD wReserved1;
	DWORD dwSupport;
} AUXCAPSA,*PAUXCAPSA,*LPAUXCAPSA;
typedef struct tagAUXCAPSW {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	WCHAR szPname[32 ];
	WORD wTechnology;
	WORD wReserved1;
	DWORD dwSupport;
} AUXCAPSW,*PAUXCAPSW,*LPAUXCAPSW;
typedef struct  HMIXEROBJ__{int i;}* HMIXEROBJ  ;
typedef HMIXEROBJ *LPHMIXEROBJ;
typedef struct  HMIXER__{int i;}* HMIXER  ;
typedef HMIXER *LPHMIXER;
typedef struct tagMIXERCAPSA {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	CHAR szPname[32 ];
	DWORD fdwSupport;
	DWORD cDestinations;
} MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA;
typedef struct tagMIXERCAPSW {
	WORD wMid;
	WORD wPid;
	MMVERSION vDriverVersion;
	WCHAR szPname[32 ];
	DWORD fdwSupport;
	DWORD cDestinations;
} MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW;
typedef struct tagMIXERLINEA {
	DWORD cbStruct;
	DWORD dwDestination;
	DWORD dwSource;
	DWORD dwLineID;
	DWORD fdwLine;
	DWORD dwUser;
	DWORD dwComponentType;
	DWORD cChannels;
	DWORD cConnections;
	DWORD cControls;
	CHAR szShortName[16 ];
	CHAR szName[64 ];
	struct {
		DWORD dwType;
		DWORD dwDeviceID;
		WORD wMid;
		WORD wPid;
		MMVERSION vDriverVersion;
		CHAR szPname[32 ];
	} Target;
} MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA;
typedef struct tagMIXERLINEW {
	DWORD cbStruct;
	DWORD dwDestination;
	DWORD dwSource;
	DWORD dwLineID;
	DWORD fdwLine;
	DWORD dwUser;
	DWORD dwComponentType;
	DWORD cChannels;
	DWORD cConnections;
	DWORD cControls;
	WCHAR szShortName[16 ];
	WCHAR szName[64 ];
	struct {
		DWORD dwType;
		DWORD dwDeviceID;
		WORD wMid;
		WORD wPid;
		MMVERSION vDriverVersion;
		WCHAR szPname[32 ];
	} Target;
} MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW;
typedef struct tagMIXERCONTROLA {
	DWORD cbStruct;
	DWORD dwControlID;
	DWORD dwControlType;
	DWORD fdwControl;
	DWORD cMultipleItems;
	CHAR szShortName[16 ];
	CHAR szName[64 ];
	union {
		__extension__  struct {
			LONG lMinimum;
			LONG lMaximum;
		} ;
		__extension__  struct {
			DWORD dwMinimum;
			DWORD dwMaximum;
		} ;
		DWORD dwReserved[6];
	} Bounds;
	union {
		DWORD cSteps;
		DWORD cbCustomData;
		DWORD dwReserved[6];
	} Metrics;
} MIXERCONTROLA,*PMIXERCONTROLA,*LPMIXERCONTROLA;
typedef struct tagMIXERCONTROLW {
	DWORD cbStruct;
	DWORD dwControlID;
	DWORD dwControlType;
	DWORD fdwControl;
	DWORD cMultipleItems;
	WCHAR szShortName[16 ];
	WCHAR szName[64 ];
	union {
		__extension__  struct {
			LONG lMinimum;
			LONG lMaximum;
		} ;
		__extension__  struct {
			DWORD dwMinimum;
			DWORD dwMaximum;
		} ;
		DWORD dwReserved[6];
	} Bounds;
	union {
		DWORD cSteps;
		DWORD cbCustomData;
		DWORD dwReserved[6];
	} Metrics;
} MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW;
typedef struct tagMIXERLINECONTROLSA {
	DWORD cbStruct;
	DWORD dwLineID;
	__extension__  union {
		DWORD dwControlID;
		DWORD dwControlType;
	}  ;
	DWORD cControls;
	DWORD cbmxctrl;
	LPMIXERCONTROLA pamxctrl;
} MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA;
typedef struct tagMIXERLINECONTROLSW {
	DWORD cbStruct;
	DWORD dwLineID;
	__extension__  union {
		DWORD dwControlID;
		DWORD dwControlType;
	}  ;
	DWORD cControls;
	DWORD cbmxctrl;
	LPMIXERCONTROLW pamxctrl;
} MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW;
typedef struct tMIXERCONTROLDETAILS {
	DWORD cbStruct;
	DWORD dwControlID;
	DWORD cChannels;
	__extension__  union {
		HWND hwndOwner;
		DWORD cMultipleItems;
	}  ;
	DWORD cbDetails;
	PVOID paDetails;
} MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
	DWORD dwParam1;
	DWORD dwParam2;
	CHAR szName[64 ];
} MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
	DWORD dwParam1;
	DWORD dwParam2;
	WCHAR szName[64 ];
} MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
typedef struct tMIXERCONTROLDETAILS_BOOLEAN {
	LONG fValue;
} MIXERCONTROLDETAILS_BOOLEAN,*PMIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
typedef struct tMIXERCONTROLDETAILS_SIGNED {
	LONG lValue;
} MIXERCONTROLDETAILS_SIGNED,*PMIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
typedef struct tMIXERCONTROLDETAILS_UNSIGNED {
	DWORD dwValue;
} MIXERCONTROLDETAILS_UNSIGNED,*PMIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
typedef void(__attribute__((__stdcall__))   TIMECALLBACK)(UINT,UINT,DWORD,DWORD,DWORD);
typedef TIMECALLBACK *LPTIMECALLBACK;
typedef struct timecaps_tag {
	UINT wPeriodMin;
	UINT wPeriodMax;
} TIMECAPS,*PTIMECAPS,*LPTIMECAPS;
typedef struct tagJOYCAPSA {
	WORD wMid;
	WORD wPid;
	CHAR szPname[32 ];
	UINT wXmin;
	UINT wXmax;
	UINT wYmin;
	UINT wYmax;
	UINT wZmin;
	UINT wZmax;
	UINT wNumButtons;
	UINT wPeriodMin;
	UINT wPeriodMax;
	UINT wRmin;
	UINT wRmax;
	UINT wUmin;
	UINT wUmax;
	UINT wVmin;
	UINT wVmax;
	UINT wCaps;
	UINT wMaxAxes;
	UINT wNumAxes;
	UINT wMaxButtons;
	CHAR szRegKey[32 ];
	CHAR szOEMVxD[260 ];
} JOYCAPSA,*PJOYCAPSA,*LPJOYCAPSA;
typedef struct tagJOYCAPSW {
	WORD wMid;
	WORD wPid;
	WCHAR szPname[32 ];
	UINT wXmin;
	UINT wXmax;
	UINT wYmin;
	UINT wYmax;
	UINT wZmin;
	UINT wZmax;
	UINT wNumButtons;
	UINT wPeriodMin;
	UINT wPeriodMax;
	UINT wRmin;
	UINT wRmax;
	UINT wUmin;
	UINT wUmax;
	UINT wVmin;
	UINT wVmax;
	UINT wCaps;
	UINT wMaxAxes;
	UINT wNumAxes;
	UINT wMaxButtons;
	WCHAR szRegKey[32 ];
	WCHAR szOEMVxD[260 ];
} JOYCAPSW,*PJOYCAPSW,*LPJOYCAPSW;
typedef struct joyinfo_tag {
	UINT wXpos;
	UINT wYpos;
	UINT wZpos;
	UINT wButtons;
} JOYINFO,*PJOYINFO,*LPJOYINFO;
typedef struct joyinfoex_tag {
	DWORD dwSize;
	DWORD dwFlags;
	DWORD dwXpos;
	DWORD dwYpos;
	DWORD dwZpos;
	DWORD dwRpos;
	DWORD dwUpos;
	DWORD dwVpos;
	DWORD dwButtons;
	DWORD dwButtonNumber;
	DWORD dwPOV;
	DWORD dwReserved1;
	DWORD dwReserved2;
} JOYINFOEX,*PJOYINFOEX,*LPJOYINFOEX;
typedef DWORD FOURCC;
typedef char *HPSTR;
typedef struct  HMMIO__{int i;}* HMMIO  ;
typedef LRESULT (__attribute__((__stdcall__))   MMIOPROC)(LPSTR,UINT,LPARAM,LPARAM);
typedef MMIOPROC *LPMMIOPROC;
typedef struct _MMIOINFO {
	DWORD dwFlags;
	FOURCC fccIOProc;
	LPMMIOPROC pIOProc;
	UINT wErrorRet;
	HTASK htask;
	LONG cchBuffer;
	HPSTR pchBuffer;
	HPSTR pchNext;
	HPSTR pchEndRead;
	HPSTR pchEndWrite;
	LONG lBufOffset;
	LONG lDiskOffset;
	DWORD adwInfo[3];
	DWORD dwReserved1;
	DWORD dwReserved2;
	HMMIO hmmio;
} MMIOINFO,*PMMIOINFO,*LPMMIOINFO;
typedef const MMIOINFO *LPCMMIOINFO;
typedef struct _MMCKINFO {
	FOURCC ckid;
	DWORD cksize;
	FOURCC fccType;
	DWORD dwDataOffset;
	DWORD dwFlags;
} MMCKINFO,*PMMCKINFO,*LPMMCKINFO;
typedef const MMCKINFO *LPCMMCKINFO;
typedef struct tagMCI_GENERIC_PARMS {
	DWORD dwCallback;
} MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS;
typedef struct tagMCI_OPEN_PARMSA {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCSTR lpstrDeviceType;
	LPCSTR lpstrElementName;
	LPCSTR lpstrAlias;
} MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA;
typedef struct tagMCI_OPEN_PARMSW {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCWSTR lpstrDeviceType;
	LPCWSTR lpstrElementName;
	LPCWSTR lpstrAlias;
} MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW;
typedef struct tagMCI_PLAY_PARMS {
	DWORD dwCallback;
	DWORD dwFrom;
	DWORD dwTo;
} MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS;
typedef struct tagMCI_SEEK_PARMS {
	DWORD dwCallback;
	DWORD dwTo;
} MCI_SEEK_PARMS, *PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS;
typedef struct tagMCI_STATUS_PARMS {
	DWORD dwCallback;
	DWORD dwReturn;
	DWORD dwItem;
	DWORD dwTrack;
} MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,*LPMCI_STATUS_PARMS;
typedef struct tagMCI_INFO_PARMSA {
	DWORD dwCallback;
	LPSTR lpstrReturn;
	DWORD dwRetSize;
} MCI_INFO_PARMSA,*LPMCI_INFO_PARMSA;
typedef struct tagMCI_INFO_PARMSW {
	DWORD dwCallback;
	LPWSTR lpstrReturn;
	DWORD dwRetSize;
} MCI_INFO_PARMSW,*LPMCI_INFO_PARMSW;
typedef struct tagMCI_GETDEVCAPS_PARMS {
	DWORD dwCallback;
	DWORD dwReturn;
	DWORD dwItem;
} MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,*LPMCI_GETDEVCAPS_PARMS;
typedef struct tagMCI_SYSINFO_PARMSA {
	DWORD dwCallback;
	LPSTR lpstrReturn;
	DWORD dwRetSize;
	DWORD dwNumber;
	UINT wDeviceType;
} MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,*LPMCI_SYSINFO_PARMSA;
typedef struct tagMCI_SYSINFO_PARMSW {
	DWORD dwCallback;
	LPWSTR lpstrReturn;
	DWORD dwRetSize;
	DWORD dwNumber;
	UINT wDeviceType;
} MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,*LPMCI_SYSINFO_PARMSW;
typedef struct tagMCI_SET_PARMS {
	DWORD dwCallback;
	DWORD dwTimeFormat;
	DWORD dwAudio;
} MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS;
typedef struct tagMCI_BREAK_PARMS {
	DWORD dwCallback;
	int nVirtKey;
	HWND hwndBreak;
} MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,*LPMCI_BREAK_PARMS;
typedef struct tagMCI_SAVE_PARMSA {
	DWORD dwCallback;
	LPCSTR lpfilename;
} MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,*LPMCI_SAVE_PARMSA;
typedef struct tagMCI_SAVE_PARMSW {
	DWORD dwCallback;
	LPCWSTR lpfilename;
} MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,*LPMCI_SAVE_PARMSW;
typedef struct tagMCI_LOAD_PARMSA {
	DWORD dwCallback;
	LPCSTR lpfilename;
} MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,*LPMCI_LOAD_PARMSA;
typedef struct tagMCI_LOAD_PARMSW {
	DWORD dwCallback;
	LPCWSTR lpfilename;
} MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,*LPMCI_LOAD_PARMSW;
typedef struct tagMCI_RECORD_PARMS {
	DWORD dwCallback;
	DWORD dwFrom;
	DWORD dwTo;
} MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS;
typedef struct tagMCI_VD_PLAY_PARMS {
	DWORD dwCallback;
	DWORD dwFrom;
	DWORD dwTo;
	DWORD dwSpeed;
} MCI_VD_PLAY_PARMS,*PMCI_VD_PLAY_PARMS,*LPMCI_VD_PLAY_PARMS;
typedef struct tagMCI_VD_STEP_PARMS {
	DWORD dwCallback;
	DWORD dwFrames;
} MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS;
typedef struct tagMCI_VD_ESCAPE_PARMSA {
	DWORD dwCallback;
	LPCSTR lpstrCommand;
} MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA;
typedef struct tagMCI_VD_ESCAPE_PARMSW {
	DWORD dwCallback;
	LPCWSTR lpstrCommand;
} MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW;
typedef struct tagMCI_WAVE_OPEN_PARMSA {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCSTR lpstrDeviceType;
	LPCSTR lpstrElementName;
	LPCSTR lpstrAlias;
	DWORD dwBufferSeconds;
} MCI_WAVE_OPEN_PARMSA,*PMCI_WAVE_OPEN_PARMSA,*LPMCI_WAVE_OPEN_PARMSA;
typedef struct tagMCI_WAVE_OPEN_PARMSW {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCWSTR lpstrDeviceType;
	LPCWSTR lpstrElementName;
	LPCWSTR lpstrAlias;
	DWORD dwBufferSeconds;
} MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW;
typedef struct tagMCI_WAVE_DELETE_PARMS {
	DWORD dwCallback;
	DWORD dwFrom;
	DWORD dwTo;
} MCI_WAVE_DELETE_PARMS, *PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS;
typedef struct tagMCI_WAVE_SET_PARMS {
	DWORD dwCallback;
	DWORD dwTimeFormat;
	DWORD dwAudio;
	UINT wInput;
	UINT wOutput;
	WORD wFormatTag;
	WORD wReserved2;
	WORD nChannels;
	WORD wReserved3;
	DWORD nSamplesPerSec;
	DWORD nAvgBytesPerSec;
	WORD nBlockAlign;
	WORD wReserved4;
	WORD wBitsPerSample;
	WORD wReserved5;
} MCI_WAVE_SET_PARMS,*PMCI_WAVE_SET_PARMS,*LPMCI_WAVE_SET_PARMS;

LRESULT __attribute__((__stdcall__))   CloseDriver(HDRVR,LONG,LONG);
HDRVR __attribute__((__stdcall__))   OpenDriver(LPCWSTR,LPCWSTR,LONG);
LRESULT __attribute__((__stdcall__))   SendDriverMessage(HDRVR,UINT,LONG,LONG);
HMODULE __attribute__((__stdcall__))   DrvGetModuleHandle(HDRVR);
HMODULE __attribute__((__stdcall__))   GetDriverModuleHandle(HDRVR);
LRESULT __attribute__((__stdcall__))   DefDriverProc(DWORD,HDRVR,UINT,LPARAM,LPARAM);
UINT __attribute__((__stdcall__))   mmsystemGetVersion(void);

BOOL __attribute__((__stdcall__))   sndPlaySoundA(LPCSTR,UINT);
BOOL __attribute__((__stdcall__))   sndPlaySoundW(LPCWSTR,UINT);
BOOL __attribute__((__stdcall__))   PlaySoundA(LPCSTR,HMODULE,DWORD);
BOOL __attribute__((__stdcall__))   PlaySoundW(LPCWSTR,HMODULE,DWORD);
UINT __attribute__((__stdcall__))   waveOutGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutGetVolume(HWAVEOUT,PDWORD);
MMRESULT __attribute__((__stdcall__))   waveOutSetVolume(HWAVEOUT,DWORD);
MMRESULT __attribute__((__stdcall__))   waveOutGetErrorTextA(MMRESULT,LPSTR,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   waveOutClose(HWAVEOUT);
MMRESULT __attribute__((__stdcall__))   waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutPause(HWAVEOUT);
MMRESULT __attribute__((__stdcall__))   waveOutRestart(HWAVEOUT);
MMRESULT __attribute__((__stdcall__))   waveOutReset(HWAVEOUT);
MMRESULT __attribute__((__stdcall__))   waveOutBreakLoop(HWAVEOUT);
MMRESULT __attribute__((__stdcall__))   waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
MMRESULT __attribute__((__stdcall__))   waveOutGetPitch(HWAVEOUT,PDWORD);
MMRESULT __attribute__((__stdcall__))   waveOutSetPitch(HWAVEOUT,DWORD);
MMRESULT __attribute__((__stdcall__))   waveOutGetPlaybackRate(HWAVEOUT,PDWORD);
MMRESULT __attribute__((__stdcall__))   waveOutSetPlaybackRate(HWAVEOUT,DWORD);
MMRESULT __attribute__((__stdcall__))   waveOutGetID(HWAVEOUT,LPUINT);
MMRESULT __attribute__((__stdcall__))   waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD);
UINT __attribute__((__stdcall__))   waveInGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   waveInGetErrorTextA(MMRESULT,LPSTR,UINT);
MMRESULT __attribute__((__stdcall__))   waveInGetErrorTextW(MMRESULT,LPWSTR,UINT);
MMRESULT __attribute__((__stdcall__))   waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   waveInClose(HWAVEIN);
MMRESULT __attribute__((__stdcall__))   waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT);
MMRESULT __attribute__((__stdcall__))   waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT);
MMRESULT __attribute__((__stdcall__))   waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT);
MMRESULT __attribute__((__stdcall__))   waveInStart(HWAVEIN);
MMRESULT __attribute__((__stdcall__))   waveInStop(HWAVEIN);
MMRESULT __attribute__((__stdcall__))   waveInReset(HWAVEIN);
MMRESULT __attribute__((__stdcall__))   waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
MMRESULT __attribute__((__stdcall__))   waveInGetID(HWAVEIN,LPUINT);
MMRESULT __attribute__((__stdcall__))   waveInMessage(HWAVEIN,UINT,DWORD,DWORD);
UINT __attribute__((__stdcall__))   midiOutGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   midiStreamClose(HMIDISTRM);
MMRESULT __attribute__((__stdcall__))   midiStreamProperty(HMIDISTRM,LPBYTE,DWORD);
MMRESULT __attribute__((__stdcall__))   midiStreamPosition(HMIDISTRM,LPMMTIME,UINT);
MMRESULT __attribute__((__stdcall__))   midiStreamOut(HMIDISTRM,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiStreamPause(HMIDISTRM);
MMRESULT __attribute__((__stdcall__))   midiStreamRestart(HMIDISTRM);
MMRESULT __attribute__((__stdcall__))   midiStreamStop(HMIDISTRM);
MMRESULT __attribute__((__stdcall__))   midiConnect(HMIDI,HMIDIOUT,PVOID);
MMRESULT __attribute__((__stdcall__))   midiDisconnect(HMIDI,HMIDIOUT,PVOID);
MMRESULT __attribute__((__stdcall__))   midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutGetVolume(HMIDIOUT,PDWORD);
MMRESULT __attribute__((__stdcall__))   midiOutSetVolume(HMIDIOUT,DWORD);
MMRESULT __attribute__((__stdcall__))   midiOutGetErrorTextA(MMRESULT,LPSTR,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutOpen(LPHMIDIOUT,UINT,DWORD,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   midiOutClose(HMIDIOUT);
MMRESULT __attribute__((__stdcall__))   midiOutPrepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutUnprepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutShortMsg(HMIDIOUT,DWORD);
MMRESULT __attribute__((__stdcall__))   midiOutLongMsg(HMIDIOUT,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutReset(HMIDIOUT);
MMRESULT __attribute__((__stdcall__))   midiOutCachePatches(HMIDIOUT,UINT,LPWORD,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutCacheDrumPatches(HMIDIOUT,UINT,LPWORD,UINT);
MMRESULT __attribute__((__stdcall__))   midiOutGetID(HMIDIOUT,LPUINT);
MMRESULT __attribute__((__stdcall__))   midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD);
UINT __attribute__((__stdcall__))   midiInGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   midiInGetErrorTextA(MMRESULT,LPSTR,UINT);
MMRESULT __attribute__((__stdcall__))   midiInGetErrorTextW(MMRESULT,LPWSTR,UINT);
MMRESULT __attribute__((__stdcall__))   midiInOpen(LPHMIDIIN,UINT,DWORD,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   midiInClose(HMIDIIN);
MMRESULT __attribute__((__stdcall__))   midiInPrepareHeader(HMIDIIN,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiInUnprepareHeader(HMIDIIN,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiInAddBuffer(HMIDIIN,LPMIDIHDR,UINT);
MMRESULT __attribute__((__stdcall__))   midiInStart(HMIDIIN);
MMRESULT __attribute__((__stdcall__))   midiInStop(HMIDIIN);
MMRESULT __attribute__((__stdcall__))   midiInReset(HMIDIIN);
MMRESULT __attribute__((__stdcall__))   midiInGetID(HMIDIIN,LPUINT);
MMRESULT __attribute__((__stdcall__))   midiInMessage(HMIDIIN,UINT,DWORD,DWORD);
UINT __attribute__((__stdcall__))   auxGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   auxGetDevCapsA(UINT,LPAUXCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   auxGetDevCapsW(UINT,LPAUXCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   auxSetVolume(UINT,DWORD);
MMRESULT __attribute__((__stdcall__))   auxGetVolume(UINT,PDWORD);
MMRESULT __attribute__((__stdcall__))   auxOutMessage(UINT,UINT,DWORD,DWORD);
UINT __attribute__((__stdcall__))   mixerGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerClose(HMIXER);
DWORD __attribute__((__stdcall__))   mixerMessage(HMIXER,UINT,DWORD,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetID(HMIXEROBJ,PUINT,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
MMRESULT __attribute__((__stdcall__))   mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
MMRESULT __attribute__((__stdcall__))   timeGetSystemTime(LPMMTIME,UINT);
DWORD __attribute__((__stdcall__))   timeGetTime(void);
MMRESULT __attribute__((__stdcall__))   timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT);
MMRESULT __attribute__((__stdcall__))   timeKillEvent(UINT);
MMRESULT __attribute__((__stdcall__))   timeGetDevCaps(LPTIMECAPS,UINT);
MMRESULT __attribute__((__stdcall__))   timeBeginPeriod(UINT);
MMRESULT __attribute__((__stdcall__))   timeEndPeriod(UINT);
UINT __attribute__((__stdcall__))   joyGetNumDevs(void);
MMRESULT __attribute__((__stdcall__))   joyGetDevCapsA(UINT,LPJOYCAPSA,UINT);
MMRESULT __attribute__((__stdcall__))   joyGetDevCapsW(UINT,LPJOYCAPSW,UINT);
MMRESULT __attribute__((__stdcall__))   joyGetPos(UINT,LPJOYINFO);
MMRESULT __attribute__((__stdcall__))   joyGetPosEx(UINT,LPJOYINFOEX);
MMRESULT __attribute__((__stdcall__))   joyGetThreshold(UINT,LPUINT);
MMRESULT __attribute__((__stdcall__))   joyReleaseCapture(UINT);
MMRESULT __attribute__((__stdcall__))   joySetCapture(HWND,UINT,UINT,BOOL);
MMRESULT __attribute__((__stdcall__))   joySetThreshold(UINT,UINT);
FOURCC __attribute__((__stdcall__))   mmioStringToFOURCCA(LPCSTR,UINT);
FOURCC __attribute__((__stdcall__))   mmioStringToFOURCCW(LPCWSTR,UINT);
LPMMIOPROC __attribute__((__stdcall__))   mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
LPMMIOPROC __attribute__((__stdcall__))   mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
HMMIO __attribute__((__stdcall__))   mmioOpenA(LPSTR,LPMMIOINFO,DWORD);
HMMIO __attribute__((__stdcall__))   mmioOpenW(LPWSTR,LPMMIOINFO,DWORD);
MMRESULT __attribute__((__stdcall__))   mmioRenameA(LPCSTR,LPCSTR,LPCMMIOINFO,DWORD);
MMRESULT __attribute__((__stdcall__))   mmioRenameW(LPCWSTR,LPCWSTR,LPCMMIOINFO,DWORD);
MMRESULT __attribute__((__stdcall__))   mmioClose(HMMIO,UINT);
LONG __attribute__((__stdcall__))   mmioRead(HMMIO,HPSTR,LONG);
LONG __attribute__((__stdcall__))   mmioWrite(HMMIO,LPCSTR,LONG);
LONG __attribute__((__stdcall__))   mmioSeek(HMMIO,LONG,int);
MMRESULT __attribute__((__stdcall__))   mmioGetInfo(HMMIO,LPMMIOINFO,UINT);
MMRESULT __attribute__((__stdcall__))   mmioSetInfo(HMMIO,LPCMMIOINFO,UINT);
MMRESULT __attribute__((__stdcall__))   mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
MMRESULT __attribute__((__stdcall__))   mmioFlush(HMMIO,UINT);
MMRESULT __attribute__((__stdcall__))   mmioAdvance(HMMIO,LPMMIOINFO,UINT);
LRESULT __attribute__((__stdcall__))   mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
MMRESULT __attribute__((__stdcall__))   mmioDescend(HMMIO,LPMMCKINFO,const MMCKINFO*,UINT);
MMRESULT __attribute__((__stdcall__))   mmioAscend(HMMIO,LPMMCKINFO,UINT);
MMRESULT __attribute__((__stdcall__))   mmioCreateChunk(HMMIO,LPMMCKINFO,UINT);
MCIERROR __attribute__((__stdcall__))   mciSendCommandA(MCIDEVICEID,UINT,DWORD,DWORD);
MCIERROR __attribute__((__stdcall__))   mciSendCommandW(MCIDEVICEID,UINT,DWORD,DWORD);
MCIERROR __attribute__((__stdcall__))   mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
MCIERROR __attribute__((__stdcall__))   mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
MCIDEVICEID __attribute__((__stdcall__))   mciGetDeviceIDA(LPCSTR);
MCIDEVICEID __attribute__((__stdcall__))   mciGetDeviceIDW(LPCWSTR);
MCIDEVICEID __attribute__((__stdcall__))   mciGetDeviceIDFromElementIDA(DWORD,LPCSTR);
MCIDEVICEID __attribute__((__stdcall__))   mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR);
BOOL __attribute__((__stdcall__))   mciGetErrorStringA(MCIERROR,LPSTR,UINT);
BOOL __attribute__((__stdcall__))   mciGetErrorStringW(MCIERROR,LPWSTR,UINT);
BOOL __attribute__((__stdcall__))   mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD);
HTASK __attribute__((__stdcall__))   mciGetCreatorTask(MCIDEVICEID);
YIELDPROC __attribute__((__stdcall__))   mciGetYieldProc(MCIDEVICEID,PDWORD);

typedef struct tagMCI_SEQ_SET_PARMS {
	DWORD dwCallback;
	DWORD dwTimeFormat;
	DWORD dwAudio;
	DWORD dwTempo;
	DWORD dwPort;
	DWORD dwSlave;
	DWORD dwMaster;
	DWORD dwOffset;
} MCI_SEQ_SET_PARMS,*PMCI_SEQ_SET_PARMS,*LPMCI_SEQ_SET_PARMS;
typedef struct tagMCI_ANIM_OPEN_PARMSA {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCSTR lpstrDeviceType;
	LPCSTR lpstrElementName;
	LPCSTR lpstrAlias;
	DWORD dwStyle;
	HWND hWndParent;
} MCI_ANIM_OPEN_PARMSA,*PMCI_ANIM_OPEN_PARMSA,*LPMCI_ANIM_OPEN_PARMSA;
typedef struct tagMCI_ANIM_OPEN_PARMSW {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCWSTR lpstrDeviceType;
	LPCWSTR lpstrElementName;
	LPCWSTR lpstrAlias;
	DWORD dwStyle;
	HWND hWndParent;
} MCI_ANIM_OPEN_PARMSW,*PMCI_ANIM_OPEN_PARMSW,*LPMCI_ANIM_OPEN_PARMSW;
typedef struct tagMCI_ANIM_PLAY_PARMS {
	DWORD dwCallback;
	DWORD dwFrom;
	DWORD dwTo;
	DWORD dwSpeed;
} MCI_ANIM_PLAY_PARMS,*PMCI_ANIM_PLAY_PARMS,*LPMCI_ANIM_PLAY_PARMS;
typedef struct tagMCI_ANIM_STEP_PARMS {
	DWORD dwCallback;
	DWORD dwFrames;
} MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS;
typedef struct tagMCI_ANIM_WINDOW_PARMSA {
	DWORD dwCallback;
	HWND hWnd;
	UINT nCmdShow;
	LPCSTR lpstrText;
} MCI_ANIM_WINDOW_PARMSA,*PMCI_ANIM_WINDOW_PARMSA,*LPMCI_ANIM_WINDOW_PARMSA;
typedef struct tagMCI_ANIM_WINDOW_PARMSW {
	DWORD dwCallback;
	HWND hWnd;
	UINT nCmdShow;
	LPCWSTR lpstrText;
} MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,*LPMCI_ANIM_WINDOW_PARMSW;
typedef struct tagMCI_ANIM_RECT_PARMS {
	DWORD dwCallback;




	RECT rc;

} MCI_ANIM_RECT_PARMS,*PMCI_ANIM_RECT_PARMS,*LPMCI_ANIM_RECT_PARMS;
typedef struct tagMCI_ANIM_UPDATE_PARMS {
	DWORD dwCallback;
	RECT rc;
	HDC hDC;
} MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,*LPMCI_ANIM_UPDATE_PARMS;
typedef struct tagMCI_OVLY_OPEN_PARMSA {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCSTR lpstrDeviceType;
	LPCSTR lpstrElementName;
	LPCSTR lpstrAlias;
	DWORD dwStyle;
	HWND hWndParent;
} MCI_OVLY_OPEN_PARMSA,*PMCI_OVLY_OPEN_PARMSA,*LPMCI_OVLY_OPEN_PARMSA;
typedef struct tagMCI_OVLY_OPEN_PARMSW {
	DWORD dwCallback;
	MCIDEVICEID wDeviceID;
	LPCWSTR lpstrDeviceType;
	LPCWSTR lpstrElementName;
	LPCWSTR lpstrAlias;
	DWORD dwStyle;
	HWND hWndParent;
} MCI_OVLY_OPEN_PARMSW,*PMCI_OVLY_OPEN_PARMSW,*LPMCI_OVLY_OPEN_PARMSW;
typedef struct tagMCI_OVLY_WINDOW_PARMSA {
	DWORD dwCallback;
	HWND hWnd;
	UINT nCmdShow;
	LPCSTR lpstrText;
} MCI_OVLY_WINDOW_PARMSA,*PMCI_OVLY_WINDOW_PARMSA,*LPMCI_OVLY_WINDOW_PARMSA;
typedef struct tagMCI_OVLY_WINDOW_PARMSW {
	DWORD dwCallback;
	HWND hWnd;
	UINT nCmdShow;
	LPCWSTR lpstrText;
} MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,*LPMCI_OVLY_WINDOW_PARMSW;
typedef struct tagMCI_OVLY_RECT_PARMS {
	DWORD dwCallback;




	RECT rc;

} MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,*LPMCI_OVLY_RECT_PARMS;
typedef struct tagMCI_OVLY_SAVE_PARMSA {
	DWORD dwCallback;
	LPCSTR lpfilename;
	RECT rc;
} MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,*LPMCI_OVLY_SAVE_PARMSA;
typedef struct tagMCI_OVLY_SAVE_PARMSW {
	DWORD dwCallback;
	LPCWSTR lpfilename;
	RECT rc;
} MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,*LPMCI_OVLY_SAVE_PARMSW;
typedef struct tagMCI_OVLY_LOAD_PARMSA {
	DWORD dwCallback;
	LPCSTR lpfilename;
	RECT rc;
} MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,*LPMCI_OVLY_LOAD_PARMSA;
typedef struct tagMCI_OVLY_LOAD_PARMSW {
	DWORD dwCallback;
	LPCWSTR lpfilename;
	RECT rc;
} MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,*LPMCI_OVLY_LOAD_PARMSW;

# 1882 "/usr/include/w32api/mmsystem.h" 3

typedef WAVEOUTCAPSA WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS;
typedef WAVEINCAPSA WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS;
typedef MIDIOUTCAPSA MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS;
typedef MIDIINCAPSA MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS;
typedef AUXCAPSA AUXCAPS,*PAUXCAPS,*LPAUXCAPS;
typedef MIXERCAPSA MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS;
typedef MIXERLINEA MIXERLINE,*PMIXERLINE,*LPMIXERLINE;
typedef MIXERCONTROLA MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL;
typedef MIXERLINECONTROLSA MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS;
typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT;
typedef JOYCAPSA JOYCAPS,*PJOYCAPS,*LPJOYCAPS;
typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS;
typedef MCI_INFO_PARMSA MCI_INFO_PARMS,*LPMCI_INFO_PARMS;
typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS;
typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS;
typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS;
typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS;
typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS;
typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS;
typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS;
typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS;
typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS;
typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS;



























}

#pragma pack(pop)

# 82 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/nb30.h" 1 3







extern "C" {






















































































typedef struct _ACTION_HEADER {
	ULONG transport_id;
	USHORT action_code;
	USHORT reserved;
} ACTION_HEADER,*PACTION_HEADER;
typedef struct _ADAPTER_STATUS {
	UCHAR adapter_address[6];
	UCHAR rev_major;
	UCHAR reserved0;
	UCHAR adapter_type;
	UCHAR rev_minor;
	WORD duration;
	WORD frmr_recv;
	WORD frmr_xmit;
	WORD iframe_recv_err;
	WORD xmit_aborts;
	DWORD xmit_success;
	DWORD recv_success;
	WORD iframe_xmit_err;
	WORD recv_buff_unavail;
	WORD t1_timeouts;
	WORD ti_timeouts;
	DWORD reserved1;
	WORD free_ncbs;
	WORD max_cfg_ncbs;
	WORD max_ncbs;
	WORD xmit_buf_unavail;
	WORD max_dgram_size;
	WORD pending_sess;
	WORD max_cfg_sess;
	WORD max_sess;
	WORD max_sess_pkt_size;
	WORD name_count;
} ADAPTER_STATUS,*PADAPTER_STATUS;
typedef struct _FIND_NAME_BUFFER {
	UCHAR length;
	UCHAR access_control;
	UCHAR frame_control;
	UCHAR destination_addr[6];
	UCHAR source_addr[6];
	UCHAR routing_info[18];
} FIND_NAME_BUFFER,*PFIND_NAME_BUFFER;
typedef struct _FIND_NAME_HEADER {
	WORD node_count;
	UCHAR reserved;
	UCHAR unique_group;
} FIND_NAME_HEADER,*PFIND_NAME_HEADER;
typedef struct _LANA_ENUM {
	UCHAR length;
	UCHAR lana[254 +1];
} LANA_ENUM,*PLANA_ENUM;
typedef struct _NAME_BUFFER {
	UCHAR name[16 ];
	UCHAR name_num;
	UCHAR name_flags;
} NAME_BUFFER,*PNAME_BUFFER;
typedef struct _NCB {
	UCHAR ncb_command;
	UCHAR ncb_retcode;
	UCHAR ncb_lsn;
	UCHAR ncb_num;
	PUCHAR ncb_buffer;
	WORD ncb_length;
	UCHAR ncb_callname[16 ];
	UCHAR ncb_name[16 ];
	UCHAR ncb_rto;
	UCHAR ncb_sto;
	void (__attribute__((__stdcall__))   *ncb_post)(struct _NCB*);
	UCHAR ncb_lana_num;
	UCHAR ncb_cmd_cplt;
	UCHAR ncb_reserve[10];
	HANDLE ncb_event;
} NCB,*PNCB;
typedef struct _SESSION_BUFFER {
	UCHAR lsn;
	UCHAR state;
	UCHAR local_name[16 ];
	UCHAR remote_name[16 ];
	UCHAR rcvs_outstanding;
	UCHAR sends_outstanding;
} SESSION_BUFFER,*PSESSION_BUFFER;
typedef struct _SESSION_HEADER {
	UCHAR sess_name;
	UCHAR num_sess;
	UCHAR rcv_dg_outstanding;
	UCHAR rcv_any_outstanding;
} SESSION_HEADER,*PSESSION_HEADER;
UCHAR __attribute__((__stdcall__))   Netbios(PNCB);

}


# 83 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/rpc.h" 1 3

# 1 "/usr/include/w32api/windows.h" 1 3
 











# 124 "/usr/include/w32api/windows.h" 3

# 2 "/usr/include/w32api/rpc.h" 2 3










extern "C" {


















typedef void *I_RPC_HANDLE;
typedef long RPC_STATUS;

# 1 "/usr/include/w32api/rpcdce.h" 1 3







extern "C" {


















































































typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
typedef RPC_BINDING_HANDLE handle_t;
typedef struct _RPC_BINDING_VECTOR {
	unsigned long Count;
	RPC_BINDING_HANDLE BindingH[1];
} RPC_BINDING_VECTOR;
typedef struct _UUID_VECTOR {
	unsigned long Count;
	UUID *Uuid[1];
} UUID_VECTOR;
typedef void *RPC_IF_HANDLE;
typedef struct _RPC_IF_ID {
	UUID Uuid;
	unsigned short VersMajor;
	unsigned short VersMinor;
} RPC_IF_ID;
typedef struct _RPC_POLICY {
	unsigned int Length ;
	unsigned long EndpointFlags ;
	unsigned long NICFlags ;
} RPC_POLICY,*PRPC_POLICY ;
typedef void __attribute__((__stdcall__))   RPC_OBJECT_INQ_FN(UUID*,UUID*,RPC_STATUS*);
typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE,void*);
typedef struct {
	unsigned int Count;
	unsigned long Stats[1];
} RPC_STATS_VECTOR;
typedef struct {
	unsigned long Count;
	RPC_IF_ID*IfId[1];
} RPC_IF_ID_VECTOR;
typedef void *RPC_AUTH_IDENTITY_HANDLE;
typedef void *RPC_AUTHZ_HANDLE;
typedef struct _RPC_SECURITY_QOS {
	unsigned long Version;
	unsigned long Capabilities;
	unsigned long IdentityTracking;
	unsigned long ImpersonationType;
} RPC_SECURITY_QOS,*PRPC_SECURITY_QOS;
typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
	unsigned short *User;
	unsigned long UserLength;
	unsigned short *Domain;
	unsigned long DomainLength;
	unsigned short *Password;
	unsigned long PasswordLength;
	unsigned long Flags;
} SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W;
typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
	unsigned char *User;
	unsigned long UserLength;
	unsigned char *Domain;
	unsigned long DomainLength;
	unsigned char *Password;
	unsigned long PasswordLength;
	unsigned long Flags;
} SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A;
typedef struct {
	unsigned char *UserName;
	unsigned char *ComputerName;
	unsigned short Privilege;
	unsigned long AuthFlags;
} RPC_CLIENT_INFORMATION1,* PRPC_CLIENT_INFORMATION1;
typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
typedef int(__attribute__((__stdcall__))   *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE,unsigned long,RPC_STATUS*);


typedef struct _RPC_PROTSEQ_VECTORA {
	unsigned int Count;
	unsigned char*Protseq[1];
} RPC_PROTSEQ_VECTORA;
typedef struct _RPC_PROTSEQ_VECTORW {
	unsigned int Count;
	unsigned short*Protseq[1];
} RPC_PROTSEQ_VECTORW;
RPC_STATUS __attribute__((__stdcall__))   RpcBindingFromStringBindingA(unsigned char *,RPC_BINDING_HANDLE *);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingFromStringBindingW(unsigned short *,RPC_BINDING_HANDLE *);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingToStringBindingA(RPC_BINDING_HANDLE,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingToStringBindingW(RPC_BINDING_HANDLE,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcStringBindingComposeA(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **);
RPC_STATUS __attribute__((__stdcall__))   RpcStringBindingComposeW(unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short **);
RPC_STATUS __attribute__((__stdcall__))   RpcStringBindingParseA(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **);
RPC_STATUS __attribute__((__stdcall__))   RpcStringBindingParseW(unsigned short *,unsigned short **,unsigned short **,unsigned short **,unsigned short **,unsigned short **);
RPC_STATUS __attribute__((__stdcall__))   RpcStringFreeA(unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcStringFreeW(unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcNetworkIsProtseqValidA(unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNetworkIsProtseqValidW(unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**);
RPC_STATUS __attribute__((__stdcall__))   RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**);
RPC_STATUS __attribute__((__stdcall__))   RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**);
RPC_STATUS __attribute__((__stdcall__))   RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqA(unsigned char*,unsigned int,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqW(unsigned short*,unsigned int,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqExA(unsigned char*,unsigned int MaxCalls,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqExW(unsigned short*,unsigned int,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqEpA(unsigned char*,unsigned int,unsigned char*,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqEpExA(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqEpW(unsigned short*,unsigned int,unsigned short*,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqEpExW(unsigned short*,unsigned int,unsigned short*,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqIfA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqIfExA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqIfW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseProtseqIfExW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcServerInqDefaultPrincNameA(unsigned long,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcServerInqDefaultPrincNameW(unsigned long,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqAuthClientA(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned char**,unsigned long*,unsigned long*,unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqAuthClientW(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned short**,unsigned long*,unsigned long*,unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE,unsigned short**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*,unsigned long,RPC_SECURITY_QOS*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE,unsigned short ** , unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long , RPC_SECURITY_QOS *);
typedef void(__attribute__((__stdcall__))   *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned short*,unsigned long,void**,RPC_STATUS*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerRegisterAuthInfoA(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerRegisterAuthInfoW(unsigned short*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
RPC_STATUS __attribute__((__stdcall__))   UuidToStringA(UUID*,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   UuidFromStringA(unsigned char*,UUID*);
RPC_STATUS __attribute__((__stdcall__))   UuidToStringW(UUID*,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   UuidFromStringW(unsigned short*,UUID*);
RPC_STATUS __attribute__((__stdcall__))   RpcEpRegisterNoReplaceA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcEpRegisterNoReplaceW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*, UUID_VECTOR*,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcEpRegisterA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcEpRegisterW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   DceErrorInqTextA(RPC_STATUS,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   DceErrorInqTextW(RPC_STATUS,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**);
# 259 "/usr/include/w32api/rpcdce.h" 3



































# 327 "/usr/include/w32api/rpcdce.h" 3


RPC_STATUS __attribute__((__stdcall__))   RpcBindingCopy(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingFree(RPC_BINDING_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingInqObject(RPC_BINDING_HANDLE,UUID *);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingReset(RPC_BINDING_HANDLE);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingSetObject(RPC_BINDING_HANDLE,UUID *);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqDefaultProtectLevel(unsigned long,unsigned long *);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingVectorFree(RPC_BINDING_VECTOR **);
RPC_STATUS __attribute__((__stdcall__))   RpcIfInqId(RPC_IF_HANDLE,RPC_IF_ID *);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqComTimeout(RPC_BINDING_HANDLE,unsigned int*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtSetComTimeout(RPC_BINDING_HANDLE,unsigned int);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtSetCancelTimeout(long Timeout);
RPC_STATUS __attribute__((__stdcall__))   RpcObjectInqType(UUID *,UUID *);
RPC_STATUS __attribute__((__stdcall__))   RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *);
RPC_STATUS __attribute__((__stdcall__))   RpcObjectSetType(UUID *,UUID *);
RPC_STATUS __attribute__((__stdcall__))   RpcProtseqVectorFreeA (RPC_PROTSEQ_VECTORA  **);
RPC_STATUS __attribute__((__stdcall__))   RpcServerInqIf(RPC_IF_HANDLE,UUID*,void **);
RPC_STATUS __attribute__((__stdcall__))   RpcServerListen(unsigned int,unsigned int,unsigned int);
RPC_STATUS __attribute__((__stdcall__))   RpcServerRegisterIf(RPC_IF_HANDLE,UUID*,void *);
RPC_STATUS __attribute__((__stdcall__))   RpcServerRegisterIfEx(RPC_IF_HANDLE,UUID*,void *,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUnregisterIf(RPC_IF_HANDLE,UUID*,unsigned int);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseAllProtseqs(unsigned int,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseAllProtseqsEx(unsigned int,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseAllProtseqsIf(unsigned int,RPC_IF_HANDLE,void*);
RPC_STATUS __attribute__((__stdcall__))   RpcServerUseAllProtseqsIfEx(unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqStats(RPC_BINDING_HANDLE,RPC_STATS_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtIsServerListening(RPC_BINDING_HANDLE);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtStopServerListening(RPC_BINDING_HANDLE);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtWaitServerListen(void);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtSetServerStackSize(unsigned long);
void __attribute__((__stdcall__))   RpcSsDontSerializeContext(void);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtEnableIdleCleanup(void);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqIfIds(RPC_BINDING_HANDLE,RPC_IF_ID_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcIfIdVectorFree(RPC_IF_ID_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcEpResolveBinding(RPC_BINDING_HANDLE,RPC_IF_HANDLE);
RPC_STATUS __attribute__((__stdcall__))   RpcBindingServerFromClient(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*);
__attribute__(( noreturn ))   void  __attribute__((__stdcall__))   RpcRaiseException(RPC_STATUS);
RPC_STATUS __attribute__((__stdcall__))   RpcTestCancel(void);
RPC_STATUS __attribute__((__stdcall__))   RpcCancelThread(void*);
RPC_STATUS __attribute__((__stdcall__))   UuidCreate(UUID*);
signed int __attribute__((__stdcall__))   UuidCompare(UUID*,UUID*, RPC_STATUS*);
RPC_STATUS __attribute__((__stdcall__))   UuidCreateNil(UUID*);
int __attribute__((__stdcall__))   UuidEqual(UUID*,UUID*, RPC_STATUS*);
unsigned short __attribute__((__stdcall__))   UuidHash(UUID*,RPC_STATUS*);
int __attribute__((__stdcall__))   UuidIsNil(UUID*,RPC_STATUS*);
RPC_STATUS __attribute__((__stdcall__))   RpcEpUnregister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtInqParameter(unsigned int,unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtSetParameter(unsigned int,unsigned long);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long);
# 1 "/usr/include/w32api/rpcdcep.h" 1 3







extern "C" {













typedef struct _RPC_VERSION {
	unsigned short MajorVersion;
	unsigned short MinorVersion;
} RPC_VERSION;
typedef struct _RPC_SYNTAX_IDENTIFIER {
	GUID SyntaxGUID;
	RPC_VERSION SyntaxVersion;
} RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER;
typedef struct _RPC_MESSAGE {
	HANDLE Handle;
	unsigned long DataRepresentation;
	void *Buffer;
	unsigned int BufferLength;
	unsigned int ProcNum;
	PRPC_SYNTAX_IDENTIFIER TransferSyntax;
	void *RpcInterfaceInformation;
	void *ReservedForRuntime;
	void *ManagerEpv;
	void *ImportContext;
	unsigned long RpcFlags;
} RPC_MESSAGE,*PRPC_MESSAGE;
typedef long __attribute__((__stdcall__))  RPC_FORWARD_FUNCTION(GUID*,RPC_VERSION*,GUID*,unsigned char*,void**);
typedef void(__attribute__((__stdcall__))  *RPC_DISPATCH_FUNCTION) ( PRPC_MESSAGE Message);
typedef struct {
	unsigned int DispatchTableCount;
	RPC_DISPATCH_FUNCTION *DispatchTable;
	int Reserved;
} RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE;
typedef struct _RPC_PROTSEQ_ENDPOINT {
	unsigned char *RpcProtocolSequence;
	unsigned char *Endpoint;
} RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT;
typedef struct _RPC_SERVER_INTERFACE {
	unsigned int Length;
	RPC_SYNTAX_IDENTIFIER InterfaceId;
	RPC_SYNTAX_IDENTIFIER TransferSyntax;
	PRPC_DISPATCH_TABLE DispatchTable;
	unsigned int RpcProtseqEndpointCount;
	PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
	void *DefaultManagerEpv;
	void const *InterpreterInfo;
} RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE;
typedef struct _RPC_CLIENT_INTERFACE {
	unsigned int Length;
	RPC_SYNTAX_IDENTIFIER InterfaceId;
	RPC_SYNTAX_IDENTIFIER TransferSyntax;
	PRPC_DISPATCH_TABLE DispatchTable;
	unsigned int RpcProtseqEndpointCount;
	PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
	unsigned long Reserved;
	void const *InterpreterInfo;
} RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE;
typedef void *I_RPC_MUTEX;
typedef struct _RPC_TRANSFER_SYNTAX {
	GUID Uuid;
	unsigned short VersMajor;
	unsigned short VersMinor;
} RPC_TRANSFER_SYNTAX;
typedef long(__attribute__((__stdcall__))  *RPC_BLOCKING_FUNCTION)(void*,void*);

long __attribute__((__stdcall__))  I_RpcGetBuffer(RPC_MESSAGE*);
long __attribute__((__stdcall__))  I_RpcSendReceive(RPC_MESSAGE*);
long __attribute__((__stdcall__))  I_RpcFreeBuffer(RPC_MESSAGE*);
void __attribute__((__stdcall__))  I_RpcRequestMutex(I_RPC_MUTEX*);
void __attribute__((__stdcall__))  I_RpcClearMutex(I_RPC_MUTEX);
void __attribute__((__stdcall__))  I_RpcDeleteMutex(I_RPC_MUTEX);
__attribute__((__stdcall__))   void *   I_RpcAllocate(unsigned int);
void __attribute__((__stdcall__))  I_RpcFree(void*);
void __attribute__((__stdcall__))  I_RpcPauseExecution(unsigned long);
typedef void(__attribute__((__stdcall__))  *PRPC_RUNDOWN) (void*);
long __attribute__((__stdcall__))  I_RpcMonitorAssociation(HANDLE,PRPC_RUNDOWN,void*);
long __attribute__((__stdcall__))  I_RpcStopMonitorAssociation(HANDLE);
HANDLE __attribute__((__stdcall__))  I_RpcGetCurrentCallHandle(void);
long __attribute__((__stdcall__))  I_RpcGetAssociationContext(void**);
long __attribute__((__stdcall__))  I_RpcSetAssociationContext(void*);

long __attribute__((__stdcall__))  I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned short*);
long __attribute__((__stdcall__))  I_RpcBindingInqDynamicEndpoint(HANDLE, unsigned short**);




long __attribute__((__stdcall__))  I_RpcBindingInqTransportType(HANDLE,unsigned int*);
long __attribute__((__stdcall__))  I_RpcIfInqTransferSyntaxes(HANDLE,RPC_TRANSFER_SYNTAX*,unsigned int,unsigned int*);
long __attribute__((__stdcall__))  I_UuidCreate(GUID*);
long __attribute__((__stdcall__))  I_RpcBindingCopy(HANDLE,HANDLE*);
long __attribute__((__stdcall__))  I_RpcBindingIsClientLocal(HANDLE,unsigned int*);
void __attribute__((__stdcall__))  I_RpcSsDontSerializeContext(void);
long __attribute__((__stdcall__))  I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*);
long __attribute__((__stdcall__))  I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*);
long __attribute__((__stdcall__))  I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long);
long __attribute__((__stdcall__))  I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FUNCTION);
long __attribute__((__stdcall__))  I_RpcAsyncSendReceive(RPC_MESSAGE*,void*);
long __attribute__((__stdcall__))  I_RpcGetThreadWindowHandle(void**);
long __attribute__((__stdcall__))  I_RpcServerThreadPauseListening(void);
long __attribute__((__stdcall__))  I_RpcServerThreadContinueListening(void);
long __attribute__((__stdcall__))  I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*);
long __attribute__((__stdcall__))  I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*);






}


# 383 "/usr/include/w32api/rpcdce.h" 2 3


}


# 34 "/usr/include/w32api/rpc.h" 2 3

# 1 "/usr/include/w32api/rpcnsi.h" 1 3







extern "C" {

typedef void *RPC_NS_HANDLE;









RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingExportA(unsigned long,unsigned char*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingUnexportA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingLookupBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingLookupNext(RPC_NS_HANDLE,RPC_BINDING_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingLookupDone(RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupDeleteA(unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrAddA(unsigned long,unsigned char*,unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrRemoveA(unsigned long,unsigned char*,unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrInqNextA(RPC_NS_HANDLE,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrInqDone(RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileDeleteA(unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltAddA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*,unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltRemoveA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned char*,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltInqNextA(RPC_NS_HANDLE,RPC_IF_ID*,unsigned char**,unsigned long*,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltInqDone(RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsEntryObjectInqNext(   RPC_NS_HANDLE,  UUID*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsEntryObjectInqDone(    RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsEntryExpandNameA(unsigned long,unsigned char*,unsigned char**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtBindingUnexportA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtEntryCreateA(unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtEntryDeleteA(unsigned long,unsigned char*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtEntryInqIfIdsA(unsigned long,unsigned char*,RPC_IF_ID_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE,unsigned long);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtInqExpAge(unsigned long*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtSetExpAge(unsigned long);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingImportNext(RPC_NS_HANDLE,RPC_BINDING_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingImportDone(RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingSelect(RPC_BINDING_VECTOR*,RPC_BINDING_HANDLE*);

RPC_STATUS __attribute__((__stdcall__))   RpcNsEntryObjectInqBeginA(unsigned long,unsigned char*,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingImportBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*);


RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingExportW(unsigned long,unsigned short*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingUnexportW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingLookupBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupDeleteW(unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrAddW(unsigned long,unsigned short*,unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrRemoveW(unsigned long,unsigned short*,unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrInqBeginW(unsigned long,unsigned short*,unsigned long,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsGroupMbrInqNextW(RPC_NS_HANDLE,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileDeleteW(unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltAddW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*,unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltRemoveW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltInqBeginW(unsigned long,unsigned short*, unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned short*, RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsProfileEltInqNextW(RPC_NS_HANDLE,RPC_IF_ID*, unsigned short**,unsigned long*,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsEntryObjectInqBeginW(unsigned long,unsigned short*,RPC_NS_HANDLE*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsEntryExpandNameW(unsigned long,unsigned short*,unsigned short**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtBindingUnexportW(unsigned long,unsigned short*,RPC_IF_ID*,unsigned long,UUID_VECTOR*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtEntryCreateW(unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtEntryDeleteW(unsigned long,unsigned short*);
RPC_STATUS __attribute__((__stdcall__))   RpcNsMgmtEntryInqIfIdsW(unsigned long,unsigned short , RPC_IF_ID_VECTOR**);
RPC_STATUS __attribute__((__stdcall__))   RpcNsBindingImportBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*);

# 97 "/usr/include/w32api/rpcnsi.h" 3























}


# 35 "/usr/include/w32api/rpc.h" 2 3

# 1 "/usr/include/w32api/rpcnterr.h" 1 3






















# 36 "/usr/include/w32api/rpc.h" 2 3




 
# 51 "/usr/include/w32api/rpc.h" 3


RPC_STATUS __attribute__((__stdcall__))   RpcImpersonateClient(RPC_BINDING_HANDLE);
RPC_STATUS __attribute__((__stdcall__))   RpcRevertToSelf(void);
long __attribute__((__stdcall__))   I_RpcMapWin32Status(RPC_STATUS);

}


# 84 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/shellapi.h" 1 3







extern "C" {





















































































typedef WORD FILEOP_FLAGS;
typedef WORD PRINTEROP_FLAGS;
typedef struct _AppBarData {
	DWORD	cbSize;
	HWND	hWnd;
	UINT	uCallbackMessage;
	UINT	uEdge;
	RECT	rc;
	LPARAM lParam;
} APPBARDATA,*PAPPBARDATA;
typedef struct  HDROP__{int i;}* HDROP  ;
typedef struct _NOTIFYICONDATAA {
	DWORD cbSize;
	HWND hWnd;
	UINT uID;
	UINT uFlags;
	UINT uCallbackMessage;
	HICON hIcon;
	CHAR szTip[64];
} NOTIFYICONDATAA,*PNOTIFYICONDATAA;
typedef struct _NOTIFYICONDATAW {
	DWORD cbSize;
	HWND hWnd;
	UINT uID;
	UINT uFlags;
	UINT uCallbackMessage;
	HICON hIcon;
	WCHAR szTip[64];
} NOTIFYICONDATAW,*PNOTIFYICONDATAW;
typedef struct _SHELLEXECUTEINFOA {
	DWORD cbSize;
	ULONG fMask;
	HWND hwnd;
	LPCSTR lpVerb;
	LPCSTR lpFile;
	LPCSTR lpParameters;
	LPCSTR lpDirectory;
	int nShow;
	HINSTANCE hInstApp;
	PVOID lpIDList;
	LPCSTR lpClass;
	HKEY hkeyClass;
	DWORD dwHotKey;
	HANDLE hIcon;
	HANDLE hProcess;
} SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
typedef struct _SHELLEXECUTEINFOW {
	DWORD cbSize;
	ULONG fMask;
	HWND hwnd;
	LPCWSTR lpVerb;
	LPCWSTR lpFile;
	LPCWSTR lpParameters;
	LPCWSTR lpDirectory;
	int nShow;
	HINSTANCE hInstApp;
	PVOID lpIDList;
	LPCWSTR lpClass;
	HKEY hkeyClass;
	DWORD dwHotKey;
	HANDLE hIcon;
	HANDLE hProcess;
} SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
typedef struct _SHFILEOPSTRUCTA {
	HWND hwnd;
	UINT wFunc;
	LPCSTR pFrom;
	LPCSTR pTo;
	FILEOP_FLAGS fFlags;
	BOOL fAnyOperationsAborted;
	PVOID hNameMappings;
	LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
typedef struct _SHFILEOPSTRUCTW {
	HWND hwnd;
	UINT wFunc;
	LPCWSTR pFrom;
	LPCWSTR pTo;
	FILEOP_FLAGS fFlags;
	BOOL fAnyOperationsAborted;
	PVOID hNameMappings;
	LPCWSTR lpszProgressTitle;
} SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
typedef struct _SHFILEINFOA {
	HICON hIcon;
	int iIcon;
	DWORD dwAttributes;
	CHAR szDisplayName[260 ];
	CHAR szTypeName[80];
} SHFILEINFOA;
typedef struct _SHFILEINFOW {
	HICON hIcon;
	int iIcon;
	DWORD dwAttributes;
	WCHAR szDisplayName[260 ];
	WCHAR szTypeName[80];
} SHFILEINFOW;

LPWSTR * __attribute__((__stdcall__))   CommandLineToArgvW(LPCWSTR,int*);
void __attribute__((__stdcall__))   DragAcceptFiles(HWND,BOOL);
void __attribute__((__stdcall__))   DragFinish(HDROP);
UINT __attribute__((__stdcall__))   DragQueryFileA(HDROP,UINT,LPSTR,UINT);
UINT __attribute__((__stdcall__))   DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
BOOL __attribute__((__stdcall__))   DragQueryPoint(HDROP,LPPOINT);
HICON __attribute__((__stdcall__))   ExtractAssociatedIconA(HINSTANCE,LPCSTR,PWORD);
HICON __attribute__((__stdcall__))   ExtractAssociatedIconW(HINSTANCE,LPCWSTR,PWORD);
HICON __attribute__((__stdcall__))   ExtractIconA(HINSTANCE,LPCSTR,UINT);
HICON __attribute__((__stdcall__))   ExtractIconW(HINSTANCE,LPCWSTR,UINT);
HICON __attribute__((__stdcall__))   ExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
HICON __attribute__((__stdcall__))   ExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
HINSTANCE __attribute__((__stdcall__))   FindExecutableA(LPCSTR,LPCSTR,LPSTR);
HINSTANCE __attribute__((__stdcall__))   FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
UINT __attribute__((__stdcall__))   SHAppBarMessage(DWORD,PAPPBARDATA);
BOOL __attribute__((__stdcall__))   Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA);
BOOL __attribute__((__stdcall__))   Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW);
int __attribute__((__stdcall__))   ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
int __attribute__((__stdcall__))   ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
HINSTANCE __attribute__((__stdcall__))   ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
HINSTANCE __attribute__((__stdcall__))   ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
BOOL __attribute__((__stdcall__))   ShellExecuteExA(LPSHELLEXECUTEINFOA);
BOOL __attribute__((__stdcall__))   ShellExecuteExW(LPSHELLEXECUTEINFOW);
int __attribute__((__stdcall__))   SHFileOperationA(LPSHFILEOPSTRUCTA);
int __attribute__((__stdcall__))   SHFileOperationW(LPSHFILEOPSTRUCTW);
void __attribute__((__stdcall__))   SHFreeNameMappings(HANDLE);
DWORD __attribute__((__stdcall__))   SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
DWORD __attribute__((__stdcall__))   SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);

# 237 "/usr/include/w32api/shellapi.h" 3

typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
typedef SHFILEINFOA SHFILEINFO;













}


# 85 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/winperf.h" 1 3







extern "C" {





































































typedef struct _PERF_DATA_BLOCK {
	WCHAR Signature[4];
	DWORD LittleEndian;
	DWORD Version;
	DWORD Revision;
	DWORD TotalByteLength;
	DWORD HeaderLength;
	DWORD NumObjectTypes;
	LONG DefaultObject;
	SYSTEMTIME SystemTime;
	LARGE_INTEGER PerfTime;
	LARGE_INTEGER PerfFreq;
	LARGE_INTEGER PerfTime100nSec;
	DWORD SystemNameLength;
	DWORD SystemNameOffset;
} PERF_DATA_BLOCK, *PPERF_DATA_BLOCK;
typedef struct _PERF_OBJECT_TYPE {
	DWORD TotalByteLength;
	DWORD DefinitionLength;
	DWORD HeaderLength;
	DWORD ObjectNameTitleIndex;
	LPWSTR ObjectNameTitle;
	DWORD ObjectHelpTitleIndex;
	LPWSTR ObjectHelpTitle;
	DWORD DetailLevel;
	DWORD NumCounters;
	LONG DefaultCounter;
	LONG NumInstances;
	DWORD CodePage;
	LARGE_INTEGER PerfTime;
	LARGE_INTEGER PerfFreq;
} PERF_OBJECT_TYPE, *PPERF_OBJECT_TYPE;
typedef struct _PERF_COUNTER_DEFINITION {
	DWORD ByteLength;
	DWORD CounterNameTitleIndex;
	LPWSTR CounterNameTitle;
	DWORD CounterHelpTitleIndex;
	LPWSTR CounterHelpTitle;
	LONG DefaultScale;
	DWORD DetailLevel;
	DWORD CounterType;
	DWORD CounterSize;
	DWORD CounterOffset;
} PERF_COUNTER_DEFINITION,*PPERF_COUNTER_DEFINITION;
typedef struct _PERF_INSTANCE_DEFINITION {
	DWORD ByteLength;
	DWORD ParentObjectTitleIndex;
	DWORD ParentObjectInstance;
	LONG UniqueID;
	DWORD NameOffset;
	DWORD NameLength;
} PERF_INSTANCE_DEFINITION,*PPERF_INSTANCE_DEFINITION;
typedef struct _PERF_COUNTER_BLOCK {
	DWORD ByteLength;
} PERF_COUNTER_BLOCK, *PPERF_COUNTER_BLOCK;
typedef DWORD(__attribute__((__stdcall__))   PM_OPEN_PROC)(LPWSTR);
typedef DWORD(__attribute__((__stdcall__))   PM_COLLECT_PROC)(LPWSTR,PVOID*,PDWORD,PDWORD);
typedef DWORD(__attribute__((__stdcall__))   PM_CLOSE_PROC)(void);

}


# 86 "/usr/include/w32api/windows.h" 2 3

# 1 "/usr/include/w32api/winspool.h" 1 3







extern "C" {




















































































































































































































typedef struct _ADDJOB_INFO_1A {
	LPSTR Path;
	DWORD JobId;
} ADDJOB_INFO_1A,*PADDJOB_INFO_1A,*LPADDJOB_INFO_1A;
typedef struct _ADDJOB_INFO_1W {
	LPWSTR Path;
	DWORD JobId;
} ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W;
typedef struct _DATATYPES_INFO_1A{LPSTR pName;} DATATYPES_INFO_1A,*PDATATYPES_INFO_1A,*LPDATATYPES_INFO_1A;
typedef struct _DATATYPES_INFO_1W{LPWSTR pName;} DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W;
typedef struct _JOB_INFO_1A {
	DWORD JobId;
	LPSTR pPrinterName;
	LPSTR pMachineName;
	LPSTR pUserName;
	LPSTR pDocument;
	LPSTR pDatatype;
	LPSTR pStatus;
	DWORD Status;
	DWORD Priority;
	DWORD Position;
	DWORD TotalPages;
	DWORD PagesPrinted;
	SYSTEMTIME Submitted;
} JOB_INFO_1A,*PJOB_INFO_1A,*LPJOB_INFO_1A;
typedef struct _JOB_INFO_1W {
	DWORD JobId;
	LPWSTR pPrinterName;
	LPWSTR pMachineName;
	LPWSTR pUserName;
	LPWSTR pDocument;
	LPWSTR pDatatype;
	LPWSTR pStatus;
	DWORD Status;
	DWORD Priority;
	DWORD Position;
	DWORD TotalPages;
	DWORD PagesPrinted;
	SYSTEMTIME Submitted;
} JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W;
typedef struct _JOB_INFO_2A {
	DWORD JobId;
	LPSTR pPrinterName;
	LPSTR pMachineName;
	LPSTR pUserName;
	LPSTR pDocument;
	LPSTR pNotifyName;
	LPSTR pDatatype;
	LPSTR pPrintProcessor;
	LPSTR pParameters;
	LPSTR pDriverName;
	LPDEVMODEA pDevMode;
	LPSTR pStatus;
	PSECURITY_DESCRIPTOR pSecurityDescriptor;
	DWORD Status;
	DWORD Priority;
	DWORD Position;
	DWORD StartTime;
	DWORD UntilTime;
	DWORD TotalPages;
	DWORD Size;
	SYSTEMTIME Submitted;
	DWORD Time;
	DWORD PagesPrinted;
} JOB_INFO_2A,*PJOB_INFO_2A,*LPJOB_INFO_2A;
typedef struct _JOB_INFO_2W {
	DWORD JobId;
	LPWSTR pPrinterName;
	LPWSTR pMachineName;
	LPWSTR pUserName;
	LPWSTR pDocument;
	LPWSTR pNotifyName;
	LPWSTR pDatatype;
	LPWSTR pPrintProcessor;
	LPWSTR pParameters;
	LPWSTR pDriverName;
	LPDEVMODEW pDevMode;
	LPWSTR pStatus;
	PSECURITY_DESCRIPTOR pSecurityDescriptor;
	DWORD Status;
	DWORD Priority;
	DWORD Position;
	DWORD StartTime;
	DWORD UntilTime;
	DWORD TotalPages;
	DWORD Size;
	SYSTEMTIME Submitted;
	DWORD Time;
	DWORD PagesPrinted;
} JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W;
typedef struct _DOC_INFO_1A {
	LPSTR pDocName;
	LPSTR pOutputFile;
	LPSTR pDatatype;
} DOC_INFO_1A,*PDOC_INFO_1A,*LPDOC_INFO_1A;
typedef struct _DOC_INFO_1W {
	LPWSTR pDocName;
	LPWSTR pOutputFile;
	LPWSTR pDatatype;
} DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W;
typedef struct _DOC_INFO_2A {
	LPSTR pDocName;
	LPSTR pOutputFile;
	LPSTR pDatatype;
	DWORD dwMode;
	DWORD JobId;
} DOC_INFO_2A,*PDOC_INFO_2A,*LPDOC_INFO_2A;
typedef struct _DOC_INFO_2W {
	LPWSTR pDocName;
	LPWSTR pOutputFile;
	LPWSTR pDatatype;
	DWORD dwMode;
	DWORD JobId;
} DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W;
typedef	struct	_DRIVER_INFO_1A	{LPSTR	pName;} DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A;
typedef	struct	_DRIVER_INFO_1W	{LPWSTR	pName;} DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W;
typedef	struct	_DRIVER_INFO_2A	{
	DWORD cVersion;
	LPSTR pName;
	LPSTR pEnvironment;
	LPSTR pDriverPath;
	LPSTR pDataFile;
	LPSTR pConfigFile;
} DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A;
typedef	struct	_DRIVER_INFO_2W	{
	DWORD cVersion;
	LPWSTR pName;
	LPWSTR pEnvironment;
	LPWSTR pDriverPath;
	LPWSTR pDataFile;
	LPWSTR pConfigFile;
}	DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W;
typedef	struct	_DRIVER_INFO_3A	{
	DWORD cVersion;
	LPSTR pName;
	LPSTR pEnvironment;
	LPSTR pDriverPath;
	LPSTR pDataFile;
	LPSTR pConfigFile;
	LPSTR pHelpFile;
	LPSTR pDependentFiles;
	LPSTR pMonitorName;
	LPSTR pDefaultDataType;
} DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A;
typedef	struct	_DRIVER_INFO_3W	{
	DWORD cVersion;
	LPWSTR pName;
	LPWSTR pEnvironment;
	LPWSTR pDriverPath;
	LPWSTR pDataFile;
	LPWSTR pConfigFile;
	LPWSTR pHelpFile;
	LPWSTR pDependentFiles;
	LPWSTR pMonitorName;
	LPWSTR pDefaultDataType;
} DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
typedef struct _MONITOR_INFO_1A{LPSTR pName;} MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A;
typedef struct _MONITOR_INFO_1W{LPWSTR pName;} MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
typedef struct _PORT_INFO_1A {LPSTR pName;} PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A;
typedef struct _PORT_INFO_1W {LPWSTR pName;} PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W;
typedef struct _MONITOR_INFO_2A{
	LPSTR pName;
	LPSTR pEnvironment;
	LPSTR pDLLName;
} MONITOR_INFO_2A,*PMONITOR_INFO_2A,*LPMONITOR_INFO_2A;
typedef struct _MONITOR_INFO_2W{
	LPWSTR pName;
	LPWSTR pEnvironment;
	LPWSTR pDLLName;
} MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W;
typedef struct _PORT_INFO_2A {
	LPSTR pPortName;
	LPSTR pMonitorName;
	LPSTR pDescription;
	DWORD fPortType;
	DWORD Reserved;
} PORT_INFO_2A,*PPORT_INFO_2A,*LPPORT_INFO_2A;
typedef struct _PORT_INFO_2W {
	LPWSTR pPortName;
	LPWSTR pMonitorName;
	LPWSTR pDescription;
	DWORD fPortType;
	DWORD Reserved;
} PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W;
typedef struct _PORT_INFO_3A {
	DWORD dwStatus;
	LPSTR pszStatus;
	DWORD dwSeverity;
} PORT_INFO_3A,*PPORT_INFO_3A,*LPPORT_INFO_3A;
typedef struct _PORT_INFO_3W {
	DWORD dwStatus;
	LPWSTR pszStatus;
	DWORD dwSeverity;
} PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W;
typedef	struct _PRINTER_INFO_1A {
	DWORD Flags;
	LPSTR pDescription;
	LPSTR pName;
	LPSTR pComment;
} PRINTER_INFO_1A,*PPRINTER_INFO_1A,*LPPRINTER_INFO_1A;
typedef	struct _PRINTER_INFO_1W	{
	DWORD Flags;
	LPWSTR pDescription;
	LPWSTR pName;
	LPWSTR pComment;
} PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W;
typedef	struct _PRINTER_INFO_2A {
	LPSTR pServerName;
	LPSTR pPrinterName;
	LPSTR pShareName;
	LPSTR pPortName;
	LPSTR pDriverName;
	LPSTR pComment;
	LPSTR pLocation;
	LPDEVMODEA pDevMode;
	LPSTR pSepFile;
	LPSTR pPrintProcessor;
	LPSTR pDatatype;
	LPSTR pParameters;
	PSECURITY_DESCRIPTOR pSecurityDescriptor;
	DWORD Attributes;
	DWORD Priority;
	DWORD DefaultPriority;
	DWORD StartTime;
	DWORD UntilTime;
	DWORD Status;
	DWORD cJobs;
	DWORD AveragePPM;
} PRINTER_INFO_2A,*PPRINTER_INFO_2A,*LPPRINTER_INFO_2A;
typedef	struct _PRINTER_INFO_2W {
	LPWSTR pServerName;
	LPWSTR pPrinterName;
	LPWSTR pShareName;
	LPWSTR pPortName;
	LPWSTR pDriverName;
	LPWSTR pComment;
	LPWSTR pLocation;
	LPDEVMODEW pDevMode;
	LPWSTR pSepFile;
	LPWSTR pPrintProcessor;
	LPWSTR pDatatype;
	LPWSTR pParameters;
	PSECURITY_DESCRIPTOR pSecurityDescriptor;
	DWORD Attributes;
	DWORD Priority;
	DWORD DefaultPriority;
	DWORD StartTime;
	DWORD UntilTime;
	DWORD Status;
	DWORD cJobs;
	DWORD AveragePPM;
} PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W;
typedef	struct _PRINTER_INFO_3	{
	PSECURITY_DESCRIPTOR pSecurityDescriptor;
} PRINTER_INFO_3,*PPRINTER_INFO_3,*LPPRINTER_INFO_3;
typedef	struct _PRINTER_INFO_4A {
	LPSTR pPrinterName;
	LPSTR pServerName;
	DWORD Attributes;
} PRINTER_INFO_4A,*PPRINTER_INFO_4A,*LPPRINTER_INFO_4A;
typedef	struct _PRINTER_INFO_4W	{
	LPWSTR pPrinterName;
	LPWSTR pServerName;
	DWORD Attributes;
} PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W;
typedef	struct _PRINTER_INFO_5A	{
	LPSTR pPrinterName;
	LPSTR pPortName;
	DWORD Attributes;
	DWORD DeviceNotSelectedTimeout;
	DWORD TransmissionRetryTimeout;
} PRINTER_INFO_5A,*PPRINTER_INFO_5A,*LPPRINTER_INFO_5A;
typedef	struct _PRINTER_INFO_5W	{
	LPWSTR pPrinterName;
	LPWSTR pPortName;
	DWORD Attributes;
	DWORD DeviceNotSelectedTimeout;
	DWORD TransmissionRetryTimeout;
} PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W;
typedef	struct _PRINTPROCESSOR_INFO_1A {LPSTR pName;} PRINTPROCESSOR_INFO_1A,*PPRINTPROCESSOR_INFO_1A,*LPPRINTPROCESSOR_INFO_1A;
typedef	struct _PRINTPROCESSOR_INFO_1W {LPWSTR pName;} PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W;
typedef	struct	_PRINTER_NOTIFY_INFO_DATA {
	WORD Type;
	WORD Field;
	DWORD Reserved;
	DWORD Id;
	union {
		DWORD adwData[2];
		struct {
			DWORD cbBuf;
			PVOID pBuf;
		} Data;
	} NotifyData;
} PRINTER_NOTIFY_INFO_DATA,*PPRINTER_NOTIFY_INFO_DATA,*LPPRINTER_NOTIFY_INFO_DATA;
typedef	struct	_PRINTER_NOTIFY_INFO {
	DWORD Version;
	DWORD Flags;
	DWORD Count;
	PRINTER_NOTIFY_INFO_DATA aData[1];
} PRINTER_NOTIFY_INFO,*PPRINTER_NOTIFY_INFO,*LPPRINTER_NOTIFY_INFO;
typedef	struct _FORM_INFO_1A {
	DWORD	Flags;
	LPSTR	pName;
	SIZEL	Size;
	RECTL	ImageableArea;
} FORM_INFO_1A,*PFORM_INFO_1A,*LPFORM_INFO_1A;
typedef	struct _FORM_INFO_1W {
	DWORD	Flags;
	LPWSTR	pName;
	SIZEL	Size;
	RECTL	ImageableArea;
} FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W;
typedef	struct _PRINTER_DEFAULTSA {
	LPSTR pDatatype;
	LPDEVMODE pDevMode;
	ACCESS_MASK	DesiredAccess;
} PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA;
typedef	struct _PRINTER_DEFAULTSW {
	LPWSTR pDatatype;
	LPDEVMODE pDevMode;
	ACCESS_MASK DesiredAccess;
} PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;

BOOL __attribute__((__stdcall__))   AbortPrinter(HANDLE);
BOOL __attribute__((__stdcall__))   AddFormA(HANDLE,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddFormW(HANDLE,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddJobA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   AddJobW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   AddMonitorA(LPSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddMonitorW(LPWSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddPortA(LPSTR,HWND,LPSTR);
BOOL __attribute__((__stdcall__))   AddPortW(LPWSTR,HWND,LPWSTR);
HANDLE __attribute__((__stdcall__))   AddPrinterA(LPSTR,DWORD,PBYTE);
HANDLE __attribute__((__stdcall__))   AddPrinterW(LPWSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddPrinterConnectionA(LPSTR);
BOOL __attribute__((__stdcall__))   AddPrinterConnectionW(LPWSTR);
BOOL __attribute__((__stdcall__))   AddPrinterDriverA(LPSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddPrinterDriverW(LPWSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddPrintProcessorA(LPSTR,LPSTR,LPSTR,LPSTR);
BOOL __attribute__((__stdcall__))   AddPrintProcessorW(LPWSTR,LPWSTR,LPWSTR,LPWSTR);
BOOL __attribute__((__stdcall__))   AddPrintProvidorA(LPSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   AddPrintProvidorW(LPWSTR,DWORD,PBYTE);
LONG __attribute__((__stdcall__))   AdvancedDocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODE,PDEVMODEA);
LONG __attribute__((__stdcall__))   AdvancedDocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODE,PDEVMODEW);
BOOL __attribute__((__stdcall__))   ClosePrinter(HANDLE);
BOOL __attribute__((__stdcall__))   ConfigurePortA(LPSTR,HWND,LPSTR);
BOOL __attribute__((__stdcall__))   ConfigurePortW(LPWSTR,HWND,LPWSTR);
HANDLE __attribute__((__stdcall__))   ConnectToPrinterDlg(HWND,DWORD);
BOOL __attribute__((__stdcall__))   DeleteFormA(HANDLE,LPSTR);
BOOL __attribute__((__stdcall__))   DeleteFormW(HANDLE,LPWSTR);
BOOL __attribute__((__stdcall__))   DeleteMonitorA(LPSTR,LPSTR,LPSTR);
BOOL __attribute__((__stdcall__))   DeleteMonitorW(LPWSTR,LPWSTR,LPWSTR);
BOOL __attribute__((__stdcall__))   DeletePortA(LPSTR,HWND,LPSTR);
BOOL __attribute__((__stdcall__))   DeletePortW(LPWSTR,HWND,LPWSTR);
BOOL __attribute__((__stdcall__))   DeletePrinter(HANDLE);
BOOL __attribute__((__stdcall__))   DeletePrinterConnectionA(LPSTR);
BOOL __attribute__((__stdcall__))   DeletePrinterConnectionW(LPWSTR);
DWORD __attribute__((__stdcall__))   DeletePrinterDataA(HANDLE,LPSTR);
DWORD __attribute__((__stdcall__))   DeletePrinterDataW(HANDLE,LPWSTR);
BOOL __attribute__((__stdcall__))   DeletePrinterDriverA(LPSTR,LPSTR,LPSTR);
BOOL __attribute__((__stdcall__))   DeletePrinterDriverW(LPWSTR,LPWSTR,LPWSTR);
BOOL __attribute__((__stdcall__))   DeletePrintProcessorA(LPSTR,LPSTR,LPSTR);
BOOL __attribute__((__stdcall__))   DeletePrintProcessorW(LPWSTR,LPWSTR,LPWSTR);
BOOL __attribute__((__stdcall__))   DeletePrintProvidorA(LPSTR,LPSTR,LPSTR);
BOOL __attribute__((__stdcall__))   DeletePrintProvidorW(LPWSTR,LPWSTR,LPWSTR);
LONG __attribute__((__stdcall__))   DocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODEA,PDEVMODEA,DWORD);
LONG __attribute__((__stdcall__))   DocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODEA,PDEVMODEA,DWORD);
BOOL __attribute__((__stdcall__))   EndDocPrinter(HANDLE);
BOOL __attribute__((__stdcall__))   EndPagePrinter(HANDLE);
BOOL __attribute__((__stdcall__))   EnumFormsA(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumFormsW(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumJobsA(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumJobsW(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumMonitorsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumMonitorsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPortsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPortsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
DWORD __attribute__((__stdcall__))   EnumPrinterDataA(HANDLE,DWORD,LPSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   EnumPrinterDataW(HANDLE,DWORD,LPWSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrinterDriversA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrinterDriversW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrintersA(DWORD,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrintersW(DWORD,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrintProcessorDatatypesA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrintProcessorDatatypesW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrintProcessorsA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   EnumPrintProcessorsW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
BOOL __attribute__((__stdcall__))   FindClosePrinterChangeNotification(HANDLE);
HANDLE __attribute__((__stdcall__))   FindFirstPrinterChangeNotification(HANDLE,DWORD,DWORD,PVOID);
HANDLE __attribute__((__stdcall__))   FindNextPrinterChangeNotification(HANDLE,PDWORD,PVOID,PVOID*);
BOOL __attribute__((__stdcall__))   FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
BOOL __attribute__((__stdcall__))   GetFormA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetFormW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetPrinterA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   GetPrinterW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrinterDataA(HANDLE,LPSTR,PDWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrinterDataW(HANDLE,LPWSTR,PDWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrinterDriverA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrinterDriverW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrintProcessorDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
DWORD __attribute__((__stdcall__))   GetPrintProcessorDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   OpenPrinterA(LPSTR,PHANDLE,LPPRINTER_DEFAULTSA);
BOOL __attribute__((__stdcall__))   OpenPrinterW(LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW);
DWORD __attribute__((__stdcall__))   PrinterMessageBoxA(HANDLE,DWORD,HWND,LPSTR,LPSTR,DWORD);
DWORD __attribute__((__stdcall__))   PrinterMessageBoxW(HANDLE,DWORD,HWND,LPWSTR,LPWSTR,DWORD);
BOOL __attribute__((__stdcall__))   PrinterProperties(HWND,HANDLE);
BOOL __attribute__((__stdcall__))   ReadPrinter(HANDLE,PVOID,DWORD,PDWORD);
BOOL __attribute__((__stdcall__))   ResetPrinterA(HANDLE,LPPRINTER_DEFAULTSA);
BOOL __attribute__((__stdcall__))   ResetPrinterW(HANDLE,LPPRINTER_DEFAULTSW);
BOOL __attribute__((__stdcall__))   ScheduleJob(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   SetFormA(HANDLE,LPSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   SetFormW(HANDLE,LPWSTR,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   SetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD);
BOOL __attribute__((__stdcall__))   SetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD);
BOOL __attribute__((__stdcall__))   SetPrinterA(HANDLE,DWORD,PBYTE,DWORD);
BOOL __attribute__((__stdcall__))   SetPrinterW(HANDLE,DWORD,PBYTE,DWORD);
BOOL __attribute__((__stdcall__))   SetPrinterDataA(HANDLE,LPSTR,DWORD,PBYTE,DWORD);
BOOL __attribute__((__stdcall__))   SetPrinterDataW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD);
DWORD __attribute__((__stdcall__))   StartDocPrinterA(HANDLE,DWORD,PBYTE);
DWORD __attribute__((__stdcall__))   StartDocPrinterW(HANDLE,DWORD,PBYTE);
BOOL __attribute__((__stdcall__))   StartPagePrinter(HANDLE);
DWORD __attribute__((__stdcall__))   WaitForPrinterChange(HANDLE,DWORD);
BOOL __attribute__((__stdcall__))   WritePrinter(HANDLE,PVOID,DWORD,PDWORD);

# 713 "/usr/include/w32api/winspool.h" 3

typedef JOB_INFO_1A JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
typedef JOB_INFO_2A JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
typedef ADDJOB_INFO_1A ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
typedef DATATYPES_INFO_1A DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
typedef MONITOR_INFO_1A MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
typedef MONITOR_INFO_2A MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
typedef DOC_INFO_1A DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
typedef DOC_INFO_2A DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
typedef PORT_INFO_1A PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
typedef PRINTER_INFO_5A PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
typedef FORM_INFO_1A FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;















































}


# 87 "/usr/include/w32api/windows.h" 2 3








# 106 "/usr/include/w32api/windows.h" 3



















# 4 "../src/muscle/iogateway/AbstractMessageIOGateway.cpp" 2



# 1 "../src/muscle/iogateway/AbstractMessageIOGateway.h" 1
 








# 1 "../src/muscle/dataio/DataIO.h" 1
 








# 1 "../src/muscle/util/RefCount.h" 1
  








# 1 "../src/muscle/util/ObjectPool.h" 1
 








# 1 "../src/muscle/util/Queue.h" 1
 










namespace muscle {





 



template <class ItemType> class Queue
{
public:
    


   Queue(uint32 initialSize = 3 );

    
   Queue(const Queue& copyMe);

    
   virtual ~Queue();

    
   Queue &operator=(const Queue &from);

    

   bool operator==(const Queue &rhs) const;

    
   bool operator!=(const Queue &rhs) const {return !(*this == rhs);}

    


   status_t AddTail() {ItemType blank = ItemType(); return AddTail(blank);}

    



   status_t AddTail(const ItemType & item);

    








   status_t AddTail(const Queue<ItemType> & queue);

    


   status_t AddHead() {ItemType blank = ItemType(); return AddHead(blank);}

    



   status_t AddHead(const ItemType &item);

    








   status_t AddHead(const Queue<ItemType> & queue);

    


   status_t RemoveHead();

    



   status_t RemoveHead(ItemType & returnItem);

    


   status_t RemoveTail();

    



   status_t RemoveTail(ItemType & returnItem);

    






   status_t RemoveItemAt(uint32 index);

    





   status_t RemoveItemAt(uint32 index, ItemType & returnItem);

    





   status_t GetItemAt(uint32 index, ItemType & returnItem) const;

    




   status_t ReplaceItemAt(uint32 index) {ItemType blank = ItemType(); return ReplaceItemAt(index, blank);}
 
    





   status_t ReplaceItemAt(uint32 index, const ItemType & newItem);
 
    





   status_t InsertItemAt(uint32 index) {ItemType blank = ItemType(); return InsertItemAt(index, blank);}
   
    






   status_t InsertItemAt(uint32 index, const ItemType & newItem);
   
    
   void Clear();

    
   uint32 GetNumItems() const {return _itemCount;}

    
   bool IsEmpty() const {return (_itemCount == 0);}

    
   const ItemType & Head() const {return *GetItemPointer(0);}

    
   const ItemType & Tail() const {return *GetItemPointer(_itemCount-1);}

    
   ItemType & Head() {return *GetItemPointer(0);}

    
   ItemType & Tail() {return *GetItemPointer(_itemCount-1);}

    
   ItemType * HeadPointer() const {return (_itemCount > 0) ? GetItemPointer(0) : __null ;}

    
   ItemType * TailPointer() const {return (_itemCount > 0) ? GetItemPointer(_itemCount-1) : __null ;}

    
   const ItemType & operator [](uint32 Index) const; 

    
   ItemType & operator [](uint32 Index);

    






   ItemType * GetItemPointer(uint32 index) const;

    





   status_t EnsureSize(uint32 numItems);

    




   int32 IndexOf(const ItemType & item) const;

    





   void Swap(uint32 fromIndex, uint32 toIndex);

    







   void ReverseItemOrdering(uint32 from=0, uint32 to = ((uint32)-1)); 

    









   typedef int (*ItemCompareFunc)(const ItemType & item1, const ItemType & item2, void * cookie);

    












   void Sort(ItemCompareFunc compareFunc, uint32 from=0, uint32 to = ((uint32)-1), void * optCookie = __null );

    




   uint32 RemoveAllInstancesOf(const ItemType & val);

    




   status_t RemoveFirstInstanceOf(const ItemType & val);

    




   status_t RemoveLastInstanceOf(const ItemType & val);

private:
   inline uint32 NextIndex(uint32 idx) const {return (idx >= _queueSize-1) ? 0 : idx+1;}
   inline uint32 PrevIndex(uint32 idx) const {return (idx <= 0) ? _queueSize-1 : idx-1;}

    
   inline uint32 InternalizeIndex(uint32 idx) const {return (_headIndex + idx) % _queueSize;}

    
   void Merge(ItemCompareFunc compareFunc, uint32 from, uint32 pivot, uint32 to, uint32 len1, uint32 len2, void * cookie);
   uint32 Lower(ItemCompareFunc compareFunc, uint32 from, uint32 to, const ItemType & val, void * cookie) const;
   uint32 Upper(ItemCompareFunc compareFunc, uint32 from, uint32 to, const ItemType & val, void * cookie) const;

   ItemType _smallQueue[3 ];   
   ItemType * _queue;                        
   uint32 _queueSize;   
   uint32 _itemCount;   
   int32 _headIndex;    
   int32 _tailIndex;    
   const uint32 _initialSize;   
};

template <class ItemType>
Queue<ItemType>::Queue(uint32 initialSize)
   : _queue(__null ), _queueSize(0), _itemCount(0), _initialSize(initialSize)
{
    
}

template <class ItemType>
Queue<ItemType>::Queue(const Queue& rhs)
   : _queue(__null ), _queueSize(0), _itemCount(0), _initialSize(rhs._initialSize)
{
   *this = rhs;
}

template <class ItemType>
bool
Queue<ItemType>::operator ==(const Queue& rhs) const
{
   if (this == &rhs) return 1 ;
   if (GetNumItems() != rhs.GetNumItems()) return 0 ;

   for (int i = GetNumItems()-1; i>=0; i--) if ((*this)[i] != rhs[i]) return 0 ;

   return 1 ;
}


template <class ItemType>
Queue<ItemType> &
Queue<ItemType>::operator =(const Queue& rhs)
{
   if (this != &rhs)
   {
      Clear();
      uint32 numItems = rhs.GetNumItems();
      if (EnsureSize(numItems) == 0 )
      {
         for (uint32 i=0; i<numItems; i++) 
         {
            if (AddTail(*rhs.GetItemPointer(i)) == -1 ) break;   
         }
      }
   }
   return *this;
}

template <class ItemType>
ItemType &
Queue<ItemType>::operator[](uint32 i)
{
   {if(!( i<_itemCount )) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ASSERTION FAILED: (%s:%i) %s\n", "../src/muscle/util/Queue.h",363,   "Invalid index to Queue::[]"  ); *((uint32*)__null ) = 0x666 ;} } ;
   return _queue[InternalizeIndex(i)];
}

template <class ItemType>
const ItemType &
Queue<ItemType>::operator[](uint32 i) const
{
   {if(!( i<_itemCount )) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ASSERTION FAILED: (%s:%i) %s\n", "../src/muscle/util/Queue.h",371,   "Invalid index to Queue::[]"  ); *((uint32*)__null ) = 0x666 ;} } ;
   return _queue[InternalizeIndex(i)];
}             

template <class ItemType>
ItemType * 
Queue<ItemType>::GetItemPointer(uint32 i) const
{
   return &_queue[InternalizeIndex(i)];
}

template <class ItemType>
Queue<ItemType>::~Queue()
{
   if (_queue != _smallQueue) delete [] _queue;
}

template <class ItemType>
status_t 
Queue<ItemType>::
AddTail(const ItemType &item)
{
   if (EnsureSize(_itemCount+1) == -1 ) return -1 ;
   if (_itemCount == 0) _headIndex = _tailIndex = 0;
                   else _tailIndex = NextIndex(_tailIndex);
   _queue[_tailIndex] = item;
   _itemCount++;
   return 0 ;
}


template <class ItemType>
status_t 
Queue<ItemType>::
AddTail(const Queue<ItemType> &queue)
{
   uint32 qSize = queue.GetNumItems();
   for (uint32 i=0; i<qSize; i++) if (AddTail(queue[i]) == -1 ) return -1 ;
   return 0 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
AddHead(const ItemType &item)
{
   if (EnsureSize(_itemCount+1) == -1 ) return -1 ;
   if (_itemCount == 0) _headIndex = _tailIndex = 0;
                   else _headIndex = PrevIndex(_headIndex);
   _queue[_headIndex] = item;
   _itemCount++;
   return 0 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
AddHead(const Queue<ItemType> &queue)
{
   for (int i=((int)queue.GetNumItems())-1; i>=0; i--) if (AddHead(queue[i]) == -1 ) return -1 ;
   return 0 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
RemoveHead(ItemType & returnItem)
{
   if (_itemCount == 0) return -1 ;
   returnItem = _queue[_headIndex];
   return RemoveHead();
}

template <class ItemType>
status_t
Queue<ItemType>::
RemoveHead()
{
   if (_itemCount == 0) return -1 ;
   int oldHeadIndex = _headIndex;
   _headIndex = NextIndex(_headIndex);
   _itemCount--;
   ItemType blank = ItemType();
   _queue[oldHeadIndex] = blank;   
   return 0 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
RemoveTail(ItemType & returnItem)
{
   if (_itemCount == 0) return -1 ;
   returnItem = _queue[_tailIndex];
   return RemoveTail();
}


template <class ItemType>
status_t 
Queue<ItemType>::
RemoveTail()
{
   if (_itemCount == 0) return -1 ;
   int removedItemIndex = _tailIndex;
   _tailIndex = PrevIndex(_tailIndex);
   _itemCount--;
   ItemType blank = ItemType();
   _queue[removedItemIndex] = blank;   
   return 0 ;
}

template <class ItemType>
status_t
Queue<ItemType>::
GetItemAt(uint32 index, ItemType & returnItem) const
{
   if (index >= _itemCount) return -1 ;
   returnItem = _queue[InternalizeIndex(index)];
   return 0 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
RemoveItemAt(uint32 index, ItemType & returnItem)
{
   if (index >= _itemCount) return -1 ;
   returnItem = _queue[InternalizeIndex(index)];
   return RemoveItemAt(index);
}

template <class ItemType>
status_t 
Queue<ItemType>::
RemoveItemAt(uint32 index)
{
   if (index >= _itemCount) return -1 ;
   if (index == 0) return RemoveHead();   

   index = InternalizeIndex(index);
   while(index != (uint32) _tailIndex)
   {
      uint32 next = NextIndex(index);
      _queue[index] = _queue[next];
      index = next;
   }
   int oldIndex = _tailIndex;
   _tailIndex = PrevIndex(_tailIndex); 
   _itemCount--;
   ItemType blank = ItemType();
   _queue[oldIndex] = blank;   
   return 0 ; 
}

template <class ItemType>
status_t 
Queue<ItemType>::
ReplaceItemAt(uint32 index, const ItemType & newItem)
{
   if (index >= _itemCount) return -1 ;
   _queue[InternalizeIndex(index)] = newItem;
   return 0 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
InsertItemAt(uint32 index, const ItemType & newItem)
{
    
   if (index >  _itemCount) return -1 ;
   if (index == _itemCount) return AddTail(newItem);
   if (index == 0)          return AddHead(newItem);

    
   if (AddTail(newItem) == -1 ) return -1 ;   
   int lo = (int) index;
   for (int i=((int)_itemCount)-1; i>lo; i--) ReplaceItemAt(i, *GetItemPointer(i-1));
   ReplaceItemAt(index, newItem);
   return 0 ;
}

template <class ItemType>
void 
Queue<ItemType>::
Clear()
{
   while(RemoveTail() == 0 ) { }
}

template <class ItemType>
status_t 
Queue<ItemType>::
EnsureSize(uint32 size)
{
   if ((_queue == __null )||(_queueSize < size))
   {
      const uint32 sqLen = (sizeof( _smallQueue )/sizeof( _smallQueue [0])) ;
      uint32 newQLen = (size <= sqLen) ? sqLen : (size*2);   
      if (newQLen < _initialSize) newQLen = _initialSize;

      ItemType * newQueue = ((_queue == _smallQueue)||(newQLen > sqLen)) ? new (nothrow)  ItemType[newQLen] : _smallQueue;
      if (newQueue == __null ) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/util/Queue.h",574) ; return -1 ;}
      if (newQueue == _smallQueue) newQLen = sqLen;
      
      if (_itemCount > 0)
      {
         for (uint32 i=0; i<_itemCount; i++) (void) GetItemAt(i, newQueue[i]);
         _headIndex = 0;
         _tailIndex = _itemCount-1;
      }

      if (_queue == _smallQueue) 
      {
         ItemType blank = ItemType();
         for (uint32 i=0; i<sqLen; i++) _smallQueue[i] = blank;
      }
      else delete [] _queue;

      _queue = newQueue;
      _queueSize = newQLen;
   }
   return 0 ;
}

template <class ItemType>
int32 
Queue<ItemType>::
IndexOf(const ItemType & item) const
{
   if (_queue) for (int i=((int)GetNumItems())-1; i>=0; i--) if (*GetItemPointer(i) == item) return i;
   return -1;
}


template <class ItemType>
void 
Queue<ItemType>::
Swap(uint32 fromIndex, uint32 toIndex) 
{
   ItemType temp = *(GetItemPointer(fromIndex));
   ReplaceItemAt(fromIndex, *(GetItemPointer(toIndex)));
   ReplaceItemAt(toIndex,   temp);
}

template <class ItemType>
void 
Queue<ItemType>::
Sort(ItemCompareFunc compareFunc, uint32 from, uint32 to, void * cookie) 
{ 
   uint32 size = GetNumItems();
   if (to > size) to = size;
   if (to > from)
   {
      if (to < from+12) 
      {
          
         if (to > from+1) 
         {
            for (uint32 i=from+1; i<to; i++) 
            {
               for (uint32 j=i; j>from; j--) 
               {
                  int ret = compareFunc(*(GetItemPointer(j)), *(GetItemPointer(j-1)), cookie);
                  if (ret < 0) Swap(j, j-1); 
                          else break; 
               }
            } 
         } 
      }
      else
      {
          
         uint32 middle = (from + to)/2; 
         Sort(compareFunc, from, middle, cookie); 
         Sort(compareFunc, middle, to, cookie); 
         Merge(compareFunc, from, middle, to, middle-from, to-middle, cookie); 
      }
   }
}

template <class ItemType>
void 
Queue<ItemType>::
ReverseItemOrdering(uint32 from, uint32 to) 
{
   to--;   
   uint32 size = GetNumItems();
   if (to >= size) to = size-1;
   while (from < to) Swap(from++, to--); 
} 

template <class ItemType>
status_t 
Queue<ItemType>::
RemoveFirstInstanceOf(const ItemType & val) 
{
   uint32 ni = GetNumItems();
   for (uint32 i=0; i<ni; i++)
   {
      if ((*this)[i] == val) 
      {
         RemoveItemAt(i);
         return 0 ;
      }
   }
   return -1 ;
}

template <class ItemType>
status_t 
Queue<ItemType>::
RemoveLastInstanceOf(const ItemType & val) 
{
   for (int32 i=((int32)GetNumItems())-1; i>=0; i--)
   {
      if ((*this)[i] == val) 
      {
         RemoveItemAt(i);
         return 0 ;
      }
   }
   return -1 ;
}

template <class ItemType>
uint32 
Queue<ItemType>::
RemoveAllInstancesOf(const ItemType & val) 
{
    
   uint32 ret      = 0;
   uint32 writeTo  = 0;
   uint32 origSize = GetNumItems();
   for(uint32 readFrom=0; readFrom<origSize; readFrom++)
   {
      const ItemType & nextRead = (*this)[readFrom];
      if (nextRead == val) ret++;
      else 
      {
         if (readFrom > writeTo) (*this)[writeTo] = nextRead;
         writeTo++;
      }
   }

    
   for (; writeTo<origSize; writeTo++) RemoveTail();

   return ret;
}

template <class ItemType>
void 
Queue<ItemType>::
Merge(ItemCompareFunc compareFunc, uint32 from, uint32 pivot, uint32 to, uint32 len1, uint32 len2, void * cookie) 
{
   if ((len1)&&(len2))
   {
      if (len1+len2 == 2) 
      { 
         if (compareFunc(*(GetItemPointer(pivot)), *(GetItemPointer(from)), cookie) < 0) Swap(pivot, from); 
      } 
      else
      {
         uint32 first_cut, second_cut; 
         uint32 len11, len22; 
         if (len1 > len2) 
         { 
            len11      = len1/2; 
            first_cut  = from + len11; 
            second_cut = Lower(compareFunc, pivot, to, *GetItemPointer(first_cut), cookie); 
            len22      = second_cut - pivot; 
         } 
         else 
         { 
            len22      = len2/2; 
            second_cut = pivot + len22; 
            first_cut  = Upper(compareFunc, from, pivot, *GetItemPointer(second_cut), cookie); 
            len11      = first_cut - from; 
         } 

          
         if ((pivot!=first_cut)&&(pivot!=second_cut)) 
         {
             
            uint32 n = pivot-first_cut;
            {
               uint32 m = second_cut-first_cut;
               while(n!=0) 
               {
                  uint32 t = m % n; 
                  m=n; 
                  n=t;
               } 
               n = m;
            }

            while(n--) 
            {
               const ItemType val = *GetItemPointer(first_cut+n); 
               uint32 shift = pivot - first_cut; 
               uint32 p1 = first_cut+n;
               uint32 p2 = p1+shift; 
               while (p2 != first_cut + n) 
               { 
                  ReplaceItemAt(p1, *GetItemPointer(p2));
                  p1 = p2; 
                  if (second_cut - p2 > shift) p2 += shift; 
                                          else p2  = first_cut + (shift - (second_cut - p2)); 
               } 
               ReplaceItemAt(p1, val);
            }
         }

         uint32 new_mid = first_cut+len22; 
         Merge(compareFunc, from,    first_cut,  new_mid, len11,        len22,        cookie); 
         Merge(compareFunc, new_mid, second_cut, to,      len1 - len11, len2 - len22, cookie); 
      }
   }
}


template <class ItemType>
uint32 
Queue<ItemType>::
Lower(ItemCompareFunc compareFunc, uint32 from, uint32 to, const ItemType & val, void * cookie) const
{
   if (to > from)
   {
      uint32 len = to - from;
      while (len > 0) 
      {
         uint32 half = len/2; 
         uint32 mid  = from + half; 
         if (compareFunc(*(GetItemPointer(mid)), val, cookie) < 0) 
         {
            from = mid+1; 
            len  = len - half - 1; 
         } 
         else len = half; 
      }
   }
   return from; 
} 

template <class ItemType>
uint32 
Queue<ItemType>::
Upper(ItemCompareFunc compareFunc, uint32 from, uint32 to, const ItemType & val, void * cookie) const 
{
   if (to > from)
   {
      uint32 len = to - from;
      while (len > 0) 
      { 
         uint32 half = len/2; 
         uint32 mid  = from + half; 
         if (compareFunc(val, *(GetItemPointer(mid)), cookie) < 0) len = half; 
         else 
         {
            from = mid+1; 
            len  = len - half -1; 
         } 
      } 
   }
   return from; 
}

};   



# 10 "../src/muscle/util/ObjectPool.h" 2

# 1 "../src/muscle/system/Mutex.h" 1
 








# 1 "/usr/lib/qt3/include/qthread.h" 1
 










































# 1 "/usr/lib/qt3/include/qwindowdefs.h" 1
 









































# 1 "/usr/lib/qt3/include/qobjectdefs.h" 1
 








































# 1 "/usr/lib/qt3/include/qglobal.h" 1
 











































 

































# 96 "/usr/lib/qt3/include/qglobal.h"


# 163 "/usr/lib/qt3/include/qglobal.h"













 



























 
# 236 "/usr/lib/qt3/include/qglobal.h"










 



















# 374 "/usr/lib/qt3/include/qglobal.h"







 











# 402 "/usr/lib/qt3/include/qglobal.h"





# 416 "/usr/lib/qt3/include/qglobal.h"














 










 
 
 










typedef unsigned char   uchar;
typedef unsigned short  ushort;
typedef unsigned	uint;
typedef unsigned long   ulong;
typedef char		   *pchar;
typedef uchar		   *puchar;
typedef const char     *pcchar;


 
 
 







 
 
 










 
 
 





inline int qRound( double d )
{
    return int( d >= 0.0 ? d + 0.5 : d - 0.5 );
}


 
 
 


 
typedef signed char	    INT8;		  
typedef unsigned char	   UINT8;		 
typedef short		    INT16;	  
typedef unsigned short	   UINT16;	 
typedef int		INT32;	   
typedef unsigned int	   UINT32;	 


typedef signed char	    Q_INT8;	  
typedef unsigned char	   Q_UINT8;	 
typedef short		    Q_INT16;	  
typedef unsigned short	   Q_UINT16;	 
typedef int		Q_INT32;	   
typedef unsigned int	   Q_UINT32;	 





 
typedef long		    Q_LONG;
typedef unsigned long	   Q_ULONG;



 





 
 
 

class QDataStream;


 
 
 


extern bool qt_winunicode;


 
 
 
 
 
 
 
 

# 571 "/usr/lib/qt3/include/qglobal.h"

# 1 "/usr/lib/qt3/include/qconfig.h" 1
 

 



# 572 "/usr/lib/qt3/include/qglobal.h" 2




 
# 1 "/usr/lib/qt3/include/qmodules.h" 1
 













 



# 577 "/usr/lib/qt3/include/qglobal.h" 2


























# 615 "/usr/lib/qt3/include/qglobal.h"











# 1 "/usr/lib/qt3/include/qfeatures.h" 1
 
 
 
 
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




 




# 626 "/usr/lib/qt3/include/qglobal.h" 2




 
 
 


# 649 "/usr/lib/qt3/include/qglobal.h"











 
 
 

  const char *qVersion();
  bool qSysInfo( int *wordSize, bool *bigEndian );

  int qWinVersion();



 
 
 
 
 





# 701 "/usr/lib/qt3/include/qglobal.h"




 
 
 




 
 
 











 









  void qDebug( const char *, ... )    

    __attribute__ ((format (printf, 1, 2)))

;

  void qWarning( const char *, ... )  

    __attribute__ ((format (printf, 1, 2)))

;

  void qFatal( const char *, ... )    

    __attribute__ ((format (printf, 1, 2)))

;

  void qSystemWarning( const char *, int code = -1 );


 

  void debug( const char *, ... )     

    __attribute__ ((format (printf, 1, 2)))

;

  void warning( const char *, ... )   

    __attribute__ ((format (printf, 1, 2)))

;

  void fatal( const char *, ... )     

    __attribute__ ((format (printf, 1, 2)))

;

















 








  bool qt_check_pointer( bool c, const char *, int );








 






enum QtMsgType { QtDebugMsg, QtWarningMsg, QtFatalMsg };

typedef void (*QtMsgHandler)(QtMsgType, const char *);
  QtMsgHandler qInstallMsgHandler( QtMsgHandler );


 
typedef QtMsgHandler msg_handler;


  void qSuppressObsoleteWarnings( bool = 1  );

  void qObsolete( const char *obj, const char *oldfunc,
		   const char *newfunc );
  void qObsolete( const char *obj, const char *oldfunc );
  void qObsolete( const char *message );




# 42 "/usr/lib/qt3/include/qobjectdefs.h" 2






 




















 
 
struct QUObject;

# 86 "/usr/lib/qt3/include/qobjectdefs.h"












 

# 114 "/usr/lib/qt3/include/qobjectdefs.h"

 




 






























class QObject;
class QMetaObject;
class QSignal;
class QConnection;
class QEvent;
struct QMetaData;
class QConnectionList;
class QConnectionListIt;
class QSignalVec;
class QObjectList;
class QObjectListIt;
class QMemberDict;



# 43 "/usr/lib/qt3/include/qwindowdefs.h" 2

# 1 "/usr/lib/qt3/include/qstring.h" 1
 









































# 1 "/usr/lib/qt3/include/qcstring.h" 1
 









































# 1 "/usr/lib/qt3/include/qmemarray.h" 1
 








































# 1 "/usr/lib/qt3/include/qgarray.h" 1
 








































# 1 "/usr/lib/qt3/include/qshared.h" 1
 












































struct QShared
{
    QShared()		{ count = 1; }
    void ref()		{ count++; }
    bool deref()	{ return !--count; }
    uint count;
};



# 42 "/usr/lib/qt3/include/qgarray.h" 2




class   QGArray					 
{
friend class QBuffer;
public:
     
    struct array_data : public QShared {	 
	array_data()	{ data=0; len=0; }
	char *data;				 
	uint  len;
    };
    QGArray();
protected:
    QGArray( int, int );			 
    QGArray( int size );			 
    QGArray( const QGArray &a );		 
    virtual ~QGArray();

    QGArray    &operator=( const QGArray &a ) { return assign( a ); }

    virtual void detach()	{ duplicate(*this); }

    char       *data()	 const	{ return shd->data; }
    uint	nrefs()	 const	{ return shd->count; }
    uint	size()	 const	{ return shd->len; }
    bool	isEqual( const QGArray &a ) const;

    bool	resize( uint newsize );

    bool	fill( const char *d, int len, uint sz );

    QGArray    &assign( const QGArray &a );
    QGArray    &assign( const char *d, uint len );
    QGArray    &duplicate( const QGArray &a );
    QGArray    &duplicate( const char *d, uint len );
    void	store( const char *d, uint len );

    array_data *sharedBlock()	const		{ return shd; }
    void	setSharedBlock( array_data *p ) { shd=(array_data*)p; }

    QGArray    &setRawData( const char *d, uint len );
    void	resetRawData( const char *d, uint len );

    int		find( const char *d, uint index, uint sz ) const;
    int		contains( const char *d, uint sz ) const;
    
    void	sort( uint sz );
    int		bsearch( const char *d, uint sz ) const;

    char       *at( uint index ) const;

    bool	setExpand( uint index, const char *d, uint sz );

protected:
    virtual array_data *newData();
    virtual void deleteData( array_data *p );

private:
    static void msg_index( uint );
    array_data *shd;
};


inline char *QGArray::at( uint index ) const
{

    if ( index >= size() ) {
	msg_index( index );
	index = 0;
    }

    return &shd->data[index];
}



# 42 "/usr/lib/qt3/include/qmemarray.h" 2




template<class type> 



class   QMemArray

: public QGArray
{
public:
    typedef type* Iterator;
    typedef const type* ConstIterator;
    typedef type ValueType;

protected:
    QMemArray( int, int ) : QGArray( 0, 0 ) {}

public:
    QMemArray() {}
    QMemArray( int size ) : QGArray(size*sizeof(type)) {}
    QMemArray( const QMemArray<type> &a ) : QGArray(a) {}
   ~QMemArray() {}
    QMemArray<type> &operator=(const QMemArray<type> &a)
				{ return (QMemArray<type>&)QGArray::assign(a); }
    type *data()    const	{ return (type *)QGArray::data(); }
    uint  nrefs()   const	{ return QGArray::nrefs(); }
    uint  size()    const	{ return QGArray::size()/sizeof(type); }
    uint  count()   const	{ return size(); }
    bool  isEmpty() const	{ return QGArray::size() == 0; }
    bool  isNull()  const	{ return QGArray::data() == 0; }
    bool  resize( uint size )	{ return QGArray::resize(size*sizeof(type)); }
    bool  truncate( uint pos )	{ return QGArray::resize(pos*sizeof(type)); }
    bool  fill( const type &d, int size = -1 )
	{ return QGArray::fill((char*)&d,size,sizeof(type) ); }
    void  detach()		{ QGArray::detach(); }
    QMemArray<type>   copy() const
	{ QMemArray<type> tmp; return tmp.duplicate(*this); }
    QMemArray<type>& assign( const QMemArray<type>& a )
	{ return (QMemArray<type>&)QGArray::assign(a); }
    QMemArray<type>& assign( const type *a, uint n )
	{ return (QMemArray<type>&)QGArray::assign((char*)a,n*sizeof(type)); }
    QMemArray<type>& duplicate( const QMemArray<type>& a )
	{ return (QMemArray<type>&)QGArray::duplicate(a); }
    QMemArray<type>& duplicate( const type *a, uint n )
	{ return (QMemArray<type>&)QGArray::duplicate((char*)a,n*sizeof(type)); }
    QMemArray<type>& setRawData( const type *a, uint n )
	{ return (QMemArray<type>&)QGArray::setRawData((char*)a,
						     n*sizeof(type)); }
    void resetRawData( const type *a, uint n )
	{ QGArray::resetRawData((char*)a,n*sizeof(type)); }
    int	 find( const type &d, uint i=0 ) const
	{ return QGArray::find((char*)&d,i,sizeof(type)); }
    int	 contains( const type &d ) const
	{ return QGArray::contains((char*)&d,sizeof(type)); }
    void sort() { QGArray::sort(sizeof(type)); }
    int  bsearch( const type &d ) const
	{ return QGArray::bsearch((const char*)&d,sizeof(type)); }
    type& operator[]( int i ) const
	{ return (type &)(*(type *)QGArray::at(i*sizeof(type))); }
    type& at( uint i ) const
	{ return (type &)(*(type *)QGArray::at(i*sizeof(type))); }
	 operator const type*() const { return (const type *)QGArray::data(); }
    bool operator==( const QMemArray<type> &a ) const { return isEqual(a); }
    bool operator!=( const QMemArray<type> &a ) const { return !isEqual(a); }
    Iterator begin() { return data(); }
    Iterator end() { return data() + size(); }
    ConstIterator begin() const { return data(); }
    ConstIterator end() const { return data() + size(); }
};













# 43 "/usr/lib/qt3/include/qcstring.h" 2






 



  void *qmemmove( void *dst, const void *src, uint len );

  char *qstrdup( const char * );

  inline uint qstrlen( const char *str )
{ return str ? (uint)strlen(str) : 0; }

  inline char *qstrcpy( char *dst, const char *src )
{ return src ? strcpy(dst, src) : 0; }

  char *qstrncpy( char *dst, const char *src, uint len );

  inline int qstrcmp( const char *str1, const char *str2 )
{
    return ( str1 && str2 ) ? strcmp( str1, str2 )
			    : ( str1 ? 1 : ( str2 ? -1 : 0 ) );
}

  inline int qstrncmp( const char *str1, const char *str2, uint len )
{
    return ( str1 && str2 ) ? strncmp( str1, str2, len )
			    : ( str1 ? 1 : ( str2 ? -1 : 0 ) );
}

  int qstricmp( const char *, const char * );

  int qstrnicmp( const char *, const char *, uint len );


  inline uint cstrlen( const char *str )
{ return (uint)strlen(str); }

  inline char *cstrcpy( char *dst, const char *src )
{ return strcpy(dst,src); }

  inline int cstrcmp( const char *str1, const char *str2 )
{ return strcmp(str1,str2); }

  inline int cstrncmp( const char *str1, const char *str2, uint len )
{ return strncmp(str1,str2,len); }



 

  Q_UINT16 qChecksum( const char *s, uint len );

 







# 119 "/usr/lib/qt3/include/qcstring.h"

typedef QMemArray<char> QByteArray;


 



  QDataStream &operator<<( QDataStream &, const QByteArray & );
  QDataStream &operator>>( QDataStream &, QByteArray & );




 



class QRegExp;

class   QCString : public QByteArray	 
{
public:
    QCString() {}				 
    QCString( int size );			 
    QCString( const QCString &s ) : QByteArray( s ) {}
    QCString( const char *str );		 
    QCString( const char *str, uint maxlen );	 
    ~QCString();

    QCString    &operator=( const QCString &s ); 
    QCString    &operator=( const char *str );	 

    bool	isNull()	const;
    bool	isEmpty()	const;
    uint	length()	const;
    bool	resize( uint newlen );
    bool	truncate( uint pos );
    bool	fill( char c, int len = -1 );

    QCString	copy()	const;

    QCString    &sprintf( const char *format, ... );

    int		find( char c, int index=0, bool cs= 1  ) const;
    int		find( const char *str, int index=0, bool cs= 1  ) const;

    int		find( const QRegExp &, int index=0 ) const;

    int		findRev( char c, int index=-1, bool cs= 1 ) const;
    int		findRev( const char *str, int index=-1, bool cs= 1 ) const;

    int		findRev( const QRegExp &, int index=-1 ) const;

    int		contains( char c, bool cs= 1  ) const;
    int		contains( const char *str, bool cs= 1  ) const;

    int		contains( const QRegExp & ) const;

    QCString	left( uint len )  const;
    QCString	right( uint len ) const;
    QCString	mid( uint index, uint len=0xffffffff) const;

    QCString	leftJustify( uint width, char fill=' ', bool trunc= 0 )const;
    QCString	rightJustify( uint width, char fill=' ',bool trunc= 0 )const;

    QCString	lower() const;
    QCString	upper() const;

    QCString	stripWhiteSpace()	const;
    QCString	simplifyWhiteSpace()	const;

    QCString    &insert( uint index, const char * );
    QCString    &insert( uint index, char );
    QCString    &append( const char * );
    QCString    &prepend( const char * );
    QCString    &remove( uint index, uint len );
    QCString    &replace( uint index, uint len, const char * );

    QCString    &replace( const QRegExp &, const char * );

    short	toShort( bool *ok=0 )	const;
    ushort	toUShort( bool *ok=0 )	const;
    int		toInt( bool *ok=0 )	const;
    uint	toUInt( bool *ok=0 )	const;
    long	toLong( bool *ok=0 )	const;
    ulong	toULong( bool *ok=0 )	const;
    float	toFloat( bool *ok=0 )	const;
    double	toDouble( bool *ok=0 )	const;

    QCString    &setStr( const char *s );
    QCString    &setNum( short );
    QCString    &setNum( ushort );
    QCString    &setNum( int );
    QCString    &setNum( uint );
    QCString    &setNum( long );
    QCString    &setNum( ulong );
    QCString    &setNum( float, char f='g', int prec=6 );
    QCString    &setNum( double, char f='g', int prec=6 );

    bool	setExpand( uint index, char c );

		operator const char *() const;
    QCString    &operator+=( const char *str );
    QCString    &operator+=( char c );
};


 



  QDataStream &operator<<( QDataStream &, const QCString & );
  QDataStream &operator>>( QDataStream &, QCString & );


 



inline QCString &QCString::operator=( const QCString &s )
{ return (QCString&)assign( s ); }

inline QCString &QCString::operator=( const char *str )
{ return (QCString&)duplicate( str, qstrlen(str)+1 ); }

inline bool QCString::isNull() const
{ return data() == 0; }

inline bool QCString::isEmpty() const
{ return data() == 0 || *data() == '\0'; }

inline uint QCString::length() const
{ return qstrlen( data() ); }

inline bool QCString::truncate( uint pos )
{ return resize(pos+1); }

inline QCString QCString::copy() const
{ return QCString( data() ); }

inline QCString &QCString::prepend( const char *s )
{ return insert(0,s); }

inline QCString &QCString::append( const char *s )
{ return operator+=(s); }

inline QCString &QCString::setNum( short n )
{ return setNum((long)n); }

inline QCString &QCString::setNum( ushort n )
{ return setNum((ulong)n); }

inline QCString &QCString::setNum( int n )
{ return setNum((long)n); }

inline QCString &QCString::setNum( uint n )
{ return setNum((ulong)n); }

inline QCString &QCString::setNum( float n, char f, int prec )
{ return setNum((double)n,f,prec); }

inline QCString::operator const char *() const
{ return (const char *)data(); }


 



  inline bool operator==( const QCString &s1, const QCString &s2 )
{ return qstrcmp(s1.data(),s2.data()) == 0; }

  inline bool operator==( const QCString &s1, const char *s2 )
{ return qstrcmp(s1.data(),s2) == 0; }

  inline bool operator==( const char *s1, const QCString &s2 )
{ return qstrcmp(s1,s2.data()) == 0; }

  inline bool operator!=( const QCString &s1, const QCString &s2 )
{ return qstrcmp(s1.data(),s2.data()) != 0; }

  inline bool operator!=( const QCString &s1, const char *s2 )
{ return qstrcmp(s1.data(),s2) != 0; }

  inline bool operator!=( const char *s1, const QCString &s2 )
{ return qstrcmp(s1,s2.data()) != 0; }

  inline bool operator<( const QCString &s1, const QCString& s2 )
{ return qstrcmp(s1.data(),s2.data()) < 0; }

  inline bool operator<( const QCString &s1, const char *s2 )
{ return qstrcmp(s1.data(),s2) < 0; }

  inline bool operator<( const char *s1, const QCString &s2 )
{ return qstrcmp(s1,s2.data()) < 0; }

  inline bool operator<=( const QCString &s1, const char *s2 )
{ return qstrcmp(s1.data(),s2) <= 0; }

  inline bool operator<=( const char *s1, const QCString &s2 )
{ return qstrcmp(s1,s2.data()) <= 0; }

  inline bool operator>( const QCString &s1, const char *s2 )
{ return qstrcmp(s1.data(),s2) > 0; }

  inline bool operator>( const char *s1, const QCString &s2 )
{ return qstrcmp(s1,s2.data()) > 0; }

  inline bool operator>=( const QCString &s1, const char *s2 )
{ return qstrcmp(s1.data(),s2) >= 0; }

  inline bool operator>=( const char *s1, const QCString &s2 )
{ return qstrcmp(s1,s2.data()) >= 0; }

  inline const QCString operator+( const QCString &s1, const QCString &s2 )
{
    QCString tmp( s1.data() );
    tmp += s2;
    return tmp;
}

  inline const QCString operator+( const QCString &s1, const char *s2 )
{
    QCString tmp( s1.data() );
    tmp += s2;
    return tmp;
}

  inline const QCString operator+( const char *s1, const QCString &s2 )
{
    QCString tmp( s1 );
    tmp += s2;
    return tmp;
}

  inline const QCString operator+( const QCString &s1, char c2 )
{
    QCString tmp( s1.data() );
    tmp += c2;
    return tmp;
}

  inline const QCString operator+( char c1, const QCString &s2 )
{
    QCString tmp;
    tmp += c1;
    tmp += s2;
    return tmp;
}


# 43 "/usr/lib/qt3/include/qstring.h" 2




 



class QRegExp;
class QString;
class QCharRef;

class   QChar {
public:
    QChar();
    QChar( char c );
    QChar( uchar c );
    QChar( uchar c, uchar r );
    QChar( const QChar& c );
    QChar( ushort rc );
    QChar( short rc );
    QChar( uint rc );
    QChar( int rc );

    static const  QChar null;             
    static const  QChar replacement;      
    static const  QChar byteOrderMark;      
    static const  QChar byteOrderSwapped;      
    static const  QChar nbsp;             

     

    enum Category
    {
        NoCategory,

        Mark_NonSpacing,           
        Mark_SpacingCombining,     
        Mark_Enclosing,            

        Number_DecimalDigit,       
        Number_Letter,             
        Number_Other,              

        Separator_Space,           
        Separator_Line,            
        Separator_Paragraph,       

        Other_Control,             
        Other_Format,              
        Other_Surrogate,           
        Other_PrivateUse,          
        Other_NotAssigned,         

        Letter_Uppercase,          
        Letter_Lowercase,          
        Letter_Titlecase,          
        Letter_Modifier,           
        Letter_Other,              

        Punctuation_Connector,     
        Punctuation_Dash,          
        Punctuation_Dask = Punctuation_Dash,  
        Punctuation_Open,          
        Punctuation_Close,         
        Punctuation_InitialQuote,  
        Punctuation_FinalQuote,    
        Punctuation_Other,         

        Symbol_Math,               
        Symbol_Currency,           
        Symbol_Modifier,           
        Symbol_Other               
    };

    enum Direction
    {
        DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON,
        DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN
    };

    enum Decomposition
    {
        Single, Canonical, Font, NoBreak, Initial, Medial,
        Final, Isolated, Circle, Super, Sub, Vertical,
        Wide, Narrow, Small, Square, Compat, Fraction
    };

    enum Joining
    {
        OtherJoining, Dual, Right, Center
    };

    enum CombiningClass
    {
        Combining_BelowLeftAttached       = 200,
        Combining_BelowAttached           = 202,
        Combining_BelowRightAttached      = 204,
        Combining_LeftAttached            = 208,
        Combining_RightAttached           = 210,
        Combining_AboveLeftAttached       = 212,
        Combining_AboveAttached           = 214,
        Combining_AboveRightAttached      = 216,

        Combining_BelowLeft               = 218,
        Combining_Below                   = 220,
        Combining_BelowRight              = 222,
        Combining_Left                    = 224,
        Combining_Right                   = 226,
        Combining_AboveLeft               = 228,
        Combining_Above                   = 230,
        Combining_AboveRight              = 232,

        Combining_DoubleBelow             = 233,
        Combining_DoubleAbove             = 234,
        Combining_IotaSubscript           = 240
    };

     

    int digitValue() const;
    QChar lower() const;
    QChar upper() const;

    Category category() const;
    Direction direction() const;
    Joining joining() const;
    bool mirrored() const;
    QChar mirroredChar() const;
    const QString &decomposition() const;
    Decomposition decompositionTag() const;
    unsigned char combiningClass() const;

    char latin1() const { return ucs > 0xff ? 0 : (char) ucs; }
    ushort unicode() const { return ucs; }
    ushort &unicode() { return ucs; }

     
    operator char() const { return latin1(); }


    bool isNull() const { return unicode()==0; }
    bool isPrint() const;
    bool isPunct() const;
    bool isSpace() const;
    bool isMark() const;
    bool isLetter() const;
    bool isNumber() const;
    bool isLetterOrNumber() const;
    bool isDigit() const;
    bool isSymbol() const;

    uchar cell() const { return ((uchar) ucs & 0xff); }
    uchar row() const { return ((uchar) (ucs>>8)&0xff); }
    void setCell( uchar cell ) { ucs = (ucs & 0xff00) + cell; }
    void setRow( uchar row ) { ucs = (((ushort) row)<<8) + (ucs&0xff); }

    static bool networkOrdered() {
	int wordSize;
	bool bigEndian = 0 ;
	qSysInfo( &wordSize, &bigEndian );
	return bigEndian;
    }

    friend inline bool operator==( char ch, QChar c );
    friend inline bool operator==( QChar c, char ch );
    friend inline bool operator==( QChar c1, QChar c2 );
    friend inline bool operator!=( QChar c1, QChar c2 );
    friend inline bool operator!=( char ch, QChar c );
    friend inline bool operator!=( QChar c, char ch );
    friend inline bool operator<=( QChar c, char ch );
    friend inline bool operator<=( char ch, QChar c );
    friend inline bool operator<=( QChar c1, QChar c2 );

private:
    ushort ucs;



}  ;

inline QChar::QChar()
{
    ucs = 0;



}
inline QChar::QChar( char c )
{
    ucs = (uchar)c;



}
inline QChar::QChar( uchar c )
{
    ucs = c;



}
inline QChar::QChar( uchar c, uchar r )
{
    ucs = (r << 8) | c;



}
inline QChar::QChar( const QChar& c )
{
    ucs = c.ucs;



}

inline QChar::QChar( ushort rc )
{
    ucs = rc;



}
inline QChar::QChar( short rc )
{
    ucs = (ushort) rc;



}
inline QChar::QChar( uint rc )
{
    ucs = (ushort ) (rc & 0xffff);



}
inline QChar::QChar( int rc )
{
    ucs = (ushort) (rc & 0xffff);



}


inline bool operator==( char ch, QChar c )
{
    return ((uchar) ch) == c.ucs;
}

inline bool operator==( QChar c, char ch )
{
    return ((uchar) ch) == c.ucs;
}

inline bool operator==( QChar c1, QChar c2 )
{
    return c1.ucs == c2.ucs;
}

inline bool operator!=( QChar c1, QChar c2 )
{
    return c1.ucs != c2.ucs;
}

inline bool operator!=( char ch, QChar c )
{
    return ((uchar)ch) != c.ucs;
}

inline bool operator!=( QChar c, char ch )
{
    return ((uchar) ch) != c.ucs;
}

inline bool operator<=( QChar c, char ch )
{
    return c.ucs <= ((uchar) ch);
}

inline bool operator<=( char ch, QChar c )
{
    return ((uchar) ch) <= c.ucs;
}

inline bool operator<=( QChar c1, QChar c2 )
{
    return c1.ucs <= c2.ucs;
}

inline bool operator>=( QChar c, char ch ) { return ch <= c; }
inline bool operator>=( char ch, QChar c ) { return c <= ch; }
inline bool operator>=( QChar c1, QChar c2 ) { return c2 <= c1; }
inline bool operator<( QChar c, char ch ) { return !(ch<=c); }
inline bool operator<( char ch, QChar c ) { return !(c<=ch); }
inline bool operator<( QChar c1, QChar c2 ) { return !(c2<=c1); }
inline bool operator>( QChar c, char ch ) { return !(ch>=c); }
inline bool operator>( char ch, QChar c ) { return !(c>=ch); }
inline bool operator>( QChar c1, QChar c2 ) { return !(c2>=c1); }

 
struct   QStringData : public QShared {
    QStringData() :
        unicode(0), ascii(0), len(0), simpletext(1), maxl(0), dirty(0) { ref(); }
    QStringData(QChar *u, uint l, uint m) :
        unicode(u), ascii(0), len(l), simpletext(1), maxl(m), dirty(1) { }

    ~QStringData() { if ( unicode ) delete[] ((char*)unicode);
                     if ( ascii ) delete[] ascii; }

    void deleteSelf();
    QChar *unicode;
    char *ascii;
    void setDirty() {
	if ( ascii ) {
	    delete [] ascii;
	    ascii = 0;
	}
	dirty = 1;
    }



    uint len : 30;

    uint simpletext : 1;



    uint maxl : 30;

    uint dirty : 1;
};


class   QString
{
public:
    QString();                                   
    QString( QChar );                            
    QString( const QString & );                  
    QString( const QByteArray& );                
    QString( const QChar* unicode, uint length );  

    QString( const char *str );                  

    ~QString();

    QString    &operator=( const QString & );    

    QString    &operator=( const char * );       

    QString    &operator=( const QCString& );    
    QString    &operator=( QChar c );
    QString    &operator=( char c );

    static const  QString null;

    bool        isNull()        const;
    bool        isEmpty()       const;
    uint        length()        const;
    void        truncate( uint pos );

    QString &   fill( QChar c, int len = -1 );

    QString     copy()  const;

    QString arg( long a, int fieldwidth=0, int base=10 ) const;
    QString arg( ulong a, int fieldwidth=0, int base=10 ) const;
    QString arg( int a, int fieldwidth=0, int base=10 ) const;
    QString arg( uint a, int fieldwidth=0, int base=10 ) const;
    QString arg( short a, int fieldwidth=0, int base=10 ) const;
    QString arg( ushort a, int fieldwidth=0, int base=10 ) const;
    QString arg( char a, int fieldwidth=0 ) const;
    QString arg( QChar a, int fieldwidth=0 ) const;
    QString arg( const QString& a, int fieldwidth=0 ) const;
    QString arg( double a, int fieldwidth=0, char fmt='g', int prec=-1 ) const;


    QString    &sprintf( const char* format, ... )

        __attribute__ ((format (printf, 2, 3)))

        ;


    int         find( QChar c, int index=0, bool cs= 1  ) const;
    int         find( char c, int index=0, bool cs= 1  ) const;
    int         find( const QString &str, int index=0, bool cs= 1  ) const;

    int         find( const QRegExp &, int index=0 ) const;


    int         find( const char* str, int index=0 ) const;

    int         findRev( QChar c, int index=-1, bool cs= 1 ) const;
    int         findRev( char c, int index=-1, bool cs= 1 ) const;
    int         findRev( const QString &str, int index=-1, bool cs= 1 ) const;

    int         findRev( const QRegExp &, int index=-1 ) const;


    int         findRev( const char* str, int index=-1 ) const;

    int         contains( QChar c, bool cs= 1  ) const;
    int         contains( char c, bool cs= 1  ) const
                    { return contains(QChar(c), cs); }

    int         contains( const char* str, bool cs= 1  ) const;

    int         contains( const QString &str, bool cs= 1  ) const;

    int         contains( const QRegExp & ) const;


    enum SectionFlags {
	SectionDefault             = 0x00,
	SectionSkipEmpty           = 0x01,
	SectionIncludeLeadingSep   = 0x02,
	SectionIncludeTrailingSep  = 0x04,
	SectionCaseInsensitiveSeps = 0x08
    };
    QString     section( QChar sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const;
    QString     section( char sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const;

    QString      section( const char *in_sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const;

    QString     section( const QString &in_sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const;

    QString     section( const QRegExp &reg, int start, int end = 0xffffffff, int flags = SectionDefault ) const;


    QString     left( uint len )  const;
    QString     right( uint len ) const;
    QString     mid( uint index, uint len=0xffffffff) const;

    QString     leftJustify( uint width, QChar fill=' ', bool trunc= 0 )const;
    QString     rightJustify( uint width, QChar fill=' ',bool trunc= 0 )const;

    QString     lower() const;
    QString     upper() const;

    QString     stripWhiteSpace()       const;
    QString     simplifyWhiteSpace()    const;

    QString    &insert( uint index, const QString & );
    QString    &insert( uint index, const QChar*, uint len );
    QString    &insert( uint index, QChar );
    QString    &insert( uint index, char c ) { return insert(index,QChar(c)); }
    QString    &append( char );
    QString    &append( QChar );
    QString    &append( const QString & );
    QString    &prepend( char );
    QString    &prepend( QChar );
    QString    &prepend( const QString & );
    QString    &remove( uint index, uint len );
    QString    &replace( uint index, uint len, const QString & );
    QString    &replace( uint index, uint len, const QChar*, uint clen );

    QString    &replace( const QRegExp &, const QString & );

    short       toShort( bool *ok=0, int base=10 )      const;
    ushort      toUShort( bool *ok=0, int base=10 )     const;
    int         toInt( bool *ok=0, int base=10 )        const;
    uint        toUInt( bool *ok=0, int base=10 )       const;
    long        toLong( bool *ok=0, int base=10 )       const;
    ulong       toULong( bool *ok=0, int base=10 )      const;
    float       toFloat( bool *ok=0 )   const;
    double      toDouble( bool *ok=0 )  const;

    QString    &setNum( short, int base=10 );
    QString    &setNum( ushort, int base=10 );
    QString    &setNum( int, int base=10 );
    QString    &setNum( uint, int base=10 );
    QString    &setNum( long, int base=10 );
    QString    &setNum( ulong, int base=10 );
    QString    &setNum( float, char f='g', int prec=6 );
    QString    &setNum( double, char f='g', int prec=6 );

    static QString number( long, int base=10 );
    static QString number( ulong, int base=10);
    static QString number( int, int base=10 );
    static QString number( uint, int base=10);
    static QString number( double, char f='g', int prec=6 );

    void        setExpand( uint index, QChar c );

    QString    &operator+=( const QString &str );
    QString    &operator+=( QChar c );
    QString    &operator+=( char c );

    QChar at( uint i ) const
        { return i < d->len ? d->unicode[i] : QChar::null; }
    QChar operator[]( int i ) const { return at((uint)i); }
    QCharRef at( uint i );
    QCharRef operator[]( int i );

    QChar constref(uint i) const
        { return at(i); }
    QChar& ref(uint i)
        {  
            if ( d->count != 1 || i >= d->len )
                subat( i );
            d->setDirty();
            return d->unicode[i];
        }

    const QChar* unicode() const { return d->unicode; }
    const char* ascii() const { return latin1(); }
    const char* latin1() const;
    static QString fromLatin1(const char*, int len=-1);

    QCString utf8() const;
    static QString fromUtf8(const char*, int len=-1);

    QCString local8Bit() const;
    static QString fromLocal8Bit(const char*, int len=-1);
    bool operator!() const;

    operator const char *() const { return latin1(); }


    QString &setUnicode( const QChar* unicode, uint len );
    QString &setUnicodeCodes( const ushort* unicode_as_ushorts, uint len );
    QString &setLatin1( const char*, int len=-1 );

    int compare( const QString& s ) const;
    static int compare( const QString& s1, const QString& s2 )
    { return s1.compare( s2 ); }

    int localeAwareCompare( const QString& s ) const;
    static int localeAwareCompare( const QString& s1, const QString& s2 )
    { return s1.localeAwareCompare( s2 ); }


    friend   QDataStream &operator>>( QDataStream &, QString & );


    void compose();


    const char* data() const { return latin1(); }


    bool startsWith( const QString& ) const;
    bool endsWith( const QString& ) const;

    void setLength( uint newLength );

    bool simpleText() const { if ( d->dirty ) checkSimpleText(); return (bool)d->simpletext; }
    bool isRightToLeft() const;

private:
     








    QString& replace( const QString &, const QString & ) { return *this; }

    QString( int size, bool   );	 

    void deref();
    void real_detach();
    void subat( uint );
    bool findArg(int& pos, int& len) const;

    void checkSimpleText() const;

    static QChar* asciiToUnicode( const char*, uint * len, uint maxlen=(uint)-1 );
    static QChar* asciiToUnicode( const QByteArray&, uint * len );
    static char* unicodeToAscii( const QChar*, uint len );

    QStringData *d;
    static QStringData* shared_null;
    static QStringData* makeSharedNull();

    friend class QConstString;
    friend class QTextStream;
    QString( QStringData* dd, bool   ) : d(dd) { }
};

class   QCharRef {
    friend class QString;
    QString& s;
    uint p;
    QCharRef(QString* str, uint pos) : s(*str), p(pos) { }

public:
     

     

    ushort unicode() const { return s.constref(p).unicode(); }
    char latin1() const { return s.constref(p).latin1(); }

     
    QCharRef operator=(char c ) { s.ref(p)=c; return *this; }
    QCharRef operator=(uchar c ) { s.ref(p)=c; return *this; }
    QCharRef operator=(QChar c ) { s.ref(p)=c; return *this; }
    QCharRef operator=(const QCharRef& c ) { s.ref(p)=c.unicode(); return *this; }
    QCharRef operator=(ushort rc ) { s.ref(p)=rc; return *this; }
    QCharRef operator=(short rc ) { s.ref(p)=rc; return *this; }
    QCharRef operator=(uint rc ) { s.ref(p)=rc; return *this; }
    QCharRef operator=(int rc ) { s.ref(p)=rc; return *this; }

    operator QChar () const { return s.constref(p); }

     
    bool isNull() const { return unicode()==0; }
    bool isPrint() const { return s.constref(p).isPrint(); }
    bool isPunct() const { return s.constref(p).isPunct(); }
    bool isSpace() const { return s.constref(p).isSpace(); }
    bool isMark() const { return s.constref(p).isMark(); }
    bool isLetter() const { return s.constref(p).isLetter(); }
    bool isNumber() const { return s.constref(p).isNumber(); }
    bool isLetterOrNumber() { return s.constref(p).isLetterOrNumber(); }
    bool isDigit() const { return s.constref(p).isDigit(); }

    int digitValue() const { return s.constref(p).digitValue(); }
    QChar lower() const { return s.constref(p).lower(); }
    QChar upper() const { return s.constref(p).upper(); }

    QChar::Category category() const { return s.constref(p).category(); }
    QChar::Direction direction() const { return s.constref(p).direction(); }
    QChar::Joining joining() const { return s.constref(p).joining(); }
    bool mirrored() const { return s.constref(p).mirrored(); }
    QChar mirroredChar() const { return s.constref(p).mirroredChar(); }
    const QString &decomposition() const { return s.constref(p).decomposition(); }
    QChar::Decomposition decompositionTag() const { return s.constref(p).decompositionTag(); }
    unsigned char combiningClass() const { return s.constref(p).combiningClass(); }

     
    uchar cell() const { return s.constref(p).cell(); }
    uchar row() const { return s.constref(p).row(); }

};

inline QCharRef QString::at( uint i ) { return QCharRef(this,i); }
inline QCharRef QString::operator[]( int i ) { return at((uint)i); }


class   QConstString : private QString {
public:
    QConstString( const QChar* unicode, uint length );
    ~QConstString();
    const QString& string() const { return *this; }
};


 



  QDataStream &operator<<( QDataStream &, const QString & );
  QDataStream &operator>>( QDataStream &, QString & );


 



 
 
 
 
 
inline QString::QString() :
    d(shared_null ? shared_null : makeSharedNull())
{
    d->ref();
}
 
inline QString::~QString()
{
    if ( d->deref() ) {
        if ( d == shared_null )
            shared_null = 0;
        d->deleteSelf();
    }
}

inline QString QString::section( QChar sep, int start, int end, int flags ) const
{ return section(QString(sep), start, end, flags); }

inline QString QString::section( char sep, int start, int end, int flags ) const
{ return section(QChar(sep), start, end, flags); }


inline QString QString::section( const char *in_sep, int start, int end, int flags ) const
{ return section(QString(in_sep), start, end, flags); }


inline QString &QString::operator=( QChar c )
{ return *this = QString(c); }

inline QString &QString::operator=( char c )
{ return *this = QString(QChar(c)); }

inline bool QString::isNull() const
{ return unicode() == 0; }

inline bool QString::operator!() const
{ return isNull(); }

inline uint QString::length() const
{ return d->len; }

inline bool QString::isEmpty() const
{ return length() == 0; }

inline QString QString::copy() const
{ return QString( *this ); }

inline QString &QString::prepend( const QString & s )
{ return insert(0,s); }

inline QString &QString::prepend( QChar c )
{ return insert(0,c); }

inline QString &QString::prepend( char c )
{ return insert(0,c); }

inline QString &QString::append( const QString & s )
{ return operator+=(s); }

inline QString &QString::append( QChar c )
{ return operator+=(c); }

inline QString &QString::append( char c )
{ return operator+=(c); }

inline QString &QString::setNum( short n, int base )
{ return setNum((long)n, base); }

inline QString &QString::setNum( ushort n, int base )
{ return setNum((ulong)n, base); }

inline QString &QString::setNum( int n, int base )
{ return setNum((long)n, base); }

inline QString &QString::setNum( uint n, int base )
{ return setNum((ulong)n, base); }

inline QString &QString::setNum( float n, char f, int prec )
{ return setNum((double)n,f,prec); }

inline QString QString::arg(int a, int fieldwidth, int base) const
{ return arg((long)a, fieldwidth, base); }

inline QString QString::arg(uint a, int fieldwidth, int base) const
{ return arg((ulong)a, fieldwidth, base); }

inline QString QString::arg(short a, int fieldwidth, int base) const
{ return arg((long)a, fieldwidth, base); }

inline QString QString::arg(ushort a, int fieldwidth, int base) const
{ return arg((ulong)a, fieldwidth, base); }

inline int QString::find( char c, int index, bool cs ) const
{ return find(QChar(c), index, cs); }

inline int QString::findRev( char c, int index, bool cs) const
{ return findRev( QChar(c), index, cs ); }



inline int QString::find( const char* str, int index ) const
{ return find(QString::fromLatin1(str), index); }

inline int QString::findRev( const char* str, int index ) const
{ return findRev(QString::fromLatin1(str), index); }



 



  bool operator!=( const QString &s1, const QString &s2 );
  bool operator<( const QString &s1, const QString &s2 );
  bool operator<=( const QString &s1, const QString &s2 );
  bool operator==( const QString &s1, const QString &s2 );
  bool operator>( const QString &s1, const QString &s2 );
  bool operator>=( const QString &s1, const QString &s2 );

  bool operator!=( const QString &s1, const char *s2 );
  bool operator<( const QString &s1, const char *s2 );
  bool operator<=( const QString &s1, const char *s2 );
  bool operator==( const QString &s1, const char *s2 );
  bool operator>( const QString &s1, const char *s2 );
  bool operator>=( const QString &s1, const char *s2 );
  bool operator!=( const char *s1, const QString &s2 );
  bool operator<( const char *s1, const QString &s2 );
  bool operator<=( const char *s1, const QString &s2 );
  bool operator==( const char *s1, const QString &s2 );
 
  bool operator>=( const char *s1, const QString &s2 );


  inline const QString operator+( const QString &s1, const QString &s2 )
{
    QString tmp( s1 );
    tmp += s2;
    return tmp;
}


  inline const QString operator+( const QString &s1, const char *s2 )
{
    QString tmp( s1 );
    tmp += QString::fromLatin1(s2);
    return tmp;
}

  inline const QString operator+( const char *s1, const QString &s2 )
{
    QString tmp = QString::fromLatin1( s1 );
    tmp += s2;
    return tmp;
}


  inline const QString operator+( const QString &s1, QChar c2 )
{
    QString tmp( s1 );
    tmp += c2;
    return tmp;
}

  inline const QString operator+( const QString &s1, char c2 )
{
    QString tmp( s1 );
    tmp += c2;
    return tmp;
}

  inline const QString operator+( QChar c1, const QString &s2 )
{
    QString tmp;
    tmp += c1;
    tmp += s2;
    return tmp;
}

  inline const QString operator+( char c1, const QString &s2 )
{
    QString tmp;
    tmp += c1;
    tmp += s2;
    return tmp;
}


extern   QString qt_winQString(void*);
extern   const void* qt_winTchar(const QString& str, bool addnul);
extern   void* qt_winTchar_new(const QString& str);
extern   QCString qt_winQString2MB( const QString& s, int len=-1 );
extern   QString qt_winMB2QString( const char* mb, int len=-1 );



# 44 "/usr/lib/qt3/include/qwindowdefs.h" 2

# 1 "/usr/lib/qt3/include/qnamespace.h" 1
 












































class QColor;
class QCursor;


class   Qt {
public:
    static const  QColor & color0;
    static const  QColor & color1;
    static const  QColor & black;
    static const  QColor & white;
    static const  QColor & darkGray;
    static const  QColor & gray;
    static const  QColor & lightGray;
    static const  QColor & red;
    static const  QColor & green;
    static const  QColor & blue;
    static const  QColor & cyan;
    static const  QColor & magenta;
    static const  QColor & yellow;
    static const  QColor & darkRed;
    static const  QColor & darkGreen;
    static const  QColor & darkBlue;
    static const  QColor & darkCyan;
    static const  QColor & darkMagenta;
    static const  QColor & darkYellow;

     
    enum ButtonState {				 
	NoButton	= 0x0000,
	LeftButton	= 0x0001,
	RightButton	= 0x0002,
	MidButton	= 0x0004,
	MouseButtonMask = 0x00ff,
	ShiftButton	= 0x0100,
	ControlButton   = 0x0200,
	AltButton	= 0x0400,
	MetaButton	= 0x0800,
	KeyButtonMask	= 0x0fff,
	Keypad		= 0x4000
    };

     
     
    enum Orientation {
        Horizontal = 0,
	Vertical
    };

     
     
     

     
    enum AlignmentFlags {
	AlignAuto		= 0x0000, 	 
	AlignLeft		= 0x0001,
	AlignRight		= 0x0002,
	AlignHCenter		= 0x0004,
	AlignJustify		= 0x0008,
	AlignHorizontal_Mask	= AlignLeft | AlignRight | AlignHCenter | AlignJustify,
	AlignTop		= 0x0010,
	AlignBottom		= 0x0020,
	AlignVCenter		= 0x0040,
	AlignVertical_Mask 	= AlignTop | AlignBottom | AlignVCenter,
	AlignCenter		= AlignVCenter | AlignHCenter
    };

     
    enum TextFlags {
	SingleLine	= 0x0080,		 
	DontClip	= 0x0100,
	ExpandTabs	= 0x0200,
	ShowPrefix	= 0x0400,
	WordBreak	= 0x0800,
	BreakAnywhere = 0x1000,
	DontPrint	= 0x2000,		 
	NoAccel = 0x4000
    };

     
    typedef uint WState;

     
    enum WidgetState {
	WState_Created		= 0x00000001,
	WState_Disabled		= 0x00000002,
	WState_Visible		= 0x00000004,
	WState_ForceHide	= 0x00000008,
	WState_OwnCursor	= 0x00000010,
	WState_MouseTracking	= 0x00000020,
	WState_CompressKeys	= 0x00000040,
	WState_BlockUpdates	= 0x00000080,
	WState_InPaintEvent	= 0x00000100,
	WState_Reparented	= 0x00000200,
	WState_ConfigPending	= 0x00000400,
	WState_Resized		= 0x00000800,
	WState_AutoMask		= 0x00001000,
	WState_Polished		= 0x00002000,
	WState_DND		= 0x00004000,
	WState_Reserved0	= 0x00008000,
	WState_Reserved1	= 0x00010000,
	WState_Reserved2	= 0x00020000,
	WState_Reserved3	= 0x00040000,
	WState_Maximized	= 0x00080000,
	WState_Minimized	= 0x00100000,
	WState_ForceDisabled	= 0x00200000,
	WState_Exposed		= 0x00400000,
	WState_HasMouse		= 0x00800000
    };

     
    typedef uint WFlags;

     
    enum WidgetFlags {
	WType_TopLevel		= 0x00000001,	 
	WType_Dialog		= 0x00000002,
	WType_Popup		= 0x00000004,
	WType_Desktop		= 0x00000008,
	WType_Mask		= 0x0000000f,

	WStyle_Customize	= 0x00000010,	 
	WStyle_NormalBorder	= 0x00000020,
	WStyle_DialogBorder	= 0x00000040,  
	WStyle_NoBorder		= 0x00002000,
	WStyle_Title		= 0x00000080,
	WStyle_SysMenu		= 0x00000100,
	WStyle_Minimize		= 0x00000200,
	WStyle_Maximize		= 0x00000400,
	WStyle_MinMax		= WStyle_Minimize | WStyle_Maximize,
	WStyle_Tool		= 0x00000800,
	WStyle_StaysOnTop	= 0x00001000,
	WStyle_ContextHelp	= 0x00004000,
	WStyle_Reserved		= 0x00008000,
	WStyle_Mask		= 0x0000fff0,

	WDestructiveClose	= 0x00010000,	 
	WPaintDesktop		= 0x00020000,
	WPaintUnclipped		= 0x00040000,
	WPaintClever		= 0x00080000,
	WResizeNoErase		= 0x00100000,
	WMouseNoMask		= 0x00200000,
	WStaticContents		= 0x00400000,
	WRepaintNoErase		= 0x00800000,




	WX11BypassWM		= 0x00000000,
	WWinOwnDC		= 0x01000000,

	WGroupLeader 		= 0x02000000,
	WShowModal 	       	= 0x04000000,
	WNoMousePropagation	= 0x08000000,
	WSubWindow              = 0x10000000

	,
	WNorthWestGravity	= WStaticContents,
	WType_Modal		= WType_Dialog | WShowModal,
	WStyle_Dialog 		= WType_Dialog,
	WStyle_NoBorderEx	= WStyle_NoBorder

    };

     
     
     

    enum ImageConversionFlags {
	ColorMode_Mask		= 0x00000003,
	AutoColor		= 0x00000000,
	ColorOnly		= 0x00000003,
	MonoOnly		= 0x00000002,
	 

	AlphaDither_Mask	= 0x0000000c,
	ThresholdAlphaDither	= 0x00000000,
	OrderedAlphaDither	= 0x00000004,
	DiffuseAlphaDither	= 0x00000008,
	NoAlpha			= 0x0000000c,  

	Dither_Mask		= 0x00000030,
	DiffuseDither		= 0x00000000,
	OrderedDither		= 0x00000010,
	ThresholdDither		= 0x00000020,
	 

	DitherMode_Mask		= 0x000000c0,
	AutoDither		= 0x00000000,
	PreferDither		= 0x00000040,
	AvoidDither		= 0x00000080
    };

     
    enum BGMode	{				 
	TransparentMode,
	OpaqueMode
    };


     
    enum PaintUnit {				 
	PixelUnit,
	LoMetricUnit,  
	HiMetricUnit,  
	LoEnglishUnit,  
	HiEnglishUnit,  
	TwipsUnit  
    };


     






    enum GUIStyle {
	MacStyle,  
	WindowsStyle,
	Win3Style,  
	PMStyle,  
	MotifStyle
    };


     
    enum Modifier {		 
	SHIFT         = 0x00200000,
	CTRL          = 0x00400000,
	ALT           = 0x00800000,
	MODIFIER_MASK = 0x00e00000,
	UNICODE_ACCEL = 0x10000000,

	ASCII_ACCEL = UNICODE_ACCEL  
    };

     
    enum Key {
	Key_Escape = 0x1000,		 
	Key_Tab = 0x1001,
	Key_Backtab = 0x1002, Key_BackTab = Key_Backtab,
	Key_Backspace = 0x1003, Key_BackSpace = Key_Backspace,
	Key_Return = 0x1004,
	Key_Enter = 0x1005,
	Key_Insert = 0x1006,
	Key_Delete = 0x1007,
	Key_Pause = 0x1008,
	Key_Print = 0x1009,
	Key_SysReq = 0x100a,
	Key_Home = 0x1010,		 
	Key_End = 0x1011,
	Key_Left = 0x1012,
	Key_Up = 0x1013,
	Key_Right = 0x1014,
	Key_Down = 0x1015,
	Key_Prior = 0x1016, Key_PageUp = Key_Prior,
	Key_Next = 0x1017, Key_PageDown = Key_Next,
	Key_Shift = 0x1020,		 
	Key_Control = 0x1021,
	Key_Meta = 0x1022,
	Key_Alt = 0x1023,
	Key_CapsLock = 0x1024,
	Key_NumLock = 0x1025,
	Key_ScrollLock = 0x1026,
	Key_F1 = 0x1030,		 
	Key_F2 = 0x1031,
	Key_F3 = 0x1032,
	Key_F4 = 0x1033,
	Key_F5 = 0x1034,
	Key_F6 = 0x1035,
	Key_F7 = 0x1036,
	Key_F8 = 0x1037,
	Key_F9 = 0x1038,
	Key_F10 = 0x1039,
	Key_F11 = 0x103a,
	Key_F12 = 0x103b,
	Key_F13 = 0x103c,
	Key_F14 = 0x103d,
	Key_F15 = 0x103e,
	Key_F16 = 0x103f,
	Key_F17 = 0x1040,
	Key_F18 = 0x1041,
	Key_F19 = 0x1042,
	Key_F20 = 0x1043,
	Key_F21 = 0x1044,
	Key_F22 = 0x1045,
	Key_F23 = 0x1046,
	Key_F24 = 0x1047,
	Key_F25 = 0x1048,		 
	Key_F26 = 0x1049,
	Key_F27 = 0x104a,
	Key_F28 = 0x104b,
	Key_F29 = 0x104c,
	Key_F30 = 0x104d,
	Key_F31 = 0x104e,
	Key_F32 = 0x104f,
	Key_F33 = 0x1050,
	Key_F34 = 0x1051,
	Key_F35 = 0x1052,
	Key_Super_L = 0x1053, 		 
	Key_Super_R = 0x1054,
	Key_Menu = 0x1055,
	Key_Hyper_L = 0x1056,
	Key_Hyper_R = 0x1057,
	Key_Help = 0x1058,
	Key_Direction_L = 0x1059,
	Key_Direction_R = 0x1060,
	Key_Space = 0x20,		 
	Key_Any = Key_Space,
	Key_Exclam = 0x21,
	Key_QuoteDbl = 0x22,
	Key_NumberSign = 0x23,
	Key_Dollar = 0x24,
	Key_Percent = 0x25,
	Key_Ampersand = 0x26,
	Key_Apostrophe = 0x27,
	Key_ParenLeft = 0x28,
	Key_ParenRight = 0x29,
	Key_Asterisk = 0x2a,
	Key_Plus = 0x2b,
	Key_Comma = 0x2c,
	Key_Minus = 0x2d,
	Key_Period = 0x2e,
	Key_Slash = 0x2f,
	Key_0 = 0x30,
	Key_1 = 0x31,
	Key_2 = 0x32,
	Key_3 = 0x33,
	Key_4 = 0x34,
	Key_5 = 0x35,
	Key_6 = 0x36,
	Key_7 = 0x37,
	Key_8 = 0x38,
	Key_9 = 0x39,
	Key_Colon = 0x3a,
	Key_Semicolon = 0x3b,
	Key_Less = 0x3c,
	Key_Equal = 0x3d,
	Key_Greater = 0x3e,
	Key_Question = 0x3f,
	Key_At = 0x40,
	Key_A = 0x41,
	Key_B = 0x42,
	Key_C = 0x43,
	Key_D = 0x44,
	Key_E = 0x45,
	Key_F = 0x46,
	Key_G = 0x47,
	Key_H = 0x48,
	Key_I = 0x49,
	Key_J = 0x4a,
	Key_K = 0x4b,
	Key_L = 0x4c,
	Key_M = 0x4d,
	Key_N = 0x4e,
	Key_O = 0x4f,
	Key_P = 0x50,
	Key_Q = 0x51,
	Key_R = 0x52,
	Key_S = 0x53,
	Key_T = 0x54,
	Key_U = 0x55,
	Key_V = 0x56,
	Key_W = 0x57,
	Key_X = 0x58,
	Key_Y = 0x59,
	Key_Z = 0x5a,
	Key_BracketLeft = 0x5b,
	Key_Backslash = 0x5c,
	Key_BracketRight = 0x5d,
	Key_AsciiCircum = 0x5e,
	Key_Underscore = 0x5f,
	Key_QuoteLeft = 0x60,
	Key_BraceLeft = 0x7b,
	Key_Bar = 0x7c,
	Key_BraceRight = 0x7d,
	Key_AsciiTilde = 0x7e,

	 

	Key_nobreakspace = 0x0a0,
	Key_exclamdown = 0x0a1,
	Key_cent = 0x0a2,
	Key_sterling = 0x0a3,
	Key_currency = 0x0a4,
	Key_yen = 0x0a5,
	Key_brokenbar = 0x0a6,
	Key_section = 0x0a7,
	Key_diaeresis = 0x0a8,
	Key_copyright = 0x0a9,
	Key_ordfeminine = 0x0aa,
	Key_guillemotleft = 0x0ab,	 
	Key_notsign = 0x0ac,
	Key_hyphen = 0x0ad,
	Key_registered = 0x0ae,
	Key_macron = 0x0af,
	Key_degree = 0x0b0,
	Key_plusminus = 0x0b1,
	Key_twosuperior = 0x0b2,
	Key_threesuperior = 0x0b3,
	Key_acute = 0x0b4,
	Key_mu = 0x0b5,
	Key_paragraph = 0x0b6,
	Key_periodcentered = 0x0b7,
	Key_cedilla = 0x0b8,
	Key_onesuperior = 0x0b9,
	Key_masculine = 0x0ba,
	Key_guillemotright = 0x0bb,	 
	Key_onequarter = 0x0bc,
	Key_onehalf = 0x0bd,
	Key_threequarters = 0x0be,
	Key_questiondown = 0x0bf,
	Key_Agrave = 0x0c0,
	Key_Aacute = 0x0c1,
	Key_Acircumflex = 0x0c2,
	Key_Atilde = 0x0c3,
	Key_Adiaeresis = 0x0c4,
	Key_Aring = 0x0c5,
	Key_AE = 0x0c6,
	Key_Ccedilla = 0x0c7,
	Key_Egrave = 0x0c8,
	Key_Eacute = 0x0c9,
	Key_Ecircumflex = 0x0ca,
	Key_Ediaeresis = 0x0cb,
	Key_Igrave = 0x0cc,
	Key_Iacute = 0x0cd,
	Key_Icircumflex = 0x0ce,
	Key_Idiaeresis = 0x0cf,
	Key_ETH = 0x0d0,
	Key_Ntilde = 0x0d1,
	Key_Ograve = 0x0d2,
	Key_Oacute = 0x0d3,
	Key_Ocircumflex = 0x0d4,
	Key_Otilde = 0x0d5,
	Key_Odiaeresis = 0x0d6,
	Key_multiply = 0x0d7,
	Key_Ooblique = 0x0d8,
	Key_Ugrave = 0x0d9,
	Key_Uacute = 0x0da,
	Key_Ucircumflex = 0x0db,
	Key_Udiaeresis = 0x0dc,
	Key_Yacute = 0x0dd,
	Key_THORN = 0x0de,
	Key_ssharp = 0x0df,
	Key_agrave = 0x0e0,
	Key_aacute = 0x0e1,
	Key_acircumflex = 0x0e2,
	Key_atilde = 0x0e3,
	Key_adiaeresis = 0x0e4,
	Key_aring = 0x0e5,
	Key_ae = 0x0e6,
	Key_ccedilla = 0x0e7,
	Key_egrave = 0x0e8,
	Key_eacute = 0x0e9,
	Key_ecircumflex = 0x0ea,
	Key_ediaeresis = 0x0eb,
	Key_igrave = 0x0ec,
	Key_iacute = 0x0ed,
	Key_icircumflex = 0x0ee,
	Key_idiaeresis = 0x0ef,
	Key_eth = 0x0f0,
	Key_ntilde = 0x0f1,
	Key_ograve = 0x0f2,
	Key_oacute = 0x0f3,
	Key_ocircumflex = 0x0f4,
	Key_otilde = 0x0f5,
	Key_odiaeresis = 0x0f6,
	Key_division = 0x0f7,
	Key_oslash = 0x0f8,
	Key_ugrave = 0x0f9,
	Key_uacute = 0x0fa,
	Key_ucircumflex = 0x0fb,
	Key_udiaeresis = 0x0fc,
	Key_yacute = 0x0fd,
	Key_thorn = 0x0fe,
	Key_ydiaeresis = 0x0ff,

	Key_unknown = 0xffff
    };

     
    enum ArrowType {
	UpArrow,
	DownArrow,
	LeftArrow,
	RightArrow
    };

     
    enum RasterOp {  
	CopyROP,
	OrROP,
	XorROP,
	NotAndROP, EraseROP=NotAndROP,
	NotCopyROP,
	NotOrROP,
	NotXorROP,
	AndROP,	NotEraseROP=AndROP,
	NotROP,
	ClearROP,
	SetROP,
	NopROP,
	AndNotROP,
	OrNotROP,
	NandROP,
	NorROP,	LastROP=NorROP
    };

     
    enum PenStyle {  
	NoPen,
	SolidLine,
	DashLine,
	DotLine,
	DashDotLine,
	DashDotDotLine,
	MPenStyle = 0x0f
    };

     
    enum PenCapStyle {  
	FlatCap = 0x00,
	SquareCap = 0x10,
	RoundCap = 0x20,
	MPenCapStyle = 0x30
    };

     
    enum PenJoinStyle {  
	MiterJoin = 0x00,
	BevelJoin = 0x40,
	RoundJoin = 0x80,
	MPenJoinStyle = 0xc0
    };

     
    enum BrushStyle {  
	NoBrush,
	SolidPattern,
	Dense1Pattern,
	Dense2Pattern,
	Dense3Pattern,
	Dense4Pattern,
	Dense5Pattern,
	Dense6Pattern,
	Dense7Pattern,
	HorPattern,
	VerPattern,
	CrossPattern,
	BDiagPattern,
	FDiagPattern,
	DiagCrossPattern,
	CustomPattern=24
    };

     
    enum WindowsVersion {
	WV_32s 		= 0x0001,
	WV_95 		= 0x0002,
	WV_98		= 0x0003,
	WV_Me		= 0x0004,
	WV_DOS_based	= 0x000f,

	WV_NT 		= 0x0010,
	WV_2000 	= 0x0020,
	WV_XP		= 0x0030,
	WV_NT_based	= 0x00f0
    };

     
    enum UIEffect {
	UI_General,
	UI_AnimateMenu,
	UI_FadeMenu,
	UI_AnimateCombo,
	UI_AnimateTooltip,
	UI_FadeTooltip
    };

     
    enum CursorShape {
	ArrowCursor,
	UpArrowCursor,
	CrossCursor,
	WaitCursor,
	IbeamCursor,
	SizeVerCursor,
	SizeHorCursor,
	SizeBDiagCursor,
	SizeFDiagCursor,
	SizeAllCursor,
	BlankCursor,
	SplitVCursor,
	SplitHCursor,
	PointingHandCursor,
	ForbiddenCursor,
	WhatsThisCursor,
	LastCursor	= WhatsThisCursor,
	BitmapCursor	= 24
    };

     

    static const  QCursor & arrowCursor;	 
    static const  QCursor & upArrowCursor;	 
    static const  QCursor & crossCursor;	 
    static const  QCursor & waitCursor;	 
    static const  QCursor & ibeamCursor;	 
    static const  QCursor & sizeVerCursor;	 
    static const  QCursor & sizeHorCursor;	 
    static const  QCursor & sizeBDiagCursor;	 
    static const  QCursor & sizeFDiagCursor;	 
    static const  QCursor & sizeAllCursor;	 
    static const  QCursor & blankCursor;	 
    static const  QCursor & splitVCursor;	 
						 
    static const  QCursor & splitHCursor;	 
						 
    static const  QCursor & pointingHandCursor;	 
    static const  QCursor & forbiddenCursor;	 
    static const  QCursor & whatsThisCursor;   


    enum TextFormat {
	PlainText,
	RichText,
	AutoText
    };

     
    enum Dock {
	DockUnmanaged,
	DockTornOff,
	DockTop,
	DockBottom,
	DockRight,
	DockLeft,
	DockMinimized

        ,
	Unmanaged = DockUnmanaged,
	TornOff = DockTornOff,
	Top = DockTop,
	Bottom = DockBottom,
	Right = DockRight,
	Left = DockLeft,
	Minimized = DockMinimized

    };
     
    typedef Dock ToolBarDock;

     
    enum DateFormat {
	TextDate,       
	ISODate,        
	LocalDate       
    };

     
    enum BackgroundMode {
	FixedColor,
	FixedPixmap,
	NoBackground,
	PaletteForeground,
	PaletteButton,
	PaletteLight,
	PaletteMidlight,
	PaletteDark,
	PaletteMid,
	PaletteText,
	PaletteBrightText,
	PaletteBase,
	PaletteBackground,
	PaletteShadow,
	PaletteHighlight,
	PaletteHighlightedText,
	PaletteButtonText,
	PaletteLink,
	PaletteLinkVisited,
	X11ParentRelative
    };

    typedef uint ComparisonFlags;

     
    enum StringComparisonMode {
        CaseSensitive   = 0x00001,  
        BeginsWith      = 0x00002,  
        EndsWith        = 0x00004,  
        Contains        = 0x00008,  
        ExactMatch      = 0x00010   
    };

     
     



    typedef void *HANDLE;





};


class   QInternal {
public:
    enum PaintDeviceFlags {
	UndefinedDevice = 0x00,
	Widget = 0x01,
	Pixmap = 0x02,
	Printer = 0x03,
	Picture = 0x04,
	System = 0x05,
	DeviceTypeMask = 0x0f,
	ExternalDevice = 0x10,
	 
	CompatibilityMode = 0x20
    };
};


# 45 "/usr/lib/qt3/include/qwindowdefs.h" 2



# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 1 3
 


 





 
# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/syslimits.h" 1 3
 





# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 1 3
 


 

# 114 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 3



# 1 "/usr/include/limits.h" 1 3
 












 



 



 




 





 



 












 





 



 








 



 













 



 










 




# 117 "/usr/include/limits.h" 3


 



 



 


 
 


 



 






 




 
 
 

















# 117 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 2 3




# 7 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/syslimits.h" 2 3


# 11 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 2 3


# 110 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 3

 









# 48 "/usr/lib/qt3/include/qwindowdefs.h" 2


 

class QPaintDevice;
class QPaintDeviceMetrics;
class QWidget;
class QWidgetMapper;
class QDialog;
class QColor;
class QColorGroup;
class QPalette;
class QCursor;
class QPoint;
class QSize;
class QRect;
class QPointArray;
class QPainter;
class QRegion;
class QFont;
class QFontMetrics;
class QFontInfo;
class QPen;
class QBrush;
class QWMatrix;
class QPixmap;
class QBitmap;
class QMovie;
class QImage;
class QImageIO;
class QPicture;
class QPrinter;
class QAccel;
class QTimer;
class QTime;
class QClipboard;


 

class QWidgetList;
class QWidgetListIt;


 

# 126 "/usr/lib/qt3/include/qwindowdefs.h"



# 1 "/usr/lib/qt3/include/qwindowdefs_win.h" 1

# 129 "/usr/lib/qt3/include/qwindowdefs.h" 2




# 147 "/usr/lib/qt3/include/qwindowdefs.h"










class QApplication;





 

typedef Q_INT32 QCOORD;				 
const QCOORD QCOORD_MAX =  2147483647;
const QCOORD QCOORD_MIN = -QCOORD_MAX - 1;

typedef unsigned int QRgb;			 

  const char *qAppName();		 

 

typedef void (*QtCleanUpFunction)();
  void qAddPostRoutine( QtCleanUpFunction );
  void qRemovePostRoutine( QtCleanUpFunction );


 
typedef QtCleanUpFunction Q_CleanUpFunction;


 
  void *qt_find_obj_child( QObject *, const char *, const char * );





# 44 "/usr/lib/qt3/include/qthread.h" 2


# 1 "/usr/lib/qt3/include/qmutex.h" 1
 













































class QMutexPrivate;

const int Q_MUTEX_NORMAL = 0;
const int Q_MUTEX_RECURSIVE = 1;

class   QMutex
{
    friend class QWaitCondition;
    friend class QWaitConditionPrivate;

public:
    QMutex(bool recursive = 0 );
    virtual ~QMutex();

    void lock();
    void unlock();
    bool locked();
    bool tryLock();

private:
    QMutexPrivate * d;


    QMutex( const QMutex & );
    QMutex &operator=( const QMutex & );

};




# 46 "/usr/lib/qt3/include/qthread.h" 2

# 1 "/usr/lib/qt3/include/qsemaphore.h" 1
 













































class QSemaphorePrivate;

class   QSemaphore
{
public:
    QSemaphore( int );
    virtual ~QSemaphore();

    int available() const;
    int total() const;

     
    int operator++(int);
    int operator--(int);

    int operator+=(int);
    int operator-=(int);

    bool tryAccess(int);

private:
    QSemaphorePrivate *d;


    QSemaphore(const QSemaphore &);
    QSemaphore &operator=(const QSemaphore &);

};




# 47 "/usr/lib/qt3/include/qthread.h" 2

# 1 "/usr/lib/qt3/include/qwaitcondition.h" 1
 













































# 1 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 1 3
 


 

# 114 "/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/include/limits.h" 3







# 47 "/usr/lib/qt3/include/qwaitcondition.h" 2


class QWaitConditionPrivate;
class QMutex;

class   QWaitCondition
{
public:
    QWaitCondition();
    virtual ~QWaitCondition();

     
    bool wait( unsigned long time = (2147483647L   * 2UL + 1)  );
    bool wait( QMutex *mutex, unsigned long time = (2147483647L   * 2UL + 1)  );

    void wakeOne();
    void wakeAll();

private:
    QWaitConditionPrivate * d;


    QWaitCondition( const QWaitCondition & );
    QWaitCondition &operator=( const QWaitCondition & );

};




# 48 "/usr/lib/qt3/include/qthread.h" 2




class QThreadPrivate;

class   QThread : public Qt
{
    friend class QThreadPrivate;
public:
    static Qt::HANDLE currentThread();
    static void postEvent( QObject *,QEvent * );
    static void initialize();
    static void cleanup();

    static void exit();

    QThread();
    virtual ~QThread();

     
    bool wait( unsigned long time = (2147483647L   * 2UL + 1)  );

    void start();

    bool finished() const;
    bool running() const;


protected:
    virtual void run() = 0;

    static void sleep( unsigned long );
    static void msleep( unsigned long );
    static void usleep( unsigned long );

private:
    QThreadPrivate * d;


    QThread( const QThread & );
    QThread &operator=( const QThread & );

};




# 10 "../src/muscle/system/Mutex.h" 2

# 19 "../src/muscle/system/Mutex.h"





namespace muscle {

 




class Mutex
{
public:
    
   Mutex()




      : _locker(1 )






   {





   }
 
    


   ~Mutex() 
   {




       




   }

    






   status_t Lock() const
   {
# 91 "../src/muscle/system/Mutex.h"

      _locker.lock();
      return 0 ;







   }

    




   status_t Unlock() const
   {





      _locker.unlock();
      return 0 ;








   }

private:






   mutable QMutex _locker;








};

};   


# 11 "../src/muscle/util/ObjectPool.h" 2


namespace muscle {

 
 
 
 

 


class AbstractObjectGenerator
{
public:
    




   virtual void * ObtainObjectGeneric() = 0;
};

 


class AbstractObjectRecycler
{
public:
    




   virtual void RecycleObject(void * obj) = 0;
};

 


class AbstractObjectManager : public AbstractObjectGenerator, public AbstractObjectRecycler
{
    
};

 






template <class Object> class ObjectPool : public AbstractObjectManager
{
public:
    
   typedef void (*ObjectCallback)(Object * obj, void * userData);

    






      
   ObjectPool(uint32 maxPoolSize=100, 
              ObjectCallback recycleCallback = __null , void * recycleData = __null ,
              ObjectCallback initCallback = __null , void * initData = __null ) : 
      _initObjectFunc(initCallback), _initObjectUserData(initData),
      _recycleObjectFunc(recycleCallback), _recycleObjectUserData(recycleData),
      _maxPoolSize(maxPoolSize)
   {
       
   }

    



   virtual ~ObjectPool()
   {
      Drain();
   }

    






   Object * ObtainObject()
   {





      Object * ret = __null ;

      if (_mutex.Lock() == 0 )
      {
         (void) _pool.RemoveTail(ret);
         _mutex.Unlock();
      }

      if (ret == __null ) ret = new (nothrow)  Object;
      if (ret)
      {
         if (_initObjectFunc) _initObjectFunc(ret, _initObjectUserData);
      }
      else muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/util/ObjectPool.h",123) ;
      return ret;

   }

    





   void ReleaseObject(Object * obj)
   {



      if (obj)
      {
         if (_recycleObjectFunc) _recycleObjectFunc(obj, _recycleObjectUserData);
         bool deleteObject = 1 ;
         if (_mutex.Lock() == 0 )
         {
            if ((_pool.GetNumItems() < _maxPoolSize)&&(_pool.AddTail(obj) == 0 )) deleteObject = 0 ;
            _mutex.Unlock();
         }
         if (deleteObject) delete obj;
      }

   }

    
   virtual void * ObtainObjectGeneric() {return ObtainObject();}

    
   virtual void RecycleObject(void * obj) {ReleaseObject((Object *)obj);}
    
   









   status_t SetInitObjectCallback(ObjectCallback cb, void * userData)
   {
      if (_mutex.Lock() == 0 )
      {
         _initObjectFunc = cb;
         _initObjectUserData = userData;
         (void) _mutex.Unlock();
         return 0 ;
      }
      else return -1 ;
   }

   








   void SetRecycleObjectCallback(ObjectCallback cb, void * userData)
   {
      if (_mutex.Lock() == 0 )
      {
         _recycleObjectFunc = cb;
         _recycleObjectUserData = userData;
         (void) _mutex.Unlock();
         return 0 ;
      }
      else return -1 ;
   }

    



   status_t Drain()
   {
      if (_mutex.Lock() == 0 )
      {
         for (int i=_pool.GetNumItems()-1; i>=0; i--) delete _pool[i];
         _pool.Clear();
         (void) _mutex.Unlock();
         return 0 ;
      } 
      else return -1 ;
   }

private:
   Mutex _mutex;

   ObjectCallback _initObjectFunc;
   void * _initObjectUserData;
   
   ObjectCallback _recycleObjectFunc;
   void * _recycleObjectUserData;
   
   Queue<Object *> _pool;
   uint32 _maxPoolSize;
};

};   


# 10 "../src/muscle/util/RefCount.h" 2

# 1 "../src/muscle/system/AtomicCounter.h" 1
  













# 26 "../src/muscle/system/AtomicCounter.h"


namespace muscle {
    extern int32 DoMutexAtomicIncrement(int32 * count, int32 delta);
};




namespace muscle {

 




class AtomicCounter
{
public:
    
   AtomicCounter() 


      : _count(0)


   {





   }

    
   ~AtomicCounter()
   {



   }

    
   inline void AtomicIncrement() 
   {
# 94 "../src/muscle/system/AtomicCounter.h"

      (void) DoMutexAtomicIncrement(&_count, 1);



   }

    


   inline bool AtomicDecrement() 
   {
# 130 "../src/muscle/system/AtomicCounter.h"

      return (DoMutexAtomicIncrement(&_count, -1) == 0);



   }

private:
# 156 "../src/muscle/system/AtomicCounter.h"

   int32 _count;

};

};   


# 11 "../src/muscle/util/RefCount.h" 2


namespace muscle {

class RefCountable;

 


class RefCountable
{
public:
    
   RefCountable() { }

    
   RefCountable(const RefCountable &) { }

    
   virtual ~RefCountable() { }

    
   inline RefCountable &operator=(const RefCountable &) {return *this;}

    
   inline void IncrementRefCount() const {_refCount.AtomicIncrement();}

    
   inline bool DecrementRefCount() const {return _refCount.AtomicDecrement();}

private:
   mutable AtomicCounter _refCount;
};

template <class Item> class Ref;   

 
typedef Ref<RefCountable> GenericRef;

 



template <class Item> class Ref
{
public:
   typedef ObjectPool<Item> ItemPool;         

    



   Ref() : _item(__null ), _recycler(__null ), _doRefCount(1 ) { }

    












   Ref(Item * item, AbstractObjectRecycler * recycler, bool doRefCount = 1 ) : _item(item), _recycler(recycler), _doRefCount(doRefCount) {RefItem();} 

    


   Ref(const Ref & copyMe) : _item(__null ), _recycler(__null ), _doRefCount(1 ) {*this = copyMe;}

    




   Ref(const GenericRef & ref, bool) : _item(__null ), _recycler(__null ), _doRefCount(1 ) {(void) SetFromGeneric(ref);}

    


   ~Ref() {UnrefItem();}

    













   void SetRef(Item * item, AbstractObjectRecycler * recycler, bool doRefCount = 1 )
   {
      if (item == _item)
      {
         if (doRefCount != _doRefCount)
         {
            if (doRefCount)
            {
                
               _doRefCount = 1 ;
               RefItem();
            }
            else 
            {
                
               UnrefItem();
               _doRefCount = 0 ;
            } 
         }
         _recycler = recycler;
      }
      else
      {
          
         UnrefItem();
          _item       = item;
          _recycler   = recycler;
          _doRefCount = doRefCount;
         RefItem();
      }
   }

    


   inline Ref &operator=(const Ref &r) {if (this != &r) SetRef(r._item, r._recycler, r._doRefCount); return *this;}

    
   int operator ==(const Ref &rhs) const {return _item == rhs._item;}
 
    
   int operator !=(const Ref &rhs) const {return _item != rhs._item;}
 
    


   Item * GetItemPointer() const {return _item;}

    
   Item * operator()() const {return _item;}

    


   void Reset() {UnrefItem();}

    


   void Neutralize() {if ((_doRefCount)&&(_item)) (void) _item->DecrementRefCount(); _item = __null ;}

    
   AbstractObjectRecycler * GetItemRecycler() const {return _recycler;}

    


   bool IsRefCounting() const {return _doRefCount;}

    
   GenericRef GetGeneric() const {return GenericRef(_item, _recycler, _doRefCount);}

    





   status_t SetFromGeneric(const GenericRef & genericRef)
   {
      RefCountable * genericItem = genericRef();
      if (genericItem)
      {
         Item * typedItem = dynamic_cast<Item *>(genericItem);
         if (typedItem == __null ) return -1 ;
         SetRef(typedItem, genericRef.GetItemRecycler(), genericRef.IsRefCounting());
      }
      return 0 ;
   }

private:
   void RefItem() {if ((_doRefCount)&&(_item)) _item->IncrementRefCount();}
   void UnrefItem()
   {
      if (_item)
      {
         if ((_doRefCount)&&(_item->DecrementRefCount()))
         {
            if (_recycler) _recycler->RecycleObject(_item);
                      else delete _item;
         }
         _item = __null ;
      }
   }
   
   Item * _item; 
   AbstractObjectRecycler * _recycler;
   bool _doRefCount;
};

template <class T> class HashFunctor;

 
 

template <class Item>
class HashFunctor<Ref<Item> >
{
public:
   uint32 operator () (const Ref<Item> & ref) const {return (uint32) ref();}
};


};   


# 10 "../src/muscle/dataio/DataIO.h" 2


namespace muscle {
 
 
class DataIO : public RefCountable
{
public:
    
   enum {
      IO_SEEK_SET = 0,
      IO_SEEK_CUR,
      IO_SEEK_END,
      NUM_IO_SEEKS
   };

    
   DataIO() { }

    
   virtual ~DataIO() { }

    






   virtual int32 Read(void * buffer, uint32 size) = 0;

    







   virtual int32 Write(const void * buffer, uint32 size) = 0;

    











   virtual status_t Seek(int64 offset, int whence) = 0;

    




   virtual uint64 GetOutputStallLimit() const {return ((uint64)-1) ;}

    




   virtual void FlushOutput() = 0;

    



   virtual void Shutdown() = 0;

    




   virtual int GetSelectSocket() const = 0;

    












   virtual status_t GetReadByteTimeStamp(int32  , uint64 &  ) const {return -1 ;}

};

typedef Ref<DataIO> DataIORef;

};   


# 10 "../src/muscle/iogateway/AbstractMessageIOGateway.h" 2

# 1 "../src/muscle/message/Message.h" 1
 

 
















# 1 "../src/muscle/support/Point.h" 1
 

 















# 1 "../src/muscle/support/Tuple.h" 1
 




# 1 "/usr/include/math.h" 1 3
 





# 1 "/usr/include/machine/ieeefp.h" 1 3

# 206 "/usr/include/machine/ieeefp.h" 3



# 7 "/usr/include/math.h" 2 3



extern "C" { 



 


union __dmath
{
  __ULong i[2];
  double d;
};

 


extern __attribute__(( dllimport ))   const union __dmath __infinity[];





 


extern double atan  (double)  ;
extern double cos  (double)  ;
extern double sin  (double)  ;
extern double tan  (double)  ;
extern double tanh  (double)  ;
extern double frexp  (double, int *)  ;
extern double modf  (double, double *)  ;
extern double ceil  (double)  ;
extern double fabs  (double)  ;
extern double floor  (double)  ;


 



extern double acos  (double)  ;
extern double asin  (double)  ;
extern double atan2  (double, double)  ;
extern double cosh  (double)  ;
extern double sinh  (double)  ;
extern double exp  (double)  ;
extern double ldexp  (double, int)  ;
extern double log  (double)  ;
extern double log10  (double)  ;
extern double pow  (double, double)  ;
extern double sqrt  (double)  ;
extern double fmod  (double, double)  ;





 



typedef float float_t;
typedef double double_t;








extern int __fpclassifyf (float x);
extern int __fpclassifyd (double x);



































 

extern double infinity  (void)  ;
extern double nan  (void)  ;
extern int isnan  (double)  ;
extern int isinf  (double)  ;
extern int finite  (double)  ;
extern double copysign  (double, double)  ;
extern int ilogb  (double)  ;

extern double asinh  (double)  ;
extern double cbrt  (double)  ;
extern double nextafter  (double, double)  ;
extern double rint  (double)  ;
extern double scalbn  (double, int)  ;

extern double exp2  (double)  ;
extern double scalbln  (double, long int)  ;
extern double tgamma  (double)  ;
extern double nearbyint  (double)  ;
extern long int lrint  (double)  ;
extern double round  (double)  ;
extern long int lround  (double)  ;
extern double trunc  (double)  ;
extern double remquo  (double, double, int *)  ;
extern double copysign  (double, double)  ;
extern double fdim  (double, double)  ;
extern double fmax  (double, double)  ;
extern double fmin  (double, double)  ;
extern double fma  (double, double, double)  ;


extern double log1p  (double)  ;
extern double expm1  (double)  ;



extern double acosh  (double)  ;
extern double atanh  (double)  ;
extern double remainder  (double, double)  ;
extern double gamma  (double)  ;
extern double gamma_r  (double, int *)  ;
extern double lgamma  (double)  ;
extern double lgamma_r  (double, int *)  ;
extern double erf  (double)  ;
extern double erfc  (double)  ;
extern double y0  (double)  ;
extern double y1  (double)  ;
extern double yn  (int, double)  ;
extern double j0  (double)  ;
extern double j1  (double)  ;
extern double jn  (int, double)  ;



extern double hypot  (double, double)  ;


extern double cabs();
extern double drem  (double, double)  ;







 

extern float atanf  (float)  ;
extern float cosf  (float)  ;
extern float sinf  (float)  ;
extern float tanf  (float)  ;
extern float tanhf  (float)  ;
extern float frexpf  (float, int *)  ;
extern float modff  (float, float *)  ;
extern float ceilf  (float)  ;
extern float fabsf  (float)  ;
extern float floorf  (float)  ;


extern float acosf  (float)  ;
extern float asinf  (float)  ;
extern float atan2f  (float, float)  ;
extern float coshf  (float)  ;
extern float sinhf  (float)  ;
extern float expf  (float)  ;
extern float ldexpf  (float, int)  ;
extern float logf  (float)  ;
extern float log10f  (float)  ;
extern float powf  (float, float)  ;
extern float sqrtf  (float)  ;
extern float fmodf  (float, float)  ;






 

extern float exp2f  (float)  ;
extern float scalblnf  (float, long int)  ;
extern float tgammaf  (float)  ;
extern float nearbyintf  (float)  ;
extern long int lrintf  (float)  ;
extern float roundf  (float)  ;
extern long int lroundf  (float)  ;
extern float truncf  (float)  ;
extern float remquof  (float, float, int *)  ;
extern float copysignf  (float, float)  ;
extern float fdimf  (float, float)  ;
extern float fmaxf  (float, float)  ;
extern float fminf  (float, float)  ;
extern float fmaf  (float, float, float)  ;

extern float infinityf  (void)  ;
extern float nanf  (void)  ;
extern int isnanf  (float)  ;
extern int isinff  (float)  ;
extern int finitef  (float)  ;
extern float copysignf  (float, float)  ;
extern int ilogbf  (float)  ;

extern float asinhf  (float)  ;
extern float cbrtf  (float)  ;
extern float nextafterf  (float, float)  ;
extern float rintf  (float)  ;
extern float scalbnf  (float, int)  ;
extern float log1pf  (float)  ;
extern float expm1f  (float)  ;


extern float acoshf  (float)  ;
extern float atanhf  (float)  ;
extern float remainderf  (float, float)  ;
extern float gammaf  (float)  ;
extern float gammaf_r  (float, int *)  ;
extern float lgammaf  (float)  ;
extern float lgammaf_r  (float, int *)  ;
extern float erff  (float)  ;
extern float erfcf  (float)  ;
extern float y0f  (float)  ;
extern float y1f  (float)  ;
extern float ynf  (int, float)  ;
extern float j0f  (float)  ;
extern float j1f  (float)  ;
extern float jnf  (int, float)  ;

extern float hypotf  (float, float)  ;

extern float cabsf();
extern float dremf  (float, float)  ;



 


extern int *__signgam  (void)  ;




 


struct __exception 



{
  int type;
  char *name;
  double arg1;
  double arg2;
  double retval;
  int err;
};


extern int matherr  (struct __exception *e)  ;




 








 
























 

enum __fdlibm_version
{
  __fdlibm_ieee = -1,
  __fdlibm_svid,
  __fdlibm_xopen,
  __fdlibm_posix
};




extern __attribute__(( dllimport ))   const  enum __fdlibm_version  __fdlib_version ;








} 






# 6 "../src/muscle/support/Tuple.h" 2



namespace muscle {

 
template <int NumItems, class ItemType> class Tuple
{
public:
    
   Tuple() {Reset();}

    
   Tuple(const ItemType & value) {*this = value;}

    
   Tuple(const Tuple & copyMe) {*this = copyMe;}

    
   ~Tuple() { }

    
   const Tuple & operator =(const Tuple & rhs) {for (int i=0; i<NumItems; i++) _items[i] = rhs._items[i]; return *this;}

    
   const Tuple & operator =(const ItemType values[NumItems]) {for (int i=0; i<NumItems; i++) (*this)[i] = values[i]; return *this;}

    
   const Tuple & operator =(const ItemType & value) {for (int i=0; i<NumItems; i++) (*this)[i] = value; return *this;}

    
   const Tuple & operator +=(const Tuple & rhs) {for (int i=0; i<NumItems; i++) _items[i] += rhs._items[i]; return *this;}

    
   const Tuple & operator -=(const Tuple & rhs) {for (int i=0; i<NumItems; i++) _items[i] -= rhs._items[i]; return *this;}

    
   const Tuple & operator *=(const Tuple & rhs) {for (int i=0; i<NumItems; i++) _items[i] *= rhs._items[i]; return *this;}

    
   const Tuple & operator /=(const Tuple & rhs) {for (int i=0; i<NumItems; i++) _items[i] /= rhs._items[i]; return *this;}

    
   const Tuple & operator +=(const ItemType & value) {for (int i=0; i<NumItems; i++) _items[i] += value; return *this;}

    
   const Tuple & operator -=(const ItemType & value) {for (int i=0; i<NumItems; i++) _items[i] -= value; return *this;}

    
   const Tuple & operator *=(const ItemType & value) {for (int i=0; i<NumItems; i++) _items[i] *= value; return *this;}

    
   const Tuple & operator /=(const ItemType & value) {for (int i=0; i<NumItems; i++) _items[i] /= value; return *this;}

    
   const Tuple & operator <<=(int numPlaces) {ShiftValuesLeft(numPlaces); return *this;}

    
   const Tuple & operator >>=(int numPlaces) {ShiftValuesRight(numPlaces); return *this;}

    
   bool operator ==(const Tuple & rhs) const {for (int i=0; i<NumItems; i++) if (_items[i] != rhs._items[i]) return 0 ; return 1 ;}

    
   bool operator !=(const Tuple & rhs) const {return !(*this == rhs);}

    
   int operator < (const Tuple &rhs) const {for (int i=0; i<NumItems; i++) {if (_items[i] < rhs._items[i]) return 1 ; if (_items[i] > rhs._items[i]) return 0 ;} return 0 ;}

    
   int operator > (const Tuple &rhs) const {for (int i=0; i<NumItems; i++) {if (_items[i] > rhs._items[i]) return 1 ; if (_items[i] < rhs._items[i]) return 0 ;} return 0 ;}

    
   int operator <=(const Tuple &rhs) const {return !(*this > rhs);}

    
   int operator >=(const Tuple &rhs) const {return !(*this < rhs);}

    
   ItemType & operator [](uint32 i) {return _items[i];}

    
   const ItemType & operator [](uint32 i) const {return _items[i];}

    
   ItemType DotProduct(const Tuple & rhs) const {ItemType dp = ItemType(); for (int i=0; i<NumItems; i++) dp += (_items[i]*rhs._items[i]); return dp;}

    
   int IndexOf(const ItemType & value) const {for (int i=0; i<NumItems; i++) if (_items[i] == value) return i; return -1;}

    
   int LastIndexOf(const ItemType & value) const {for (int i=NumItems-1; i>=0; i--) if (_items[i] == value) return i; return -1;}

    
   int Compare(const Tuple & rhs) const {for (int i=0; i<NumItems; i++) {if (_items[i] < rhs[i]) return -1; if (_items[i] > rhs[i]) return 1;} return 0;}

    
   ItemType GetMaximumValue() const {ItemType maxv = _items[0]; for (int i=1; i<NumItems; i++) if (_items[i] > maxv) maxv = _items[i]; return maxv;}

    
   ItemType GetMinimumValue() const {ItemType minv = _items[0]; for (int i=1; i<NumItems; i++) if (_items[i] < minv) minv = _items[i]; return minv;}

    
   ItemType GetLengthSquared() const {ItemType sum = ItemType(); for (int i=0; i<NumItems; i++) sum += (_items[i]*_items[i]); return sum;}

    
   uint32 GetNumInstancesOf(const ItemType & value) const {uint32 count = 0; for (int i=0; i<NumItems; i++) if (_items[i] == value) count++; return count;}

    






   bool MatchSubrange(const Tuple & rhs, uint32 startItem = 0, uint32 endItem = ((uint32)-1)) const
   {
      if (endItem > NumItems) endItem = NumItems;
      for (uint32 i=startItem; i<endItem; i++) if (_items[i] != rhs._items[i]) return 0 ;
      return 1 ;
   }

    






   void FillSubrange(ItemType value, uint32 startItem = 0, uint32 endItem = ((uint32)-1))
   {
      if (endItem > NumItems) endItem = NumItems;
      for (uint32 i=startItem; i<endItem; i++) _items[i] = value;
   }

    






   void CopySubrange(const Tuple & rhs, uint32 startItem = 0, uint32 endItem = ((uint32)-1))
   {
      if (endItem > NumItems) endItem = NumItems;
      for (uint32 i=startItem; i<endItem; i++) _items[i] = rhs[i];
   }

    
   void Reset() {ItemType def = ItemType(); for (int i=0; i<NumItems; i++) _items[i] = def;}

    
   const uint32 GetNumItemsInTuple() const {return NumItems;}

    
   typedef ItemType TupleItemType;

private:
    
   void ShiftValuesLeft(int numPlaces)
   {
      if (numPlaces > 0) 
      {
         ItemType def = ItemType();
         for (int i=0; i<NumItems; i++) _items[i] = (i < NumItems-numPlaces) ? _items[i+numPlaces] : def;
      }
      else if (numPlaces < 0) ShiftValuesRight(-numPlaces);
   }

    
   void ShiftValuesRight(int numPlaces) 
   {
      if (numPlaces > 0) 
      {
         ItemType def = ItemType();
         for (int i=NumItems-1; i>=0; i--) _items[i] = (i >= numPlaces) ? _items[i-numPlaces] : def;
      }
      else if (numPlaces < 0) ShiftValuesLeft(-numPlaces);
   }

private:
   ItemType _items[NumItems];
};

template <int N,class T> inline const Tuple<N,T> operator -  (const Tuple<N,T> & lhs)                {Tuple<N,T> ret(lhs); ret  -= lhs+lhs;      return ret;}
template <int N,class T> inline const Tuple<N,T> operator +  (const Tuple<N,T> & lhs, const T & rhs) {Tuple<N,T> ret(lhs); ret  += rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator -  (const Tuple<N,T> & lhs, const T & rhs) {Tuple<N,T> ret(lhs); ret  -= rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator +  (const T & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  += rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator -  (const T & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  -= rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator +  (const Tuple<N,T> & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  += rhs; return ret;}
template <int N,class T> inline const Tuple<N,T> operator -  (const Tuple<N,T> & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  -= rhs; return ret;}
template <int N,class T> inline const Tuple<N,T> operator *  (const Tuple<N,T> & lhs, const T & rhs) {Tuple<N,T> ret(lhs); ret  *= rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator /  (const Tuple<N,T> & lhs, const T & rhs) {Tuple<N,T> ret(lhs); ret  /= rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator *  (const T & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  *= rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator /  (const T & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  /= rhs;          return ret;}
template <int N,class T> inline const Tuple<N,T> operator *  (const Tuple<N,T> & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  *= rhs; return ret;}
template <int N,class T> inline const Tuple<N,T> operator /  (const Tuple<N,T> & lhs, const Tuple<N,T> & rhs) {Tuple<N,T> ret(lhs); ret  /= rhs; return ret;}


























 
 







};   


# 19 "../src/muscle/support/Point.h" 2


namespace muscle {

 
 

 
class Point : public Flattenable, public Tuple<2,float>
{
public:
    
   Point() { }

    



   Point(float ax, float ay) {Set(ax, ay);}

    
   Point(const Point & rhs) : Flattenable(), Tuple<2,float>(rhs) { }

    
   virtual ~Point() { }
 
    
   inline float & x()       {return (*this)[0];}

    
   inline float   x() const {return (*this)[0];}

    
   inline float & y()       {return (*this)[1];}

    
   inline float   y() const {return (*this)[1];}

    



   void Set(float ax, float ay) {x() = ax; y() = ay;}

    




   void ConstrainTo(Point topLeft, Point bottomRight)
   {
      if (x() < topLeft.x())     x() = topLeft.x();
      if (y() < topLeft.y())     y() = topLeft.y();
      if (x() > bottomRight.x()) x() = bottomRight.x();
      if (y() > bottomRight.y()) y() = bottomRight.y();
   }

    
   void PrintToStream() const
   {
      printf("Point: %f %f\n", x(), y());
   }
      
    
   virtual bool IsFixedSize() const {return 1 ;} 

    
   virtual type_code TypeCode() const {return B_POINT_TYPE;}

    
   virtual uint32 FlattenedSize() const {return 2*sizeof(float);}

    


   virtual void Flatten(uint8 * buffer) const 
   {
      float * buf = (float *) buffer;
      float ox = (float)( x() ) ; muscleCopyOut(&buf[0], ox);
      float oy = (float)( y() ) ; muscleCopyOut(&buf[1], oy);
   }

    




   virtual status_t Unflatten(const uint8 * buffer, uint32 size) 
   {
      if (size >= FlattenedSize())
      {
         float * buf = (float *) buffer;
         muscleCopyIn(x(), &buf[0]); x() = (float)( x() ) ;
         muscleCopyIn(y(), &buf[1]); y() = (float)( y() ) ;
         return 0 ;
      }
      else return -1 ;
   }
};

inline const   Point   operator + (const   Point   & lhs, const   float   & rhs) {  Point   ret(lhs);                   ret += rhs;     return ret;} inline const   Point   operator + (const   float   & lhs, const   Point   & rhs) {  Point   ret; ret.FillSubrange(lhs); ret += rhs;     return ret;} inline const   Point   operator + (const   Point   & lhs, const   Point   & rhs) {  Point   ret(lhs);                   ret += rhs;     return ret;}  inline const   Point   operator - (const   Point   & lhs)                {  Point   ret(lhs);                   ret -= lhs+lhs; return ret;} inline const   Point   operator - (const   Point   & lhs, const   float   & rhs) {  Point   ret(lhs);                   ret -= rhs;     return ret;} inline const   Point   operator - (const   float   & lhs, const   Point   & rhs) {  Point   ret; ret.FillSubrange(lhs); ret -= rhs;     return ret;} inline const   Point   operator - (const   Point   & lhs, const   Point   & rhs) {  Point   ret(lhs);                   ret -= rhs;     return ret;}  inline const   Point   operator * (const   Point   & lhs, const   float   & rhs) {  Point   ret(lhs);                   ret *= rhs;     return ret;} inline const   Point   operator * (const   float   & lhs, const   Point   & rhs) {  Point   ret; ret.FillSubrange(lhs); ret *= rhs;     return ret;} inline const   Point   operator * (const   Point   & lhs, const   Point   & rhs) {  Point   ret(lhs);                   ret *= rhs;     return ret;}  inline const   Point   operator / (const   Point   & lhs, const   float   & rhs) {  Point   ret(lhs);                   ret /= rhs;     return ret;} inline const   Point   operator / (const   float   & lhs, const   Point   & rhs) {  Point   ret; ret.FillSubrange(lhs); ret /= rhs;     return ret;} inline const   Point   operator / (const   Point   & lhs, const   Point   & rhs) {  Point   ret(lhs);                   ret /= rhs;     return ret;}  inline const   Point   operator >> (const   Point   & lhs, int rhs) {  Point   ret(lhs);                        ret >>= rhs;    return ret;} inline const   Point   operator << (const   Point   & lhs, int rhs) {  Point   ret(lhs);                        ret <<= rhs;    return ret;}  ;

};   


# 20 "../src/muscle/message/Message.h" 2

# 1 "../src/muscle/support/Rect.h" 1
 

 












namespace muscle {

 
 

 
class Rect : public Flattenable, public Tuple<4,float>
{
public:
    


 
   Rect() {Set(0.0f,0.0f,-1.0f,-1.0f);}

    
   Rect(float l, float t, float r, float b) {Set(l,t,r,b);}

    
   Rect(const Rect & rhs) : Flattenable(), Tuple<4,float>(rhs) { }

    
   Rect(Point leftTop, Point rightBottom) {Set(leftTop.x(), leftTop.y(), rightBottom.x(), rightBottom.y());}

    
   virtual ~Rect() { }

    
   inline float   left()   const {return (*this)[0];}

    
   inline float & left()         {return (*this)[0];}

    
   inline float   top()    const {return (*this)[1];}

    
   inline float & top()          {return (*this)[1];}

    
   inline float   right()  const {return (*this)[2];}

    
   inline float & right()        {return (*this)[2];}

    
   inline float   bottom() const {return (*this)[3];}

    
   inline float & bottom()       {return (*this)[3];}

    
   inline void Set(float l, float t, float r, float b)
   {
      left()   = l;
      top()    = t;
      right()  = r;
      bottom() = b;
   }

    
   void PrintToStream() const {printf("Rect: leftTop=(%f,%f) rightBottom=(%f,%f)\n", left(), top(), right(), bottom());}

    
   inline Point LeftTop() const {return Point(left(), top());}

    
   inline Point RightBottom() const {return Point(right(), bottom());}

    
   inline Point LeftBottom() const {return Point(left(), bottom());}

    
   inline Point RightTop() const {return Point(right(), top());}

    
   inline void SetLeftTop(const Point p) {left() = p.x(); top() = p.y();}

    
   inline void SetRightBottom(const Point p) {right() = p.x(); bottom() = p.y();}

    
   inline void SetLeftBottom(const Point p) {left() = p.x(); bottom() = p.y();}

    
   inline void SetRightTop(const Point p) {right() = p.x(); top() = p.y();}

    
   inline void InsetBy(Point p) {InsetBy(p.x(), p.y());}

    
   inline void InsetBy(float dx, float dy) {left() += dx; top() += dy; right() -= dx; bottom() -= dy;}

    
   inline void OffsetBy(Point p) {OffsetBy(p.x(), p.y());}

    
   inline void OffsetBy(float dx, float dy) {left() += dx; top() += dy; right() += dx; bottom() += dy;}

    
   inline void OffsetTo(Point p) {OffsetTo(p.x(), p.y());}

    
   inline void OffsetTo(float x, float y) {right() = x + Width(); bottom() = y + Height(); left() = x; top() = y;}

    
   void Rationalize() 
   {
      if (left() > right()) {float t = left(); left() = right(); right() = t;}
      if (top() > bottom()) {float t = top(); top() = bottom(); bottom() = t;}
   }

    
   inline Rect operator&(Rect r) const 
   {
      Rect ret(*this);
      if (ret.left()   < r.left())   ret.left()   = r.left();
      if (ret.right()  > r.right())  ret.right()  = r.right();
      if (ret.top()    < r.top())    ret.top()    = r.top();
      if (ret.bottom() > r.bottom()) ret.bottom() = r.bottom();
      return ret;
   }

    
   inline Rect operator|(Rect r) const 
   {
      Rect ret(*this);
      if (r.left()   < ret.left())   ret.left()   = r.left();
      if (r.right()  > ret.right())  ret.right()  = r.right();
      if (r.top()    < ret.top())    ret.top()    = r.top();
      if (r.bottom() > ret.bottom()) ret.bottom() = r.bottom();
      return ret;
   }

    
   inline Rect & operator |= (const Rect & rhs) {(*this) = (*this) | rhs; return *this;}

    
   inline Rect & operator &= (const Rect & rhs) {(*this) = (*this) & rhs; return *this;}

    
   inline bool Intersects(Rect r) const {return (r&(*this)).IsValid();}

    
   inline bool IsValid() const {return ((Width() >= 0.0f)&&(Height() >= 0.0f));}

    
   inline float Width() const {return right() - left();}

    
   inline int32 IntegerWidth() const {return (int32)ceil(Width());}

    
   inline float Height() const {return bottom()-top();}

    
   inline int32 IntegerHeight() const {return (int32)ceil(Height());}

    
   inline bool Contains(Point p) const {return ((p.x() >= left())&&(p.x() <= right())&&(p.y() >= top())&&(p.y() <= bottom()));}

    
   inline bool Contains(Rect p) const {return ((Contains(p.LeftTop()))&&(Contains(p.RightTop()))&&(Contains(p.LeftBottom()))&&(Contains(p.RightBottom())));}

    
   virtual bool IsFixedSize() const {return 1 ;}

    
   virtual type_code TypeCode() const {return B_RECT_TYPE;}

    
   virtual uint32 FlattenedSize() const {return 4*sizeof(float);}

    


   virtual void Flatten(uint8 * buffer) const
   {
      float * buf = (float *) buffer;
      float oL = (float)( left() ) ;   muscleCopyOut(&buf[0], oL);
      float oT = (float)( top() ) ;    muscleCopyOut(&buf[1], oT);
      float oR = (float)( right() ) ;  muscleCopyOut(&buf[2], oR);
      float oB = (float)( bottom() ) ; muscleCopyOut(&buf[3], oB);
   }

    




   virtual status_t Unflatten(const uint8 * buffer, uint32 size)
   {
      if (size >= FlattenedSize())
      {
         float * buf = (float *) buffer;
         muscleCopyIn(left(),   &buf[0]); left()   = (float)( left() ) ;
         muscleCopyIn(top(),    &buf[1]); top()    = (float)( top() ) ;
         muscleCopyIn(right(),  &buf[2]); right()  = (float)( right() ) ;
         muscleCopyIn(bottom(), &buf[3]); bottom() = (float)( bottom() ) ;
         return 0 ;
      }
      else return -1 ;
   }
};

inline const   Rect   operator + (const   Rect   & lhs, const   float   & rhs) {  Rect   ret(lhs);                   ret += rhs;     return ret;} inline const   Rect   operator + (const   float   & lhs, const   Rect   & rhs) {  Rect   ret; ret.FillSubrange(lhs); ret += rhs;     return ret;} inline const   Rect   operator + (const   Rect   & lhs, const   Rect   & rhs) {  Rect   ret(lhs);                   ret += rhs;     return ret;}  inline const   Rect   operator - (const   Rect   & lhs)                {  Rect   ret(lhs);                   ret -= lhs+lhs; return ret;} inline const   Rect   operator - (const   Rect   & lhs, const   float   & rhs) {  Rect   ret(lhs);                   ret -= rhs;     return ret;} inline const   Rect   operator - (const   float   & lhs, const   Rect   & rhs) {  Rect   ret; ret.FillSubrange(lhs); ret -= rhs;     return ret;} inline const   Rect   operator - (const   Rect   & lhs, const   Rect   & rhs) {  Rect   ret(lhs);                   ret -= rhs;     return ret;}  inline const   Rect   operator * (const   Rect   & lhs, const   float   & rhs) {  Rect   ret(lhs);                   ret *= rhs;     return ret;} inline const   Rect   operator * (const   float   & lhs, const   Rect   & rhs) {  Rect   ret; ret.FillSubrange(lhs); ret *= rhs;     return ret;} inline const   Rect   operator * (const   Rect   & lhs, const   Rect   & rhs) {  Rect   ret(lhs);                   ret *= rhs;     return ret;}  inline const   Rect   operator / (const   Rect   & lhs, const   float   & rhs) {  Rect   ret(lhs);                   ret /= rhs;     return ret;} inline const   Rect   operator / (const   float   & lhs, const   Rect   & rhs) {  Rect   ret; ret.FillSubrange(lhs); ret /= rhs;     return ret;} inline const   Rect   operator / (const   Rect   & lhs, const   Rect   & rhs) {  Rect   ret(lhs);                   ret /= rhs;     return ret;}  inline const   Rect   operator >> (const   Rect   & lhs, int rhs) {  Rect   ret(lhs);                        ret >>= rhs;    return ret;} inline const   Rect   operator << (const   Rect   & lhs, int rhs) {  Rect   ret(lhs);                        ret <<= rhs;    return ret;}  ;

};   


# 21 "../src/muscle/message/Message.h" 2


# 1 "../src/muscle/util/Hashtable.h" 1
 

 



 



























































namespace muscle {

 




template <class T> class HashFunctor
{
public:
   uint32 operator () (const T x) const {return (uint32) x;}
};

template <class KeyType, class ValueType, class HashFunctorType> class Hashtable;   

 
















template <class KeyType, class ValueType, class HashFunctorType = HashFunctor<KeyType> > class HashtableIterator
{
public:
    





   HashtableIterator();

    
   HashtableIterator(const HashtableIterator<KeyType, ValueType, HashFunctorType> & rhs);

    
   ~HashtableIterator();

    
   HashtableIterator<KeyType,ValueType, HashFunctorType> & operator=(const HashtableIterator<KeyType,ValueType,HashFunctorType> & rhs);

    
   bool HasMoreKeys() const;

    




   status_t GetNextKey(KeyType & setNextKey);

    




   const KeyType * GetNextKey();

    




   status_t PeekNextKey(KeyType & setKey) const;

    




   const KeyType * PeekNextKey() const;

    
   bool HasMoreValues() const;

    




   status_t GetNextValue(ValueType & setNextValue);

    




   ValueType * GetNextValue();

    




   status_t PeekNextValue(ValueType & setValue) const;

    




   ValueType * PeekNextValue() const;

private:
   friend class Hashtable<KeyType, ValueType, HashFunctorType>;

   HashtableIterator(const Hashtable<KeyType, ValueType, HashFunctorType> & owner, void * startCookie, bool backwards);

   void * _scratchSpace[2];    

   void * _nextKeyCookie;
   void * _nextValueCookie;
   bool _backwards;

   HashtableIterator<KeyType, ValueType, HashFunctorType> * _prevIter;   
   HashtableIterator<KeyType, ValueType, HashFunctorType> * _nextIter;   

   const Hashtable<KeyType, ValueType, HashFunctorType>   * _owner;      
};

 













template <class KeyType, class ValueType, class HashFunctorType = HashFunctor<KeyType> > class Hashtable
{
public:
    








   typedef int (*KeyCompareFunc)(const KeyType& key1, const KeyType& key2, void * cookie);

    








   typedef int (*ValueCompareFunc)(const ValueType& key1, const ValueType& key2, void * cookie);

    
   enum {
      AUTOSORT_DISABLED = 0,
      AUTOSORT_BY_KEY,
      AUTOSORT_BY_VALUE
   };

    




   Hashtable(uint32 initialCapacity = 11, float loadFactor = 0.75f);

    
   Hashtable(const Hashtable<KeyType,ValueType,HashFunctorType> & rhs);

    
   Hashtable<KeyType,ValueType,HashFunctorType> & operator=(const Hashtable<KeyType,ValueType,HashFunctorType> & rhs);

    
   ~Hashtable();

    
   uint32 GetNumItems() const {return _count;}

    
   bool IsEmpty() const {return _count == 0;}

    
   bool ContainsKey(const KeyType& key) const;

    
   bool ContainsValue(const ValueType& value) const;

    
   int32 IndexOfKey(const KeyType& key) const;

    




   status_t Get(const KeyType& key, ValueType& setValue) const; 

    





   ValueType * Get(const KeyType & key) const;

    



   HashtableIterator<KeyType,ValueType,HashFunctorType> GetIterator(bool backwards = 0 ) const {return HashtableIterator<KeyType,ValueType,HashFunctorType>(*this, backwards ? _iterTail : _iterHead, backwards);}

    





   HashtableIterator<KeyType,ValueType,HashFunctorType> GetIteratorAt(const KeyType & startAt, bool backwards = 0 ) const {return HashtableIterator<KeyType,ValueType,HashFunctorType>(*this, GetEntry(startAt, __null ), backwards);}

    





   const KeyType * GetKeyAt(uint32 index) const;

    






   status_t GetKeyAt(uint32 index, KeyType & retKey) const;

    






   status_t Put(const KeyType& key, const ValueType& value, ValueType & setPreviousValue, bool * optSetReplaced = __null );

    




   status_t Put(const KeyType& key, const ValueType& value);

    



   status_t Remove(const KeyType& key);

    




   status_t Remove(const KeyType& key, ValueType & setRemovedValue);

    
   void Clear();

    










   void SetAutoSortMode(int mode, bool sortNow = 1 ) {_autoSortMode = mode; if (sortNow) (void) Sort();}

    
   int GetAutoSortMode() const {return _autoSortMode;}

    




   void SetCompareCookie(void * cookie) {_compareCookie = cookie;}

    
   void * GetCompareCookie() const {return _compareCookie;}

    






   void SetKeyCompareFunction(KeyCompareFunc func) {_userKeyCompareFunc = func;}

    
   KeyCompareFunc GetKeyCompareFunction() const {return _userKeyCompareFunc;}

    




   void SetValueCompareFunction(ValueCompareFunc func) {_userValueCompareFunc = func;}

    
   ValueCompareFunc GetValueCompareFunction() const {return _userValueCompareFunc;}

    





   void SwapContents(Hashtable<KeyType,ValueType,HashFunctorType> & swapMe);

    






   status_t MoveToFront(const KeyType & moveMe);

    






   status_t MoveToBack(const KeyType & moveMe);

    









   status_t MoveToBefore(const KeyType & moveMe, const KeyType & toBeforeMe);

    









   status_t MoveToBehind(const KeyType & moveMe, const KeyType & toBehindMe);

    










   status_t Sort() {return SortByAux((_autoSortMode != AUTOSORT_BY_VALUE) ? _userKeyCompareFunc : __null , (_autoSortMode != AUTOSORT_BY_KEY) ? _userValueCompareFunc : __null , _compareCookie);}

    




   void SortByKey(KeyCompareFunc func, void * optCompareCookie = __null ) {(void) SortByAux(func, __null , optCompareCookie);}

    




   void SortByValue(ValueCompareFunc func, void * optCompareCookie = __null ) {(void) SortByAux(__null , func, optCompareCookie);}

private:
   friend class HashtableIterator<KeyType, ValueType, HashFunctorType>;

   class HashtableEntry
   {
   public:
      HashtableEntry() : _next(__null ), _iterPrev(__null ), _iterNext(__null ), _valid(0 )
      {
          
      }
 
      HashtableEntry(const HashtableEntry & rhs) : _iterPrev(__null ), _iterNext(__null )
      {
         *this = rhs;
      }

      ~HashtableEntry()
      {
          
      }

      HashtableEntry & operator=(const HashtableEntry & rhs)
      {
         _hash  = rhs._hash;
         _key   = rhs._key;
         _value = rhs._value;
         _next  = rhs._next;
         _valid = rhs._valid;
          
         return * this;
      }
 
       
      void Invalidate(const KeyType & defaultKey, const ValueType & defaultValue)
      {
          
          
          
         _key   = defaultKey;
         _value = defaultValue;
         _valid = 0 ;
         _next = _iterPrev = _iterNext = __null ;
          
      }

      uint32 _hash;                
      KeyType _key;                
      ValueType _value;            
      HashtableEntry* _next;       
      HashtableEntry* _iterPrev;   
      HashtableEntry* _iterNext;   
      bool _valid;                 
   };

    
   HashtableEntry * PutAux(const KeyType& key, const ValueType& value, ValueType * optSetPreviousValue, bool * optReplacedFlag);
   status_t RemoveAux(const KeyType& key, ValueType * setRemovedValue);
   status_t SortByAux(KeyCompareFunc optKeyFunc, ValueCompareFunc optValueFunc, void * cookie);

    
   void InsertSortedIterationEntry(HashtableEntry * e, KeyCompareFunc optKeyFunc, ValueCompareFunc optValueCompareFunc, void * cookie);
   void InsertIterationEntry(HashtableEntry * e, HashtableEntry * optBehindThisOne);
   void RemoveIterationEntry(HashtableEntry * e);
   HashtableEntry * GetEntry(const KeyType& key, HashtableEntry ** optRetPrev) const;
   HashtableEntry * GetEntryAt(uint32 idx) const;
   int CompareEntries(const HashtableEntry & left, const HashtableEntry & right, KeyCompareFunc optKeyFunc, ValueCompareFunc optValueFunc, void * cookie) const;

    
   void RegisterIterator(HashtableIterator<KeyType,ValueType,HashFunctorType> * iter) const
   {
       
      iter->_prevIter = __null ;
      iter->_nextIter = _iterList;  
      if (_iterList) _iterList->_prevIter = iter;
      _iterList = iter;
   }

   void UnregisterIterator(HashtableIterator<KeyType,ValueType,HashFunctorType> * iter) const
   {
      if (iter->_prevIter) iter->_prevIter->_nextIter = iter->_nextIter;
      if (iter->_nextIter) iter->_nextIter->_prevIter = iter->_prevIter;
      if (iter == _iterList) _iterList = iter->_nextIter;
      iter->_prevIter = iter->_nextIter = __null ;
   }

   KeyType * GetKeyFromCookie(void * c) const {return c ? &(((HashtableEntry *)c)->_key) : __null ;}
   ValueType * GetValueFromCookie(void * c) const  {return c ? &(((HashtableEntry *)c)->_value) : __null ;}

   void IterateCookie(void ** c, bool backwards) const 
   {
      HashtableEntry * entry = *((HashtableEntry **)c);
      *c = entry ? (backwards ? entry->_iterPrev : entry->_iterNext) : __null ;
   }

   uint32 NextPrime(uint32 start) const;
   status_t GrowTable();

   uint32 _count;        
   uint32 _tableSize;    
   uint32 _threshold;
   float _loadFactor;

   HashtableEntry * _table;
   HashtableEntry * _iterHead;     
   HashtableEntry * _iterTail;     

   KeyCompareFunc _userKeyCompareFunc;        
   ValueCompareFunc _userValueCompareFunc;    
   int _autoSortMode;                         
   void * _compareCookie;                     

   HashFunctorType _functor;   

   mutable HashtableIterator<KeyType, ValueType, HashFunctorType> * _iterList;   
};

 
 
 
 
template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType,ValueType,HashFunctorType>::Hashtable(uint32 initialCapacity, float loadFactor)
   : _count(0), _tableSize(initialCapacity), _threshold((uint32)(initialCapacity*loadFactor)), _loadFactor(loadFactor), _table(__null ), _iterHead(__null ), _iterTail(__null ), _userKeyCompareFunc(__null ), _userValueCompareFunc(__null ), _autoSortMode(AUTOSORT_DISABLED), _compareCookie(__null ), _iterList(__null )
{
    
}

template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType,ValueType,HashFunctorType>::
Hashtable(const Hashtable<KeyType,ValueType,HashFunctorType> & rhs)
   : _count(0), _tableSize(rhs._tableSize), _threshold(rhs._threshold), _loadFactor(rhs._loadFactor), _table(__null ), _iterHead(__null ), _iterTail(__null ), _userKeyCompareFunc(rhs._userKeyCompareFunc), _userValueCompareFunc(rhs._userValueCompareFunc), _autoSortMode(rhs._autoSortMode), _compareCookie(rhs._compareCookie), _iterList(__null )
{
   *this = rhs;
}

template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType, ValueType, HashFunctorType> &
Hashtable<KeyType, ValueType, HashFunctorType> ::
operator=(const Hashtable<KeyType, ValueType, HashFunctorType> & rhs)
{
   if (this != &rhs)
   {
      Clear();
      HashtableIterator<KeyType, ValueType, HashFunctorType> iter = rhs.GetIterator();
      const KeyType * nextKey;
      while((nextKey = iter.GetNextKey()) != __null ) (void) Put(*nextKey, *iter.GetNextValue());   
   }
   return *this;
}

template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType,ValueType,HashFunctorType>::~Hashtable()
{
   Clear();
   delete [] _table;
}

template <class KeyType, class ValueType, class HashFunctorType>
bool
Hashtable<KeyType,ValueType,HashFunctorType>::ContainsValue(const ValueType& value) const
{
   HashtableIterator<KeyType, ValueType, HashFunctorType> iter = GetIterator();
   ValueType * v;
   while((v = iter.GetNextValue()) != __null ) if (*v == value) return 1 ;
   return 0 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
bool
Hashtable<KeyType,ValueType,HashFunctorType>::ContainsKey(const KeyType& key) const
{
   return (GetEntry(key, __null ) != __null );
}

template <class KeyType, class ValueType, class HashFunctorType>
int32
Hashtable<KeyType,ValueType,HashFunctorType>::IndexOfKey(const KeyType& key) const
{
   const HashtableEntry * entry = GetEntry(key, __null );
   int32 count = -1;
   if (entry)
   {
      if (entry == _iterTail) count = GetNumItems()-1;
      else
      {
         while(entry)
         {
            entry = entry->_iterPrev; 
            count++;
         }
      }
   }
   return count;
}

template <class KeyType, class ValueType, class HashFunctorType>
const KeyType * 
Hashtable<KeyType,ValueType,HashFunctorType>::GetKeyAt(uint32 index) const
{
   HashtableEntry * e = GetEntryAt(index);
   return e ? &e->_key : __null ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t 
Hashtable<KeyType,ValueType,HashFunctorType>::GetKeyAt(uint32 index, KeyType & retKey) const
{
   HashtableEntry * e = GetEntryAt(index);
   if (e)
   {
      retKey = e->_key;
      return 0 ;
   }
   return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::Get(const KeyType& key, ValueType & setValue) const
{
   ValueType * ptr = Get(key);
   if (ptr)
   {
      setValue = *ptr;
      return 0 ;
   }
   else return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
ValueType *
Hashtable<KeyType,ValueType,HashFunctorType>::Get(const KeyType& key) const
{
   HashtableEntry * e = GetEntry(key, __null );
   return e ? &e->_value : __null ;
}

template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType,ValueType,HashFunctorType>::HashtableEntry *
Hashtable<KeyType,ValueType,HashFunctorType>::GetEntry(const KeyType& key, HashtableEntry ** optRetPrev) const
{
   if (_table)
   {
      uint32 hash = _functor(key);
      HashtableEntry * e = &_table[hash % _tableSize];
      if (e->_valid)
      {
         HashtableEntry * prev = __null ;
         while(e)
         {
            if ((e->_hash == hash)&&((_userKeyCompareFunc) ? (_userKeyCompareFunc(e->_key, key, _compareCookie) == 0) : (e->_key == key))) 
            {
               if (optRetPrev) *optRetPrev = prev;
               return e;
            }
            prev = e;
            e = e->_next; 
         }
      }
   }
   return __null ;
}

template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType,ValueType,HashFunctorType>::HashtableEntry *
Hashtable<KeyType,ValueType,HashFunctorType>::GetEntryAt(uint32 idx) const
{
   HashtableEntry * e = _iterHead;
   while((e)&&(idx--)) e = e->_iterNext;
   return e;
}

template <class KeyType, class ValueType, class HashFunctorType>
int
Hashtable<KeyType,ValueType,HashFunctorType>::CompareEntries(const HashtableEntry & left, const HashtableEntry & right, KeyCompareFunc optKeyFunc, ValueCompareFunc optValueFunc, void * cookie) const
{
   return optValueFunc ? optValueFunc(left._value, right._value, cookie) : (optKeyFunc ? optKeyFunc(left._key, right._key, cookie) : 0);
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t 
Hashtable<KeyType,ValueType,HashFunctorType>::SortByAux(KeyCompareFunc optKeyFunc, ValueCompareFunc optValueFunc, void * cookie)
{
   if ((optKeyFunc)||(optValueFunc))
   {
      HashtableIterator<KeyType,ValueType,HashFunctorType> * saveIterList = _iterList;
      _iterList = __null ;   

       
      HashtableEntry * privList = __null ;
      while(_iterHead)
      {
         HashtableEntry * temp = _iterHead;  
         RemoveIterationEntry(_iterHead);
         temp->_iterNext = privList;
         privList = temp;
      }

       
      while(privList)
      {
         HashtableEntry * next = privList->_iterNext;
         InsertSortedIterationEntry(privList, optKeyFunc, optValueFunc, cookie);
         privList = next;
      } 

      _iterList = saveIterList;   
      return 0 ;
   }
   else return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::GrowTable()
{
    
   {
      HashtableIterator<KeyType,ValueType,HashFunctorType> * nextIter = _iterList;
      while(nextIter)
      {
         nextIter->_scratchSpace[0] = nextIter->_scratchSpace[1] = __null ;   
         nextIter = nextIter->_nextIter;
      }
   }
    
    
   Hashtable<KeyType,ValueType,HashFunctorType> biggerTable(NextPrime(2*_tableSize), _loadFactor);
   biggerTable.SetKeyCompareFunction(_userKeyCompareFunc);
   biggerTable.SetValueCompareFunction(_userValueCompareFunc);
   biggerTable.SetCompareCookie(_compareCookie);
   biggerTable.SetAutoSortMode(_autoSortMode);
   {
      HashtableEntry * next = _iterHead;
      while(next)
      {
         HashtableEntry * hisClone = biggerTable.PutAux(next->_key, next->_value, __null , __null );
         if (hisClone)
         {
             
            HashtableIterator<KeyType,ValueType,HashFunctorType> * nextIter = _iterList;
            while(nextIter)
            {
               if (nextIter->_nextKeyCookie   == next) nextIter->_scratchSpace[0] = hisClone;
               if (nextIter->_nextValueCookie == next) nextIter->_scratchSpace[1] = hisClone;
               nextIter = nextIter->_nextIter;
            }
         }
         else return -1 ;   

         next = next->_iterNext;
      }
   }

    
   {
      HashtableIterator<KeyType,ValueType,HashFunctorType> * temp = _iterList;
      _iterList = __null ;
      SwapContents(biggerTable);
      _iterList = temp;
   }

    
   {
      HashtableIterator<KeyType,ValueType,HashFunctorType> * nextIter = _iterList;
      while(nextIter)
      {
         nextIter->_nextKeyCookie   = nextIter->_scratchSpace[0];
         nextIter->_nextValueCookie = nextIter->_scratchSpace[1];
         nextIter = nextIter->_nextIter;
      }
   }

   return 0 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
void
Hashtable<KeyType,ValueType,HashFunctorType>::SwapContents(Hashtable<KeyType,ValueType,HashFunctorType> & swapMe)
{
   muscleSwap(_count,                swapMe._count);
   muscleSwap(_tableSize,            swapMe._tableSize);
   muscleSwap(_threshold,            swapMe._threshold);
   muscleSwap(_loadFactor,           swapMe._loadFactor);
   muscleSwap(_table,                swapMe._table);
   muscleSwap(_iterHead,             swapMe._iterHead);
   muscleSwap(_iterTail,             swapMe._iterTail);
   muscleSwap(_userKeyCompareFunc,   swapMe._userKeyCompareFunc);
   muscleSwap(_userValueCompareFunc, swapMe._userValueCompareFunc);
   muscleSwap(_autoSortMode,         swapMe._autoSortMode);
   muscleSwap(_compareCookie,        swapMe._compareCookie);
   muscleSwap(_iterList,             swapMe._iterList);

    
   {
      HashtableIterator<KeyType,ValueType,HashFunctorType> * next = _iterList;
      while(next)
      {
         next->_owner = &swapMe;
         next = next->_nextIter;
      }
   }
   {
      HashtableIterator<KeyType,ValueType,HashFunctorType> * next = swapMe._iterList;
      while(next)
      {
         next->_owner = this;
         next = next->_nextIter;
      }
   }
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t 
Hashtable<KeyType,ValueType,HashFunctorType>::MoveToFront(const KeyType & moveMe)
{
   HashtableEntry * e = GetEntry(moveMe, __null );
   if (e == __null ) return -1 ;
   if (e->_iterPrev)
   {
      RemoveIterationEntry(e);
      InsertIterationEntry(e, __null );
   }
   return 0 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t 
Hashtable<KeyType,ValueType,HashFunctorType>::MoveToBack(const KeyType & moveMe)
{
   HashtableEntry * e = GetEntry(moveMe, __null );
   if (e == __null ) return -1 ;
   if (e->_iterNext)
   {
      RemoveIterationEntry(e);
      InsertIterationEntry(e, _iterTail);
   }
   return 0 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t 
Hashtable<KeyType,ValueType,HashFunctorType>::MoveToBefore(const KeyType & moveMe, const KeyType & toBeforeMe)
{
   HashtableEntry * e = GetEntry(moveMe, __null );
   HashtableEntry * f = GetEntry(toBeforeMe, __null );
   if ((e == __null )||(f == __null )||(e == f)) return -1 ;
   if (e->_iterNext != f)
   {
      RemoveIterationEntry(e);
      InsertIterationEntry(e, f->_iterPrev);
   }
   return 0 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t 
Hashtable<KeyType,ValueType,HashFunctorType>::MoveToBehind(const KeyType & moveMe, const KeyType & toBehindMe)
{
   HashtableEntry * d = GetEntry(toBehindMe, __null );
   HashtableEntry * e = GetEntry(moveMe, __null );
   if ((d == __null )||(e == __null )||(d == e)) return -1 ;
   if (e->_iterPrev != d)
   {
      RemoveIterationEntry(e);
      InsertIterationEntry(e, d);
   }
   return 0 ;
}

 
template <class KeyType, class ValueType, class HashFunctorType>
void
Hashtable<KeyType,ValueType,HashFunctorType>::InsertSortedIterationEntry(HashtableEntry * e, KeyCompareFunc optKeyFunc, ValueCompareFunc optValueFunc, void * cookie)
{
   HashtableEntry * insertAfter = _iterTail;   
   if ((_iterHead)&&((optKeyFunc)||(optValueFunc)))
   {
       
           if (CompareEntries(*e, *_iterHead, optKeyFunc, optValueFunc, cookie) < 0) insertAfter = __null ;   
      else if (CompareEntries(*e, *_iterTail, optKeyFunc, optValueFunc, cookie) < 0)   
      {
         HashtableEntry * prev = _iterHead;
         HashtableEntry * next = _iterHead->_iterNext;   
         while(next)
         {
            if (CompareEntries(*e, *next, optKeyFunc, optValueFunc, cookie) < 0)
            {
               insertAfter = prev;
               break;
            }
            else 
            {
               prev = next;
               next = next->_iterNext;
            }
         }   
      }
   }
   InsertIterationEntry(e, insertAfter);
}

 
template <class KeyType, class ValueType, class HashFunctorType>
void
Hashtable<KeyType,ValueType,HashFunctorType>::InsertIterationEntry(HashtableEntry * e, HashtableEntry * optBehindThis)
{
   e->_iterPrev = optBehindThis;
   e->_iterNext = optBehindThis ? optBehindThis->_iterNext : _iterHead;
   if (e->_iterPrev) e->_iterPrev->_iterNext = e;
                else _iterHead = e;
   if (e->_iterNext) e->_iterNext->_iterPrev = e;
                else _iterTail = e;
}

 
template <class KeyType, class ValueType, class HashFunctorType>
void 
Hashtable<KeyType,ValueType,HashFunctorType>::RemoveIterationEntry(HashtableEntry * e)
{
    
   HashtableIterator<KeyType, ValueType, HashFunctorType> * next = _iterList;
   while(next)
   {
      if (next->_nextKeyCookie   == e) (void) next->GetNextKey();
      if (next->_nextValueCookie == e) (void) next->GetNextValue();
      next = next->_nextIter;
   }

   if (_iterHead == e) _iterHead = e->_iterNext;
   if (_iterTail == e) _iterTail = e->_iterPrev;
   if (e->_iterPrev) e->_iterPrev->_iterNext = e->_iterNext;
   if (e->_iterNext) e->_iterNext->_iterPrev = e->_iterPrev;
   e->_iterPrev = e->_iterNext = __null ; 
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::Put(const KeyType& key, const ValueType& value)
{
   return (PutAux(key, value, __null , __null ) != __null ) ? 0  : -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::Put(const KeyType& key, const ValueType& value, ValueType & setPreviousValue, bool * optReplacedFlag)
{
   return (PutAux(key, value, &setPreviousValue, optReplacedFlag) != __null ) ? 0  : -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
Hashtable<KeyType,ValueType,HashFunctorType>::HashtableEntry *
Hashtable<KeyType,ValueType,HashFunctorType>::PutAux(const KeyType& key, const ValueType& value, ValueType * optSetPreviousValue, bool * optReplacedFlag)
{
   if (optReplacedFlag) *optReplacedFlag = 0 ;

   if (_table == __null )   
   {
      _table = new (nothrow)  HashtableEntry[_tableSize];
      if (_table == __null ) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/util/Hashtable.h",1037) ; return __null ;}
   }

   uint32 hash = _functor(key);
   uint32 index = hash % _tableSize;

    
   HashtableEntry * e = GetEntry(key, __null );
   if (e)
   {
      if (optSetPreviousValue) *optSetPreviousValue = e->_value;
      if (optReplacedFlag)     *optReplacedFlag     = 1 ;
      e->_value = value;
      if ((_autoSortMode == AUTOSORT_BY_VALUE)&&(_userValueCompareFunc))
      {
          
         if ((e->_iterPrev)&&(_userValueCompareFunc(e->_value, e->_iterPrev->_value, _compareCookie) < 0))
         {
            const HashtableEntry * moveToBefore = e->_iterPrev;
            while((moveToBefore->_iterPrev)&&(_userValueCompareFunc(e->_value, moveToBefore->_iterPrev->_value, _compareCookie) < 0)) moveToBefore = moveToBefore->_iterPrev;
            (void) MoveToBefore(e->_key, moveToBefore->_key);
         }
         else if ((e->_iterNext)&&(_userValueCompareFunc(e->_value, e->_iterNext->_value, _compareCookie) > 0))
         {
            const HashtableEntry * moveToBehind = e->_iterNext;
            while((moveToBehind->_iterNext)&&(_userValueCompareFunc(e->_value, moveToBehind->_iterNext->_value, _compareCookie) > 0)) moveToBehind = moveToBehind->_iterNext;
            (void) MoveToBehind(e->_key, moveToBehind->_key);
         }
      }
      return e;
   }

    
   if (_count >= _threshold) return (GrowTable() == 0 ) ? PutAux(key, value, optSetPreviousValue, optReplacedFlag) : __null ;

   HashtableEntry * slot = &_table[index];
   if (slot->_valid)
   {
       
      HashtableEntry * newEntry = new (nothrow)  HashtableEntry();
      if (newEntry == __null ) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/util/Hashtable.h",1077) ; return __null ;}
      newEntry->_hash  = hash;
      newEntry->_key   = key;
      newEntry->_value = value;
      newEntry->_valid = 1 ;
      newEntry->_next  = slot->_next;
      slot->_next = newEntry;
      InsertSortedIterationEntry(newEntry, (_autoSortMode == AUTOSORT_BY_KEY) ? _userKeyCompareFunc : __null , (_autoSortMode == AUTOSORT_BY_VALUE) ? _userValueCompareFunc : __null , _compareCookie);
      e = newEntry;
   }
   else
   {
       
      slot->_hash  = hash;
      slot->_key   = key;
      slot->_value = value;  
      slot->_next  = __null ;
      slot->_valid = 1 ;
      e = slot;
      InsertSortedIterationEntry(slot, (_autoSortMode == AUTOSORT_BY_KEY) ? _userKeyCompareFunc : __null , (_autoSortMode == AUTOSORT_BY_VALUE) ? _userValueCompareFunc : __null , _compareCookie);
   }
   _count++;

   return e; 
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::Remove(const KeyType& key)
{
   return RemoveAux(key, __null );
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::Remove(const KeyType& key, ValueType & setValue)
{
   return RemoveAux(key, &setValue);
}


template <class KeyType, class ValueType, class HashFunctorType>
status_t
Hashtable<KeyType,ValueType,HashFunctorType>::RemoveAux(const KeyType& key, ValueType * optSetValue)
{
   HashtableEntry * prev;
   HashtableEntry * e = GetEntry(key, &prev);
   if (e)
   {
      if (optSetValue) *optSetValue = e->_value;
      HashtableEntry * next = e->_next;
      if (prev)
      {
         prev->_next = next;
         RemoveIterationEntry(e);
         delete e;
      }
      else
      {
         if (next) 
         {
             
            RemoveIterationEntry(e);

             
            {
               e->_iterPrev = next->_iterPrev;
               e->_iterNext = next->_iterNext;
               if (e->_iterPrev) e->_iterPrev->_iterNext = e;
               if (e->_iterNext) e->_iterNext->_iterPrev = e;
               if (_iterHead == next) _iterHead = e;
               if (_iterTail == next) _iterTail = e;
            }

             
            *e = *next;
            e->_valid = 1 ;

             
            HashtableIterator<KeyType, ValueType, HashFunctorType> * nextIter = _iterList;
            while(nextIter)
            {
               if (nextIter->_nextKeyCookie   == next) nextIter->_nextKeyCookie   = e;
               if (nextIter->_nextValueCookie == next) nextIter->_nextValueCookie = e;
               nextIter = nextIter->_nextIter;
            }

            delete next;
         }
         else 
         {
            RemoveIterationEntry(e);
            KeyType   blankKey = KeyType();
            ValueType blankVal = ValueType();
            e->Invalidate(blankKey, blankVal);
         }
      }
      _count--;
      return 0 ;
   }
   return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
void
Hashtable<KeyType,ValueType,HashFunctorType>::Clear()
{
   if (_count > 0)
   {
       
      while(_iterList)
      {
         HashtableIterator<KeyType,ValueType,HashFunctorType> * next = _iterList->_nextIter;
         *_iterList = HashtableIterator<KeyType,ValueType,HashFunctorType>();
         _iterList = next;
      }

       
      KeyType   blankKey   = KeyType();
      ValueType blankValue = ValueType();
      while(_iterHead)
      {
         HashtableEntry * next = _iterHead->_iterNext;   
         if ((_iterHead >= _table)&&(_iterHead < _table+_tableSize)) _iterHead->Invalidate(blankKey, blankValue);
                                                                else delete _iterHead;
         _iterHead = next;
      }
      _iterTail = __null ;
      _count = 0;
   }
}

template <class KeyType, class ValueType, class HashFunctorType>
uint32
Hashtable<KeyType,ValueType,HashFunctorType>::NextPrime(uint32 start) const
{
   if (start % 2 == 0) start++;
   uint32 i;
   for(; ; start += 2)
   {
      for(i = 3; i * i <= start; i += 2) if (start % i == 0) break;
      if (i * i > start) return start;
   }
}

 
 
 

template <class KeyType, class ValueType, class HashFunctorType>
HashtableIterator<KeyType, ValueType, HashFunctorType>::HashtableIterator() : _nextKeyCookie(__null ), _nextValueCookie(__null ), _owner(__null )
{
    
}

template <class KeyType, class ValueType, class HashFunctorType>
HashtableIterator<KeyType, ValueType, HashFunctorType>::HashtableIterator(const HashtableIterator<KeyType, ValueType, HashFunctorType> & rhs) : _owner(__null )
{
   *this = rhs;
}

template <class KeyType, class ValueType, class HashFunctorType>
HashtableIterator<KeyType, ValueType, HashFunctorType>::HashtableIterator(const Hashtable<KeyType, ValueType, HashFunctorType> & owner, void * startCookie, bool backwards) : _nextKeyCookie(startCookie), _nextValueCookie(startCookie), _backwards(backwards), _owner(&owner)
{
   _owner->RegisterIterator(this);
}

template <class KeyType, class ValueType, class HashFunctorType>
HashtableIterator<KeyType, ValueType, HashFunctorType>::~HashtableIterator()
{
   if (_owner) _owner->UnregisterIterator(this);
}

template <class KeyType, class ValueType, class HashFunctorType>
HashtableIterator<KeyType,ValueType,HashFunctorType> &
HashtableIterator<KeyType,ValueType,HashFunctorType>:: operator=(const HashtableIterator<KeyType,ValueType,HashFunctorType> & rhs)
{
   if (_owner != rhs._owner)
   {
      if (_owner) _owner->UnregisterIterator(this);
      _owner = rhs._owner;
      if (_owner) _owner->RegisterIterator(this);
   }
   _backwards       = rhs._backwards;
   _nextKeyCookie   = rhs._nextKeyCookie;
   _nextValueCookie = rhs._nextValueCookie;
   return *this;
}


template <class KeyType, class ValueType, class HashFunctorType>
bool
HashtableIterator<KeyType,ValueType,HashFunctorType>::HasMoreKeys() const
{
   return (_nextKeyCookie != __null );
}

template <class KeyType, class ValueType, class HashFunctorType>
bool
HashtableIterator<KeyType,ValueType,HashFunctorType>::HasMoreValues() const
{
   return (_nextValueCookie != __null );
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
HashtableIterator<KeyType,ValueType,HashFunctorType>::GetNextKey(KeyType& key) 
{
   const KeyType * ret = GetNextKey();
   if (ret) 
   {
      key = *ret;
      return 0 ;
   }
   else return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
HashtableIterator<KeyType,ValueType,HashFunctorType>::GetNextValue(ValueType& val)
{
   ValueType * ret = GetNextValue();
   if (ret)
   {
      val = *ret;
      return 0 ;
   } 
   else return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
HashtableIterator<KeyType,ValueType,HashFunctorType>::PeekNextKey(KeyType& key) const
{
   const KeyType * ret = PeekNextKey();
   if (ret)
   {
      key = *ret;
      return 0 ;
   }
   else return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
status_t
HashtableIterator<KeyType,ValueType,HashFunctorType>::PeekNextValue(ValueType& val) const
{
   ValueType * ret = PeekNextValue();
   if (ret)
   {
      val = *ret;
      return 0 ;
   }
   else return -1 ;
}

template <class KeyType, class ValueType, class HashFunctorType>
ValueType *
HashtableIterator<KeyType,ValueType,HashFunctorType>::GetNextValue()
{
   ValueType * val = PeekNextValue();
   if (val)
   {
      _owner->IterateCookie(&_nextValueCookie, _backwards);
      return val;
   }
   return __null ;
}

template <class KeyType, class ValueType, class HashFunctorType>
const KeyType *
HashtableIterator<KeyType,ValueType,HashFunctorType>::GetNextKey() 
{
   const KeyType * ret = PeekNextKey();
   if (ret)
   {
      _owner->IterateCookie(&_nextKeyCookie, _backwards);
      return ret;
   }
   return __null ;
}

template <class KeyType, class ValueType, class HashFunctorType>
ValueType *
HashtableIterator<KeyType,ValueType,HashFunctorType>::PeekNextValue() const
{
   return (_owner) ? _owner->GetValueFromCookie(_nextValueCookie) : __null ;
}

template <class KeyType, class ValueType, class HashFunctorType>
const KeyType *
HashtableIterator<KeyType,ValueType,HashFunctorType>::PeekNextKey() const
{
   return (_owner) ? _owner->GetKeyFromCookie(_nextKeyCookie) : __null ;
}

};   


# 23 "../src/muscle/message/Message.h" 2

# 1 "../src/muscle/util/ByteBuffer.h" 1
 





# 1 "../src/muscle/util/FlatCountable.h" 1
 







namespace muscle {

 




class FlatCountable : public RefCountable, public Flattenable
{
public:
    
   FlatCountable() { }

    
   virtual ~FlatCountable() { }
};

typedef Ref<FlatCountable> FlatCountableRef;

};   


# 7 "../src/muscle/util/ByteBuffer.h" 2


namespace muscle {

 
class ByteBuffer : public FlatCountable
{
public:
    







   ByteBuffer(uint32 numBytes = 0, const void * buffer = __null , bool copyBuffer = 1 ) : _buffer(__null ), _numBytes(0) {(void) SetBuffer(numBytes, buffer, copyBuffer);}
  
    


   ByteBuffer(const ByteBuffer & copyMe) : FlatCountable(), _buffer(__null ), _numBytes(0) {*this = copyMe;}
  
    
   virtual ~ByteBuffer() {Clear();}

    
   ByteBuffer &operator=(const ByteBuffer & rhs) {if (SetBuffer(rhs._numBytes, rhs._buffer) != 0 ) Clear(); return *this;}

    
   void * GetBuffer() const {return _buffer;}

    
   void * operator()() const {return _buffer;}

    
   uint32 GetNumBytes() const {return _numBytes;}

    
   int operator ==(const ByteBuffer &rhs) const {return (_numBytes == rhs._numBytes) ? (memcmp(_buffer, rhs._buffer, _numBytes) == 0) : 0 ;}

    
   int operator !=(const ByteBuffer &rhs) const {return !(*this == rhs);}

    







 
   status_t SetBuffer(uint32 numBytes = 0, const void * buffer = __null , bool copyBuffer = 1 ) 
   {
      Clear();
      if (copyBuffer) 
      {
         if (SetNumBytes(numBytes, 0 ) != 0 ) return -1 ;
         if ((buffer)&&(_buffer)) memcpy(_buffer, buffer, numBytes);
      }
      else 
      {
         _buffer   = (void *)buffer;
         _numBytes = numBytes;
      }
      return 0 ;
   }

    
   void Clear() {SetNumBytes(0, 0 );}

    





   status_t SetNumBytes(uint32 newNumBytes, bool retainData)
   {
      if (newNumBytes != _numBytes)
      {
         uint8 * newBuf = __null ;
         if (newNumBytes > 0)
         {
            newBuf = new (nothrow)  uint8[newNumBytes];
            if (newBuf == __null ) 
            {
               muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/util/ByteBuffer.h",95) ;
               return -1 ;
            }
         }
         if ((retainData)&&(newBuf)&&(_buffer)) memcpy(newBuf, _buffer, muscleMin(newNumBytes, _numBytes));
         delete [] ((uint8*)_buffer);
         _buffer   = newBuf;
         _numBytes = newNumBytes;
      }
      return 0 ;
   }

    



   void ReleaseBuffer() {_buffer = __null ; _numBytes = 0;}

    
   virtual bool IsFixedSize() const {return 0 ;}
   virtual type_code TypeCode() const {return B_RAW_TYPE;}
   virtual uint32 FlattenedSize() const {return _numBytes;}
   virtual void Flatten(uint8 *buffer) const {memcpy(buffer, _buffer, _numBytes);}
   virtual bool AllowsTypeCode(type_code) const {return 1 ;}
   virtual status_t Unflatten(const uint8 *buf, uint32 size) {return SetBuffer(size, buf);}

protected:
    
   virtual status_t CopyToImplementation(Flattenable & copyTo) const {return copyTo.Unflatten((const uint8 *)_buffer, _numBytes);}
   
    
   virtual status_t CopyFromImplementation(const Flattenable & copyFrom)
   {
      uint32 numBytes = copyFrom.FlattenedSize();
      if (SetNumBytes(numBytes, 0 ) != 0 ) return -1 ;
      copyFrom.Flatten((uint8*)_buffer);
      return 0 ;
   }

private:
   void * _buffer;
   uint32 _numBytes;
};

typedef Ref<ByteBuffer> ByteBufferRef;

};   


# 24 "../src/muscle/message/Message.h" 2


namespace muscle {

class Message;
typedef Ref<Message> MessageRef;

 



const Message & GetEmptyMessage();

 



MessageRef::ItemPool * GetMessagePool();

 



MessageRef GetMessageFromPool(uint32 what = 0L);

 



MessageRef GetMessageFromPool(const Message & copyMe);

 



ByteBufferRef::ItemPool * GetByteBufferPool();

 








ByteBufferRef GetByteBufferFromPool(uint32 numBytes = 0, const void * buffer = __null , bool copyBuffer = 1 );

 



ByteBufferRef GetByteBufferFromPool(const ByteBuffer & copyMe);

 
class AbstractDataArray;
typedef Ref<AbstractDataArray> AbstractDataArrayRef;

 


class MessageFieldNameIterator : private HashtableIterator<String, AbstractDataArrayRef>
{
public:
    


   MessageFieldNameIterator();

    
   ~MessageFieldNameIterator();

    
   bool HasMoreFieldNames() const;

    




   status_t GetNextFieldName(String & name);

    




   const char * GetNextFieldName() {const String * r = GetNextFieldNameString(); return r ? r->Cstr() : __null ;}

    



   const String * GetNextFieldNameString();

    




   status_t PeekNextFieldName(String & name) const;

    




   const char * PeekNextFieldName() const {const String * r = PeekNextFieldNameString(); return r ? r->Cstr() : __null ;}

    



   const String * PeekNextFieldNameString() const;

private:
   friend class Message;
   MessageFieldNameIterator(const HashtableIterator<String, AbstractDataArrayRef> & iter, type_code tc);

   type_code _typeCode;
};

 
 
 
 



 






class Message : public FlatCountable
{
public:
    
   uint32 what;

    
   Message();

    


   Message(uint32 what);

    
   Message(const Message & copyMe);

    
   virtual ~Message();

    
   Message &operator=(const Message &msg);

    



   bool operator ==(const Message & rhs) const;

    
   bool operator !=(const Message & rhs) const {return !(*this == rhs);}

    






   status_t GetInfo(const String & name, type_code *type, uint32 *c = __null , bool *fixed_size = __null ) const;

    



   uint32 CountNames(type_code type = B_ANY_TYPE) const;

    
   bool IsEmpty() const;

    



   void PrintToStream(bool recursive = 0 , int indentLevel = 0) const;

    





   status_t Rename(const String & old_entry, const String & new_entry);

    
   virtual bool IsFixedSize() const {return 0 ;}

    
   virtual type_code TypeCode() const {return B_MESSAGE_TYPE;}

    
   virtual uint32 FlattenedSize() const;
 
    




   virtual void Flatten(uint8 *buffer) const;

    







   virtual status_t Unflatten(const uint8 *buf, uint32 size);

    




   status_t AddString(const String & name, const String & val);

    




   status_t AddInt8(const String & name, int8 val);

    




   status_t AddInt16(const String & name, int16 val);

    




   status_t AddInt32(const String & name, int32 val);

    




   status_t AddInt64(const String & name, int64 val);

    




   status_t AddBool(const String & name, bool val);

    




   status_t AddFloat(const String & name, float val);

    




   status_t AddDouble(const String & name, double val);

    







   status_t AddMessage(const String & name, const Message & msg) {return AddMessage(name, GetMessageFromPool(msg));}

    







   status_t AddMessage(const String & name, MessageRef msgRef); 

    




   status_t AddPointer(const String & name, const void * ptr);

    




   status_t AddPoint(const String & name, const Point & point);

    




   status_t AddRect(const String & name, const Rect & rect);

    





   status_t AddFlat(const String & name, const Flattenable &obj);

    




   status_t AddFlat(const String & name, FlatCountableRef ref);

    







   status_t AddTag(const String & name, GenericRef tagRef);

    















   status_t AddData(const String & name, type_code type, const void *data, uint32 numBytes) {return AddDataAux(name, data, numBytes, type, 0 );}

    




   status_t PrependString(const String & name, const String & val);

    




   status_t PrependInt8(const String & name, int8 val);

    




   status_t PrependInt16(const String & name, int16 val);

    




   status_t PrependInt32(const String & name, int32 val);

    




   status_t PrependInt64(const String & name, int64 val);

    




   status_t PrependBool(const String & name, bool val);

    




   status_t PrependFloat(const String & name, float val);

    




   status_t PrependDouble(const String & name, double val);

    







   status_t PrependMessage(const String & name, const Message & msg) {return PrependMessage(name, GetMessageFromPool(msg));}

    







   status_t PrependMessage(const String & name, MessageRef msgRef); 

    




   status_t PrependPointer(const String & name, const void * ptr);

    




   status_t PrependPoint(const String & name, const Point & point);

    




   status_t PrependRect(const String & name, const Rect & rect);

    






   status_t PrependFlat(const String & name, const Flattenable &obj);

    




   status_t PrependFlat(const String & name, FlatCountableRef ref);

    







   status_t PrependTag(const String & name, GenericRef tagRef);

    















   status_t PrependData(const String & name, type_code type, const void *data, uint32 numBytes) {return AddDataAux(name, data, numBytes, type, 1 );}

    





   status_t RemoveData(const String & name, uint32 index = 0);

    



   status_t RemoveName(const String & name);

    
   void Clear();

    





   status_t FindString(const String & name, uint32 index, const char ** setMe) const;

    
   status_t FindString(const String & name, const char ** setMe) const {return FindString(name, 0, setMe);}

    





   status_t FindString(const String & name, uint32 index, String & setMe) const;

    
   status_t FindString(const String & name, String & setMe) const {return FindString(name, 0, setMe);}

    





   status_t FindInt8(const String & name, uint32 index, int8 *val) const {return FindDataItemAux(name, index, B_INT8_TYPE, val, sizeof(int8));}

    
   status_t FindInt8(const String & name, int8 *value) const {return FindInt8(name, 0, value);}

    





   status_t FindInt16(const String & name, uint32 index, int16 *val) const {return FindDataItemAux(name, index, B_INT16_TYPE, val, sizeof(int16));} 

    
   status_t FindInt16(const String & name, int16 *value) const {return FindInt16(name, 0, value);}

    





   status_t FindInt32(const String & name, uint32 index, int32 *val) const {return FindDataItemAux(name, index, B_INT32_TYPE, val, sizeof(int32));} 

    
   status_t FindInt32(const String & name, int32 *value) const {return FindInt32(name, 0, value);}

    





   status_t FindInt64(const String & name, uint32 index, int64 *val) const {return FindDataItemAux(name, index, B_INT64_TYPE, val, sizeof(int64));}  

    
   status_t FindInt64(const String & name, int64 *value) const {return FindInt64(name, 0, value);}

    





   status_t FindBool(const String & name, uint32 index, bool *val) const {return FindDataItemAux(name, index, B_BOOL_TYPE, val, sizeof(bool));} 

    
   status_t FindBool(const String & name, bool *value) const {return FindBool(name, 0, value);}

    





   status_t FindFloat(const String & name, uint32 index, float *val) const {return FindDataItemAux(name, index, B_FLOAT_TYPE, val, sizeof(float));}

    
   status_t FindFloat(const String & name, float *f) const {return FindFloat(name, 0, f);}

    





   status_t FindDouble(const String & name, uint32 index, double * val) const {return FindDataItemAux(name, index, B_DOUBLE_TYPE, val, sizeof(double));}

    
   status_t FindDouble(const String & name, double *d) const {return FindDouble(name, 0, d);}

    







   status_t FindMessage(const String & name, uint32 index, Message &msg) const;

    
   status_t FindMessage(const String & name, Message &msg) const {return FindMessage(name, 0, msg);}

    







   status_t FindMessage(const String & name, uint32 index, MessageRef &msgRef) const;

    
   status_t FindMessage(const String & name, MessageRef &msgRef) const {return FindMessage(name, 0, msgRef);}

    





   status_t FindPointer(const String & name, uint32 index, void ** val) const {return FindDataItemAux(name, index, B_POINTER_TYPE, val, sizeof(void *));}

    
   status_t FindPointer(const String & name, void ** ptr) const {return FindPointer(name, 0, ptr);}

    





   status_t FindPoint(const String & name, uint32 index, Point & point) const;

    
   status_t FindPoint(const String & name, Point & point) const {return FindPoint(name, 0, point);}

    





   status_t FindRect(const String & name, uint32 index, Rect & rect) const;

    
   status_t FindRect(const String & name, Rect & rect) const {return FindRect(name, 0, rect);}

    





   status_t FindFlat(const String & name, uint32 index, Flattenable &obj) const;

    
   status_t FindFlat(const String & name, Flattenable &obj) const {return FindFlat(name, 0, obj);}

    





   status_t FindFlat(const String & name, uint32 index, FlatCountableRef & ref) const;

    
   status_t FindFlat(const String & name, FlatCountableRef &ref) const {return FindFlat(name, 0, ref);}

    





   status_t FindTag(const String & name, uint32 index, GenericRef & tagRef) const;

    
   status_t FindTag(const String & name, GenericRef &tagRef) const {return FindTag(name, 0, tagRef);}

    









   status_t FindData(const String & name, type_code type, uint32 index, const void **data, uint32 *numBytes) const;

    
   status_t FindData(const String & name, type_code type, const void **data, uint32 *numBytes) const {return FindData(name, type, 0, data, numBytes);}

    




   status_t FindDataPointer(const String & name, type_code type, uint32 index, void **data, uint32 *numBytes) const;

    
   status_t FindDataPointer(const String & name, type_code type, void **data, uint32 *numBytes) const {return FindDataPointer(name, type, 0, data, numBytes);}

    






   status_t ReplaceString(bool okayToAdd, const String & name, uint32 index, const String & newString);

    
   status_t ReplaceString(bool okayToAdd, const String & name, const String & newString) {return ReplaceString(okayToAdd, name, 0, newString);}

    






   status_t ReplaceInt8(bool okayToAdd, const String & name, uint32 index, int8 val);

    
   status_t ReplaceInt8(bool okayToAdd, const String & name, int8 val) {return ReplaceInt8(okayToAdd, name, 0, val);}

    






   status_t ReplaceInt16(bool okayToAdd, const String & name, uint32 index, int16 val);

    
   status_t ReplaceInt16(bool okayToAdd, const String & name, int16 val) {return ReplaceInt16(okayToAdd, name, 0, val);}

    






   status_t ReplaceInt32(bool okayToAdd, const String & name, uint32 index, int32 val);

    
   status_t ReplaceInt32(bool okayToAdd, const String & name, int32 val) {return ReplaceInt32(okayToAdd, name, 0, val);}

    






   status_t ReplaceInt64(bool okayToAdd, const String & name, uint32 index, int64 val);

    
   status_t ReplaceInt64(bool okayToAdd, const String & name, int64 val) {return ReplaceInt64(okayToAdd, name, 0, val);}

    






   status_t ReplaceBool(bool okayToAdd, const String & name, uint32 index, bool val);

    
   status_t ReplaceBool(bool okayToAdd, const String & name, bool val) {return ReplaceBool(okayToAdd, name, 0, val);}

    






   status_t ReplaceFloat(bool okayToAdd, const String & name, uint32 index, float val);

    
   status_t ReplaceFloat(bool okayToAdd, const String & name, float val) {return ReplaceFloat(okayToAdd, name, 0, val);}

    






   status_t ReplaceDouble(bool okayToAdd, const String & name, uint32 index, double val);

    
   status_t ReplaceDouble(bool okayToAdd, const String & name, double val) {return ReplaceDouble(okayToAdd, name, 0, val);}

    






   status_t ReplacePointer(bool okayToAdd, const String & name, uint32 index, const void * ptr);

    
   status_t ReplacePointer(bool okayToAdd, const String & name, const void * ptr) {return ReplacePointer(okayToAdd, name, 0, ptr);}

    






   status_t ReplacePoint(bool okayToAdd, const String & name, uint32 index, const Point & point);

    
   status_t ReplacePoint(bool okayToAdd, const String & name, const Point & point) {return ReplacePoint(okayToAdd, name, 0, point);}

    






   status_t ReplaceRect(bool okayToAdd, const String & name, uint32 index, const Rect & rect);

    
   status_t ReplaceRect(bool okayToAdd, const String & name, const Rect & rect) {return ReplaceRect(okayToAdd, name, 0, rect);}

    






   status_t ReplaceMessage(bool okayToAdd, const String & name, uint32 index, const Message &msg) {return ReplaceMessage(okayToAdd, name, index, GetMessageFromPool(msg));}

    
   status_t ReplaceMessage(bool okayToAdd, const String & name, const Message &msg) {return ReplaceMessage(okayToAdd, name, 0, msg);}

    






   status_t ReplaceMessage(bool okayToAdd, const String & name, uint32 index, MessageRef msgRef);

    
   status_t ReplaceMessage(bool okayToAdd, const String & name, MessageRef msgRef) {return ReplaceMessage(okayToAdd, name, 0, msgRef);}

    






   status_t ReplaceFlat(bool okayToAdd, const String & name, uint32 index, const Flattenable &obj);

    
   status_t ReplaceFlat(bool okayToAdd, const String & name, const Flattenable &obj) {return ReplaceFlat(okayToAdd, name, 0, obj);}

    






   status_t ReplaceFlat(bool okayToAdd, const String & name, uint32 index, FlatCountableRef ref);

    
   status_t ReplaceFlat(bool okayToAdd, const String & name, FlatCountableRef &ref) {return ReplaceFlat(okayToAdd, name, 0, ref);}

    






   status_t ReplaceTag(bool okayToAdd, const String & name, uint32 index, GenericRef tag);

    
   status_t ReplaceTag(bool okayToAdd, const String & name, GenericRef tag) {return ReplaceTag(okayToAdd, name, 0, tag);}

    











   status_t ReplaceData(bool okayToAdd, const String & name, type_code type, uint32 index, const void *data, uint32 numBytes);

    
   status_t ReplaceData(bool okayToAdd, const String & name, type_code type, const void *data, uint32 numBytes) {return ReplaceData(okayToAdd, name, type, 0, data, numBytes);}

    




   bool HasName(const String & fieldName, type_code type = B_ANY_TYPE) const {return (GetArray(fieldName, type) != __null );}

    





   uint32 GetNumValuesInName(const String & fieldName, type_code type = B_ANY_TYPE) const;

    





   status_t MoveName(const String & name, Message &moveTo);

    






   status_t CopyName(const String & name, Message &copyTo) const;

    






   MessageFieldNameIterator GetFieldNameIterator(type_code type = B_ANY_TYPE) const {return MessageFieldNameIterator(_entries.GetIterator(), type);}

protected:
    
   virtual status_t CopyToImplementation(Flattenable & copyTo) const;

    
   virtual status_t CopyFromImplementation(const Flattenable & copyFrom);

private:
    
   status_t AddDataAux(const String &name, type_code type, const void *data, uint32 numBytes, bool prepend);

    
    
   uint32 GetElementSize(type_code type) const;

   AbstractDataArray * GetArray(const String & arrayName, type_code etc) const;
   AbstractDataArrayRef GetArrayRef(const String & arrayName, type_code etc) const;
   AbstractDataArray * GetOrCreateArray(const String & arrayName, type_code tc);

   status_t AddFlatBuffer(const String & name, const Flattenable & flat, type_code etc, bool prepend);
   status_t AddFlatRef(const String & name, FlatCountableRef flat, type_code etc, bool prepend);
   status_t AddDataAux(const String & name, const void * data, uint32 size, type_code etc, bool prepend);

   status_t FindFlatAux(const String & name, uint32 index, Flattenable & flat) const;
   status_t FindDataItemAux(const String & name, uint32 index, type_code tc, void * setValue, uint32 valueSize) const;

   status_t ReplaceFlatItemBuffer(bool okayToAdd, const String & name, uint32 index, const Flattenable & flat, type_code tc);
   status_t ReplaceDataAux(bool okayToAdd, const String & name, uint32 index, void * dataBuf, uint32 bufSize, type_code tc);
 
   bool FieldsAreSubsetOf(const Message & rhs, bool compareData) const;

    
   friend class MessageFieldNameIterator;
   Hashtable<String, AbstractDataArrayRef> _entries;   
};

};   



# 11 "../src/muscle/iogateway/AbstractMessageIOGateway.h" 2



# 1 "../src/muscle/util/NetworkUtilityFunctions.h" 1
 











namespace muscle {

 
const uint32 localhostIP = ((((uint32)127)<<24)|((uint32)1));

 
 
 






 





uint32 GetHostByName(const char * name);

 






int Connect(const char * hostName, uint16 port, const char * debugTitle = __null , bool debugOutputOnErrorsOnly = 1 );

 








int Connect(uint32 hostIP, uint16 port, const char * debugHostName = __null , const char * debugTitle = __null , bool debugOutputOnErrorsOnly = 1 );

 




int Accept(int socket);

 













int ConnectAsync(uint32 hostIP, uint16 port, bool & retIsReady);

 






status_t FinalizeAsyncConnect(int socket);

 


void CloseSocket(int socket);

 







int CreateAcceptingSocket(uint16 port, int maxbacklog = 20, uint16 * optRetPort = __null , uint32 optFrom = 0); 

 



String Inet_NtoA(uint32 address);

 




uint32 Inet_AtoN(const char * buf);

 



uint32 GetPeerIPAddress(int socket);

 











status_t BecomeDaemonProcess(const char * optNewDir = __null , const char * optOutputTo = "/dev/null", bool createOutputFileIfNecessary = 0 );

 








 
status_t SpawnDaemonProcess(bool & returningAsParent, const char * optNewDir = __null , const char * optOutputTo = "/dev/null", bool createOutputFileIfNecessary = 0 );

 








status_t CreateConnectedSocketPair(int & retSocket1, int & retSocket2, bool blocking = 0 );

 





status_t SetSocketBlockingEnabled(int socket, bool enabled);

 



status_t Snooze64(uint64 microseconds);

 




void SetLocalHostIPOverride(uint32 ip);

 



uint32 GetLocalHostIPOverride();

};   



# 14 "../src/muscle/iogateway/AbstractMessageIOGateway.h" 2

# 1 "../src/muscle/util/PulseNode.h" 1
 







namespace muscle {

class PulseNode;
class PulseNodeManager;

 
class PulseNode
{
public:
    
   PulseNode();

    
   virtual ~PulseNode();

    


















   virtual uint64 GetPulseTime(uint64 now, uint64 prevResult);

    













   virtual void Pulse(uint64 now, uint64 scheduledTime);

    





   virtual void Tick(uint64 now);

    






   status_t PutPulseChild(PulseNode * child);

    



   status_t RemovePulseChild(PulseNode * child);

    
   void ClearPulseChildren();

    


   bool ContainsPulseChild(PulseNode * child) const {return _children.ContainsKey(child);}

    
   HashtableIterator<PulseNode *, bool> GetPulseChildrenIterator() const {return _children.GetIterator();}

protected:
    








   void InvalidatePulseTime(bool clearPrevResult = 1 ); 

private:
    
   void GetPulseTimeAux(uint64 now, uint64 & managerPulseTime);

    
   void PulseAux(uint64 now);

    
   void InvalidateGroupPulseTime();

   PulseNode * _parent;

   bool _nextPulseAtValid;
   uint64 _nextPulseAt;      

   bool _localPulseAtValid;
   uint64 _localPulseAt;     

   Hashtable<PulseNode *, bool> _children;

   friend class PulseNodeManager;
};

 



class PulseNodeManager
{
public:
    
   PulseNodeManager() { }

    
   ~PulseNodeManager() { }

protected:
    
   inline void CallGetPulseTimeAux(PulseNode & p, uint64 now, uint64 & spt) {p.GetPulseTimeAux(now, spt);}

    
   inline void CallPulseAux(PulseNode & p, uint64 now) {p.PulseAux(now);}
};

};   


# 15 "../src/muscle/iogateway/AbstractMessageIOGateway.h" 2


namespace muscle {

 



class AbstractMessageIOGateway : public RefCountable, public PulseNode
{
public:
    
   AbstractMessageIOGateway();

    
   virtual ~AbstractMessageIOGateway();

    




   status_t AddOutgoingMessage(const MessageRef & messageRef);

    




   status_t GetNextIncomingMessage(MessageRef & setRef);

    







   virtual int32 DoOutput(uint32 maxBytes = ((uint32)-1) ) = 0;

    










   virtual int32 DoInput(uint32 maxBytes = ((uint32)-1) ) = 0;

    





   virtual bool IsReadyForInput() const;

    





   virtual bool HasBytesToOutput() const = 0;

    





   virtual uint64 GetOutputStallLimit() const;

    


   virtual void Shutdown();

    



   bool HasIncomingMessagesReady() const;

    






   void SetFlushOnEmpty(bool flush);

    
   bool GetFlushOnEmpty() const {return _flushOnEmpty;}

    
   Queue<MessageRef> & GetOutgoingMessageQueue() {return _outgoingMessages;}

    
   Queue<MessageRef> & GetIncomingMessageQueue() {return _incomingMessages;}

    
   const Queue<MessageRef> & GetOutgoingMessageQueue() const {return _outgoingMessages;}

    
   const Queue<MessageRef> & GetIncomingMessageQueue() const {return _incomingMessages;}

    


   void SetDataIO(DataIORef ref) {_ioRef = ref;}

protected:
    











   status_t EnsureBufferSize(uint8 ** bufPtr, uint32 * bufSize, uint32 desiredSize, uint32 copySize);

    
   DataIO * GetDataIO() const {return _ioRef();}

    
   DataIORef GetDataIORef() const {return _ioRef;}

    
   bool IsHosed() const {return _hosed;}

    
   void SetHosed() {_hosed = 1 ;}
  
private:
   Queue<MessageRef> _outgoingMessages;
   Queue<MessageRef> _incomingMessages;

   DataIORef _ioRef;

   bool _hosed;   
   bool _flushOnEmpty;

   friend class ReflectServer;
};

typedef Ref<AbstractMessageIOGateway> AbstractMessageIOGatewayRef;

};   


# 7 "../src/muscle/iogateway/AbstractMessageIOGateway.cpp" 2


namespace muscle {

AbstractMessageIOGateway :: AbstractMessageIOGateway() : _hosed(0 ), _flushOnEmpty(1 )
{
    
}

AbstractMessageIOGateway :: ~AbstractMessageIOGateway() 
{
    
}

 
 
 
status_t 
AbstractMessageIOGateway ::
AddOutgoingMessage(const MessageRef & messageRef)
{
   return _hosed ? -1  : _outgoingMessages.AddTail(messageRef);
}


 
 
 
status_t 
AbstractMessageIOGateway ::
GetNextIncomingMessage(MessageRef & setRef)
{
   return _incomingMessages.RemoveHead(setRef);
}

bool 
AbstractMessageIOGateway ::
HasIncomingMessagesReady() const
{
   return (_incomingMessages.GetNumItems() > 0);
}

 
status_t
AbstractMessageIOGateway ::
EnsureBufferSize(uint8 ** bufPtr, uint32 * bufSize, uint32 desiredSize, uint32 copySize)
{
   uint8 * oldBuffer = *bufPtr;
   uint32 oldBufSize = *bufSize;

   if ((oldBuffer == __null )||(oldBufSize < desiredSize))
   {
      uint8 * newBuffer = new (nothrow)  uint8[desiredSize];
      if (newBuffer == __null ) {muscle::LogTime(muscle::MUSCLE_LOG_CRITICALERROR, "ERROR--OUT OF MEMORY!  (%s:%i)\n","../src/muscle/iogateway/AbstractMessageIOGateway.cpp",60) ; return -1 ;}

      *bufPtr  = newBuffer;
      *bufSize = desiredSize;

      if (copySize > 0) memcpy(newBuffer, oldBuffer, copySize);
      delete [] oldBuffer;
   }
   return 0 ;
}

void
AbstractMessageIOGateway ::
SetFlushOnEmpty(bool f)
{
   _flushOnEmpty = f;
}

bool
AbstractMessageIOGateway ::
IsReadyForInput() const
{
   return 1 ;
}

uint64
AbstractMessageIOGateway ::
GetOutputStallLimit() const
{
   return _ioRef() ? _ioRef()->GetOutputStallLimit() : ((uint64)-1) ;
}

void
AbstractMessageIOGateway ::
Shutdown()
{
   if (_ioRef()) _ioRef()->Shutdown();
}

};   


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]