검색결과 리스트
분류 전체보기에 해당되는 글 30건
- 2009.08.19 Signal 공부중인거 정리. < 02 > - 1
- 2009.08.19 Signal 공부중인거 정리. < 02 >
- 2009.08.19 Signal 공부중인거 정리. < 01 >
- 2009.08.17 UNICODE <-> UTF8
- 2009.08.05 재미없는 if문
- 2009.07.19 매크로 기술 한개 추가!
글
// 태인이형 알려주셔서 캄샤캄샤~
struct stFunc
{
void Display() {
// to do
}
void Display_text( const char* pszText ) const {
// to do
}
void Display_text() const {
// to do
}
};
boost::signal< void( stFunc*, const char* ) > sig01;
boost::signal< void( stFunc* ) > sig02;
stFunc* pFunc = new stFunc;
/*
* 일반적인 모양
* sig01.connect( &stFunc::Display_text );
* 오버로드된 멤버 함수를 컨넥할 시
* sig01.connect( static_cast< 리턴형( 구조체나 클래스명::*)( 인자 ) > ( 연결할 멤버함수의 주소 )
*/
sig01.connect( static_cast< void( stFunc::* )( const char* ) const > ( &stFunc::Display_text ) );
sig02.connect( static_cast< void( stFunc::* )() const > ( &stFunc::Display_text ) );
sig01( pFunc, "테스트 문자열" );
sig02( pFunc );
delete pFunc;
'Programming > Boost' 카테고리의 다른 글
Bind 공부중인거 정리. < 01 > (0) | 2009.08.20 |
---|---|
Signal 공부중인거 정리. < 04 > (0) | 2009.08.20 |
Signal 공부중인거 정리. < 03 > (0) | 2009.08.20 |
Signal 공부중인거 정리. < 02 > (0) | 2009.08.19 |
Signal 공부중인거 정리. < 01 > (0) | 2009.08.19 |
설정
트랙백
댓글
글
/* 멤버 함수를 호출해서 사용하는 법. */
// 함수 오버로딩시 문제점 발생! 아직 미해결 ㅋ
struct stFunc
{
void Display() {
// to do
}
void Display_text( const char* pszText ) {
// to do
}
};
int main( int argc, char* argv[] )
{
// 인자가 없는 함수와 있는 함수
boost::signal< void( stFunc* ) > sig01;
boost::signal< void( stFunc*, const char* ) > sig02;
// 함수 뒤에 () 빠지는 것을 주의. 함수포인터만 필요함.
sig01.connect( &stFunc::Display );
sig02.connect( &stFunc::Display_text );
stFunc* pFunc = new stFunc;
sig01( pFunc );
sig02( pFunc, "출력할 문장" );
delete pFunc;
return 0;
}
'Programming > Boost' 카테고리의 다른 글
Bind 공부중인거 정리. < 01 > (0) | 2009.08.20 |
---|---|
Signal 공부중인거 정리. < 04 > (0) | 2009.08.20 |
Signal 공부중인거 정리. < 03 > (0) | 2009.08.20 |
Signal 공부중인거 정리. < 02 > - 1 (0) | 2009.08.19 |
Signal 공부중인거 정리. < 01 > (0) | 2009.08.19 |
설정
트랙백
댓글
글
#include <boost/signal.hpp>
struct stFunc
{
void operator() () const {
// to do
}
};
int main( int argc, char* argv[] )
{
// boost::signal< 리턴형( parameter1, param2, ... paramN ) > 시그널변수이름;
// 지금은 함수 자체에 인자가 없으므로 전부 void() 형으로 시그널 형성
// 구조체( 클래스 ) 자체를 연결.
boost::signal< void() > sig01;
sig01.connect( stFunc() );
sig01();
// 할당된( 정적 or 동적 ) Object( struct or class )에 연결
boost::signal< void() > sig02;
boost::signal< void() > sig03;
stFunc Func;
stFunc* pFunc;
sig02.connect( Func );
sig03.connect( *pFunc );
sig02();
sig03();
delete pFunc;
}
'Programming > Boost' 카테고리의 다른 글
Bind 공부중인거 정리. < 01 > (0) | 2009.08.20 |
---|---|
Signal 공부중인거 정리. < 04 > (0) | 2009.08.20 |
Signal 공부중인거 정리. < 03 > (0) | 2009.08.20 |
Signal 공부중인거 정리. < 02 > - 1 (0) | 2009.08.19 |
Signal 공부중인거 정리. < 02 > (0) | 2009.08.19 |
설정
트랙백
댓글
글
UTF - 8 의 표
//////////////////////////////////////////////////////////////////////////
한글의 경우
1110 xxxx
10xx xxxx
10xx xxxx
쉬프트 연산후
xxxx 0000 ( << 4 )
xxxx xx00 ( << 2 )
xxxx xx00 ( << 2 )
유니코드로 합치기
xxxx 0000 0000 0000 ( <<8칸 밀기 )
xxxx xx00 0000 ( <<4칸 밀기 )
| 00xx xxxx ( >>2칸 밀기 )
------------------------------------
xxxx xxxx xxxx xxxx
/---------------------
110x xxxx
10xx xxxx
xxxx x000 ( << 3 )
xxxx xx00 ( << 2 )
0xxx xx00 0000
| 00xx xxxx
-----------------
0xxx xxxx xxxx
-------------------------/
//////////////////////////////////////////////////////////////////////////
WCHAR wTest[200] = L"Test문자열 1번 입니다.";
char szAnsiText[200];
int size = WideCharToMultiByte( CP_UTF8, 0, wTest, -1, NULL, NULL, NULL, NULL );
WideCharToMultiByte( CP_UTF8, 0, wTest, -1, szAnsiText, size, NULL, NULL );
BYTE byWords[4]; // UTF-8의 최대크기
wchar_t szUniText[100]; // UTF -> UNICODE로 변경된 데이터 저장할 버퍼
int nLen = ( int )_tcslen( szAnsiText ); // 문자열의 전체길이
int iUniPos = 0; // 유니코드 버퍼의 위치
int iAnsiPos = 0; // Ansi 버퍼의 위치
while( iAnsiPos != nLen )
{
byWords[ 0 ] = szAnsiText[ iAnsiPos ];
// 0x0800 ~ 0xffff
if( 0xe0 <= byWords[ 0 ] )
{
byWords[ 1 ] = szAnsiText[ ++iAnsiPos ];
byWords[ 2 ] = szAnsiText[ ++iAnsiPos ];
byWords[ 0 ] <<= 4;
byWords[ 1 ] <<= 2;
byWords[ 2 ] <<= 2;
szUniText[ iUniPos ] =
byWords[ 0 ] << 8 | byWords[ 1 ] << 4 | byWords[ 2 ] >> 2;
}
// 0x0080 ~ 0x07ff
else if( 0xc0 <= byWords[ 0 ] )
{
byWords[ 1 ] = szAnsiText[ ++iAnsiPos ];
byWords[ 0 ] <<= 3;
byWords[ 1 ] <<= 2;
szUniText[ iUniPos ] = byWords[ 0 ] << 3 | byWords[ 1 ] >> 2;
}
// 0x0001 ~ 0x007f
else
szUniText[ iUniPos ] = byWords[ 0 ];
++iUniPos;
++iAnsiPos;
}
// 널문자 추가
szUniText[ iUniPos ] = 0;
'잡동사니' 카테고리의 다른 글
무슨 게임 무슨 엔진 (0) | 2010.01.10 |
---|---|
장난칠때 써먹을 반한 잡지식? (0) | 2009.10.29 |
성향 테스트 (0) | 2009.10.05 |
설정
트랙백
댓글
글
{
}
의 결과는 무조건 false !!
( a == b ) 가 true / false 로 나오는데
그 값을 다시 c 와 비교하기 때문에
만약 c가 0이나 1이라면 우연찮게 true가 나올 가능성이 있다.
하지만 대부분 false가 나오겠지~
3개의 값이 똑같음을 비교하는건 귀찮지만 2개씩 비교해야 하나보다.
'Programming > 이런저런것들' 카테고리의 다른 글
path 잡아줄때 은(는) 예상되지 않았습니다. 에러날때. (0) | 2009.12.03 |
---|---|
std::map 에서 포인터를 선언된 녀석을 가져오는 법 (0) | 2009.10.30 |
가변인자를 사용한 매크로 사용법 (0) | 2009.10.12 |
Parameter 와 argument의 차이점 (0) | 2009.08.20 |
매크로 기술 한개 추가! (0) | 2009.07.19 |
설정
트랙백
댓글
글
역시 매크로! 재밌다는걸 느꼈다.
#define DEFINE_OPTION_BOOL(NAME) bool m_b##NAME##;
#define DEFINE_OPTION_BOOL_GETFUNC(NAME) inline const bool Can##NAME##() { return pSecured->m_b##NAME##; }
#define DEFINE_OPTION_INT(NAME) int m_i##NAME##;
#define DEFINE_OPTION_INT_GETFUNC(NAME) inline const int Get##NAME##() { return pSecured->m_i##NAME##; }
매크로를 쓴 이유는 기업비밀~!
'Programming > 이런저런것들' 카테고리의 다른 글
path 잡아줄때 은(는) 예상되지 않았습니다. 에러날때. (0) | 2009.12.03 |
---|---|
std::map 에서 포인터를 선언된 녀석을 가져오는 법 (0) | 2009.10.30 |
가변인자를 사용한 매크로 사용법 (0) | 2009.10.12 |
Parameter 와 argument의 차이점 (0) | 2009.08.20 |
재미없는 if문 (0) | 2009.08.05 |
RECENT COMMENT