본문 바로가기

[ C/ C++ 프로그래밍 ]/[ 루아 ]

[ 루아 ] C++ 연동 - 2 -루아를 이용한 환경설정 -

ㅇ lua state
lua state를 이용하여  C++과 루아 사이의 통신을 한다. ==> 함수나  코드의 입력과 결과 관리 역시 lua state를 이용
lua state는 Stack으로 관리 한다.  C++에서 lua state에 값을 넣으려면 정해진 방식을 통해야 한다.
이를 위해 사용하는 lua push 함수들은 다음과 같다.

void   lua_pushnil( lua_State *L );                    // nil을 스택에 넣는 함수
void   lua_pushnumber( lua_State *L, lua_Number n );   // 숫자값을 스택에 넣는다.
void   lua_pushlstring( lua_State *L, const char *s, size_T l); /// 입력한 길이 만큼 스택에 넣는다.
void   lua_pushstring( lua_State *L, const char *s ); // null로 종료되는 문자영을 스택에 넣는다.
void   lua_pushboolean( lua_State *L, int b );  /// 부울 값을 스택에 넣는다.

이와 반대로 꺼내면 다음과 같은 함수들을 사용한다.

lua_Number  lua_tonumber ( lua_State *L, int idx );
lua_Integer  lua_tointerger( lua_State *L, int idx );
int  lua_toboolean( lua_State *L, int idx );
const char   *lua_tolstring( lua_State *L, int idx, size_t *len );

push와 반대되는 기능을 수행하지만 입력인자로 index값을 받는다. 제일 처음에 입력된 값의 index는 1로 표현되며 그 다음 값은 2, 3, .. 이 된다.
가장 최근에 입력된 값은 -1로 표현되며 그 다음값은 -2, -3, ... 으로 표현 가능하다
이 함수들은 lua.h에 정의되어 있다. 선언된 위치를 보면 나열된 함수 이외에도 다른 변수형도 지원한다는 것을 알 수 있다.

[ lua_input.txt ]
 buffer = 1024
version = "1.0.2"




소스 다운






불러올 파일에  주석파일이나 계산 같은 문법도 넣어 줄수가 있다.

ex) input.txt
-- buffer sizie
buffer = 1024 / 2
-- version 명
version = "1.0.2"

'[ C/ C++ 프로그래밍 ] > [ 루아 ]' 카테고리의 다른 글

[ 루아 ] 왜 루아인가?  (0) 2010.07.27
[ 루아 ] C++ 연동 - 루아에서 C++ 호출하기  (0) 2010.07.26
[ 루아 ] C++ 연동 - 1  (2) 2010.07.25
[ 루아 ] 코루틴  (1) 2010.07.24
[ 루아 ] 클래스 캡슐화  (1) 2010.07.22