Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

270 lines
5.4 KiB

  1. //******************************************************************************
  2. // File: \wacker\tdll\Keymacro.cpp Created: 6/2/98 By: Dwayne M. Newsome
  3. //
  4. // Copyright 1998 by Hilgraeve Inc. --- Monroe, MI
  5. // All rights reserved
  6. //
  7. // Description:
  8. // This file represents a key macro. It is a representation of a remapped key
  9. // and the key strokes it represents.
  10. //
  11. // $Revision: 1 $
  12. // $Date: 10/05/98 12:34p $
  13. // $Id: keymacro.cpp 1.4 1998/09/10 17:02:45 bld Exp $
  14. //
  15. //******************************************************************************
  16. #include <windows.h>
  17. #pragma hdrstop
  18. #include "stdtyp.h"
  19. extern "C"
  20. {
  21. #include "mc.h"
  22. }
  23. #ifdef INCL_KEY_MACROS
  24. #include "keymacro.h"
  25. INC_NV_COMPARE_IMPLEMENTATION( Emu_Key_Macro );
  26. //******************************************************************************
  27. // Method:
  28. // operator>>
  29. //
  30. // Description:
  31. // Iostream extractor
  32. //
  33. // Arguments:
  34. // theStream - The stream to extract from
  35. // aMacro - The macro to stream into
  36. //
  37. // Returns:
  38. // istream &
  39. //
  40. // Throws:
  41. // None
  42. //
  43. // Author: Dwayne M. Newsome, 6/2/98
  44. //
  45. //
  46. istream & operator>>( istream & theStream, Emu_Key_Macro & aMacro )
  47. {
  48. aMacro.mKey = 0;
  49. aMacro.mMacroLen = 0;
  50. theStream >> aMacro.mKey >> aMacro.mMacroLen;
  51. for ( int i = 0; i < aMacro.mMacroLen; i++ )
  52. {
  53. theStream >> aMacro.mKeyMacro[i];
  54. }
  55. return theStream;
  56. }
  57. //******************************************************************************
  58. // Method:
  59. // operator<<
  60. //
  61. // Description:
  62. // Iostream inserter
  63. //
  64. // Arguments:
  65. // theStream - The stream to insert into
  66. // aMacro - The macro to stream out
  67. //
  68. // Returns:
  69. // istream &
  70. //
  71. // Throws:
  72. // None
  73. //
  74. // Author: Dwayne M. Newsome, 6/2/98
  75. //
  76. //
  77. ostream & operator<<( ostream & theStream, const Emu_Key_Macro & aMacro )
  78. {
  79. theStream << aMacro.mKey << " " << aMacro.mMacroLen << " ";
  80. for ( int i = 0; i < aMacro.mMacroLen; i++ )
  81. {
  82. theStream << aMacro.mKeyMacro[i] << " ";
  83. }
  84. return theStream;
  85. }
  86. //******************************************************************************
  87. // Method:
  88. // Emu_Key_Macro
  89. //
  90. // Description:
  91. // Constructor
  92. //
  93. // Arguments:
  94. // void
  95. //
  96. // Returns:
  97. // void
  98. //
  99. // Throws:
  100. // None
  101. //
  102. // Author: Dwayne M. Newsome, 6/2/98
  103. //
  104. //
  105. Emu_Key_Macro :: Emu_Key_Macro( void )
  106. : mKey( 0 ),
  107. mMacroLen( 0 )
  108. {
  109. return;
  110. }
  111. //******************************************************************************
  112. // Method:
  113. // Emu_Key_Macro
  114. //
  115. // Description:
  116. // Copy Constructor
  117. //
  118. // Arguments:
  119. // aMacro - The macro to copy from
  120. //
  121. // Returns:
  122. // void
  123. //
  124. // Throws:
  125. // None
  126. //
  127. // Author: Dwayne M. Newsome, 6/2/98
  128. //
  129. //
  130. Emu_Key_Macro :: Emu_Key_Macro( const Emu_Key_Macro & aMacro )
  131. : mKey( aMacro.mKey ),
  132. mMacroLen( aMacro.mMacroLen )
  133. {
  134. if (mMacroLen)
  135. MemCopy( mKeyMacro, aMacro.mKeyMacro, mMacroLen * sizeof(KEYDEF) );
  136. return;
  137. }
  138. //******************************************************************************
  139. // Method:
  140. // ~Emu_Key_Macro
  141. //
  142. // Description:
  143. // Destructor
  144. //
  145. // Arguments:
  146. // void
  147. //
  148. // Returns:
  149. // void
  150. //
  151. // Throws:
  152. // None
  153. //
  154. // Author: Dwayne M. Newsome, 6/2/98
  155. //
  156. //
  157. Emu_Key_Macro :: ~Emu_Key_Macro( void )
  158. {
  159. return;
  160. }
  161. //******************************************************************************
  162. // Method:
  163. // operator=
  164. //
  165. // Description:
  166. // Assignment operator
  167. //
  168. // Arguments:
  169. // aMacro - The key macro to assign from
  170. //
  171. // Returns:
  172. // Emu_Key_Macro &
  173. //
  174. // Throws:
  175. // None
  176. //
  177. // Author: Dwayne M. Newsome, 6/2/98
  178. //
  179. //
  180. Emu_Key_Macro & Emu_Key_Macro :: operator=( const Emu_Key_Macro & aMacro )
  181. {
  182. mKey = aMacro.mKey;
  183. mMacroLen = aMacro.mMacroLen;
  184. if (mMacroLen)
  185. MemCopy( mKeyMacro, aMacro.mKeyMacro, mMacroLen * sizeof(KEYDEF) );
  186. return *this;
  187. }
  188. //******************************************************************************
  189. // Method:
  190. // operator=
  191. //
  192. // Description:
  193. // Assignment operator
  194. //
  195. // Arguments:
  196. // aMacro - The key macro structure to assign from
  197. //
  198. // Returns:
  199. // Emu_Key_Macro &
  200. //
  201. // Throws:
  202. // None
  203. //
  204. // Author: Dwayne M. Newsome, 6/2/98
  205. //
  206. //
  207. Emu_Key_Macro & Emu_Key_Macro :: operator=( const keyMacro * aMacro )
  208. {
  209. mKey = aMacro->keyName;
  210. mMacroLen = aMacro->macroLen;
  211. if (mMacroLen)
  212. MemCopy( mKeyMacro, aMacro->keyMacro, mMacroLen * sizeof(KEYDEF) );
  213. return *this;
  214. }
  215. //******************************************************************************
  216. // Method:
  217. // compare
  218. //
  219. // Description:
  220. // Compares macro for equality returns 0 if equal < 0 if this is less
  221. // than or > 0 if this is greater than. Note the equality is determined by
  222. // the actual key that is defined and not by its definition.
  223. //
  224. // Arguments:
  225. // aMacro - macro to compare against
  226. //
  227. // Returns:
  228. // 0 = equal, < 0 this less than aMacro, > 0 this greater than aMacro
  229. //
  230. // Throws:
  231. // None
  232. //
  233. // Author: Dwayne M. Newsome, 6/2/98
  234. //
  235. //
  236. int Emu_Key_Macro :: compare( const Emu_Key_Macro & aMacro ) const
  237. {
  238. return mKey - aMacro.mKey;
  239. }
  240. #endif