#pragma once #include "IWzASM.h" //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // typedef BYTE* BYTE_ARRAY_T; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // template class WzCMDBLK { private: typedef STLX_VECTOR CMD_STREAM; typedef CMD_STREAM::iterator CMD_STREAM_IT; public: WzCMDBLK() {} ~WzCMDBLK() {} public: VOID SetDefaultBlk( BYTE* IN pCmdBlk, WORD IN wSize ) { m_CMD.clear(); m_CMD.assign( (&pCmdBlk[0]), (&pCmdBlk[wSize]) ); //copy( (&pCmdBlk[0]), (&pCmdBlk[wSize]), m_CMD.begin() ); } // °íÁ¤Çü, Á¤ÇØÁø À妽º¿¡ Á¤ÇØÁø Å©±â¸¦ ġȯ½ÃŲ´Ù. VOID Replace( BYTE* IN pReplace ) { BYTE* pDEST = &m_CMD[_RESIDX]; CopyMemory( pDEST, pReplace, _SZ ); } // Á¤ÇØÁø INDEX¿Í SZ¸¦ ¹«½ÃÇϰí ġȯ // ÁÖÀÇÇØ¼­ »ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù. VOID Replace( BYTE* IN pCmdBlk, WORD IN wSize, WORD IN wIdx ) { BYTE* pDEST = &m_CMD[wIdx]; CopyMemory( pDEST, pReplace, wSize ); } VOID Insert( BYTE* IN pCmdBlk, WORD IN wSize, WORD IN wIdx ) { CMD_STREAM_IT it = m_CMD.begin(); m_CMD.insert( it+wIdx, (&pCmdBlk[0]), (&pCmdBlk[wSize]) ); //CMD_STREAM tmp; //tmp.assign( wSize, 0 ); //copy( (&pCmdBlk[0]), (&pCmdBlk[wSize]), tmp.begin() ); //CMD_STREAM_IT it = m_CMD.begin(); ////m_CMD.swap(); //m_CMD.insert( it+wIdx, tmp.begin(), tmp.end() ); } BOOL Output( BYTE* OUT pCmdBlk, WORD IN wSize ) { SIZE_T iSize = m_CMD.size(); if( !pCmdBlk || (wSize < (WORD)iSize) ) return FALSE; copy( m_CMD.begin(), m_CMD.end(), pCmdBlk ); return TRUE; } private: CMD_STREAM m_CMD; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // struct sUREG_NODE { uREG_NODE NODE; sUREG_NODE() { NODE.EXA[sARG::ARG0].PTR = NULL; NODE.EXA[sARG::ARG1].PTR = NULL; NODE.EXA[sARG::ARG2].PTR = NULL; NODE.EXA[sARG::ARG3].PTR = NULL; }; //template //template //template sUREG_NODE( WzASM_EIP* _ARG0 ) { NODE.EXA[sARG::ARG0].PTR = (WzPTR)_ARG0; NODE.EXA[sARG::ARG1].PTR = NULL; NODE.EXA[sARG::ARG2].PTR = NULL; NODE.EXA[sARG::ARG3].PTR = NULL; } sUREG_NODE( WzASM_EIP* _ARG0, BYTE* _ARG1, WORD _ARG2, DWORD _ARG3 ) { NODE.EXA[sARG::ARG0].PTR = (WzPTR)_ARG0; NODE.EXA[sARG::ARG1].PTRB = _ARG1; NODE.EXA[sARG::ARG2].X = _ARG2; NODE.EXA[sARG::ARG3].EX = _ARG3; } sUREG_NODE( WzASM_EIP* _ARG0, BYTE* _ARG1, WORD _ARG2 ) { NODE.EXA[sARG::ARG0].PTR = (WzPTR)_ARG0; NODE.EXA[sARG::ARG1].PTRB = _ARG1; NODE.EXA[sARG::ARG2].X = _ARG2; NODE.EXA[sARG::ARG3].PTR = NULL; } sUREG_NODE( WzASM_EIP* _ARG0, DWORD _ARG1 ) { NODE.EXA[sARG::ARG0].PTR = (WzPTR)_ARG0; NODE.EXA[sARG::ARG1].EX = _ARG1; NODE.EXA[sARG::ARG2].PTR = NULL; NODE.EXA[sARG::ARG3].PTR = NULL; } sUREG_NODE( WzASM_EIP* _ARG0, WzPTR _ARG1, DWORD _ARG2 ) { NODE.EXA[sARG::ARG0].PTR = (WzPTR)_ARG0; NODE.EXA[sARG::ARG1].PTR = _ARG1; NODE.EXA[sARG::ARG2].EX = _ARG2; NODE.EXA[sARG::ARG3].PTR = NULL; } sUREG_NODE( WzASM_EIP* _ARG0, WzPTR _ARG1, WzPTR _ARG2, DWORD _ARG3 ) { NODE.EXA[sARG::ARG0].PTR = (WzPTR)_ARG0; NODE.EXA[sARG::ARG1].PTR = _ARG1; NODE.EXA[sARG::ARG2].PTR = _ARG2; NODE.EXA[sARG::ARG3].EX = _ARG3; } ////template //template //sUREG_NODE( _DECLT0 _ARG0, _DECLT0 _ARG0, _DECLT0 _ARG0, _DECLT0 _ARG0, ) //{ // NODE.EXA[sARG::ARG0].PTR = (WzPTR)_DECLARG0; // NODE.EXA[sARG::ARG1].PTR = (WzPTR)_DECLARG; // NODE.EXA[sARG::ARG2].PTR = (WzPTR)_DECLARG; // NODE.EXA[sARG::ARG3].EX = _ARG3; //} };