이라 쓰고 뇌피셜이라 읽으니 재미로만 볼 것 참고 // 1. 프로그래밍에서는 특정한 기능을 수행하기 위해 메소드라는 것을 만들며 이는 기본적으로 "결과값 함수명(매개변수){내용}" 의 기본 틀을 가짐 그래서 어떤 매개변수를 집어넣으면 내용을 거쳐서 결과값이 나온다라고 이해하면 ㅇㅋ 2. 프로그래밍에서는 특정한 값을 저장하기 위해 변수라는 것을 만들며 이 때 이름은 만든 의도를 충분히 파악하기 위해 구체적으로 작성함 그래서 status라던가 data라던가 pos(position) 같은 이름이 바로 그런 것 GRESULT BuildIncarnation() { // 메소드의 호출 결과를 임시저장하는 변수 // 이걸로 메소드가 정상적으로 작동했는지 안했는지 판단할 것 GStatus returnStatus; GStatus status; // 마지막 위치를 마지막 기록으로부터 불러온다 last_pos = g_IPS->LocateLastPos(g_DB::LastRecord); // 마지막 위치를 가지고 새로운 데이터셋 파일을 쓰기 모드로 생성, 단 이름이 겹치는 파일이 존재하지 않을 때 GDataSet target = CreateDataSet(last_pos, &res, OPEN_NEW | GENERIC_WRITE, TRUE, WRITE_IF_NOT_EXISTING, ATTRIBUTE_NORMAL, NULL, "Senadina"); // 마지막 위치를 가지고 화면 상에 사용자가 볼 수 있게 세팅 // 보통 전역변수의 앞에는 g_ 를 붙여서 전역변수임을 표시함 /* 여기서 코랄리의 코드가 문제가 될 수 있는 부분은 보통 코딩할 때 메소드의 {} 대괄호 안에 외부의 값을 가져오려면 가급적 매개변수를 통해야 함. 그게 사실은 조금 번거롭기 때문에, 코드의 아주 바깥쪽에 전역변수(Global Variable)라고 해서 코드의 언제 어디서든 값을 가져올 수 있게 하는 기법이 있음. 근데 문제는 전역변수를 쓰면 값이 어디서 어디로 흐르는지 정확하게 추적하기가 어려워지고, 멀티스레딩 등으로 고도화하기가 곤란해짐. 그래서 아주 제한적인 용도로만 사용해야하고 남용하면 안 됨. */ g_DB->m_GUI->SetLocation(last_pos, 0); // 위에서 생성한 데이터셋에 장비를 생성 g_DB->m_GUI->CreateEquipment(&target); // param은 일반적으로 parameter의 약어. 즉, 패러미터가 정상적으로 존재할 경우의 의미 if (m_param) { // 시스템 시간으로부터 시간을 불러온 다음 결과값 저장 GData time_data = m_data.inputValue(g_sysTime, &returnStatus); // 결과값을 확인해 이상이 있으면 에러메시지 출력 GcheckErr(returnStatus, "ERROR_GET_TIME_DATA"); // 아마 time_data가 사람이 좀 보기 번거로운 형식일 것이므로 사람이 보기 좋게 변환 GTime time = time_data.AsTime(); // Mesh는 3D 폴리곤의 집합체를 일컫는 것으로 m_data로부터 output 한다는 것은 위의 데이터셋을 이용해 세나디아의 3D 모델을 뽑는게 아닐까 예상 GData output = m_data.outputValue(outputMesh, &returnStatus); // 마찬가지로 결과값 확인 후 이상 있으면 에러메시지 출력 GCheckErr(returnStatus, "ERROR_COMPUTE"); // 메쉬가 정상적으로 생성됐으면 메쉬를 조작해야하므로 가상의 오브젝트를 생성 GCreator dataCreator; GObject output_data = dataCreator.create(&returnStatus); GCheckErr(returnStatus, "ERROR_CREATE_OUTPUT_DATA"); // 시간 정보와 코드를 이용해 가상의 세나디아 생성 createIncarnation(time, output_data, returnStatus); GCheckErr(returnStatus, "ERROR_CREATE_INCARNATION"); output.set(output_data); // 다 생성한 다음에는 불필요한 데이터 정리 data.setClean(); } else return UNKNOWN_PARAMETER; // 생성한 데이터를 노드에 등록 // 여기서는 자료구조로서의 트리(나무)의 가지로 예상 GDataSet incarnation(m_incarnation, 0, "Any"); status = incarnation.registerNode("Senadina", target->id, target_creator); if (!status) { return ERROR_REGISTER_NODE; } // 여기까지 문제없으면 성공적으로 종료 return SUCCESS; }
이 시발 내거 주석 달기도 귀찮은데 나도 술취했나