CPad 컨텐츠 정의

CPad를 사용하기 위해 C++ 프로그램을 설정하는 첫 번째 단계는 CPad가 저장되는 데이터 유형을 식별하는 것입니다. CPad에서 여러 다른 데이터 유형을 가지려는 경우 컨텐츠 정의를 위해 구조 유형 작성을 고려하십시오. 여기에 표시된 CPad 예는 루트라는 구조 유형을 사용합니다.

각 CPad는 트리의 루트로 생각할 수 있는 메모리의 분할 영역에 대한 액세스를 제공합니다. CPad에 저장된 오브젝트는 루트 오브젝트에서만 도달할 수 있습니다. 루트 오브젝트에서는 단일 오브젝트(예: int, double), 배열(예: char*, int*) 또는 구조를 저장할 수 있습니다.

예를 들어, CPad를 사용하여 문자열을 저장하려고 한다고 가정하십시오. 사용자가 작성하는 루트 구조는 문자열 및 크기 값에 대한 포인터를 포함하여 CPad가 소비하는 메모리 및 문자열 크기에 대해 일부 경계를 설정할 수 있습니다. 다음 코드는 해당 구조를 정의합니다.
#include "udxinc.h"
#include <string.h>

using namespace nz::udx_ver2;

struct Root
{
 char* data;
 int size;
};
구조는 루트 오브젝트에 대한 흥미있는 측면을 보여줍니다. 예를 들어, 다음 샘플 코드는 단순한 사전을 구현하는 루트 오브젝트를 보여줍니다.
struct MyValue
{
    char* name;
    int value;
};

struct MyLookup
{
    MyValue *values;
    int numallocated;
    int numused;
};

이 예에서 루트 오브젝트는 임의의 MyValue 오브젝트 수를 포함할 수 있는 MyLookup의 인스턴스입니다. 모든 오브젝트 및 char* 문자열은 CPad 할당 메커니즘을 통해 할당되지만 값(또는 값의 이름)에 도달하는 유일한 방법은 MyLookup 루트 오브젝트를 통하는 것입니다.

여러 C++ 파일이 동일한 CPad를 공유하는 UDX를 정의하는 경우 각 C++ 파일에서 루트 구조 정의를 반복해야 합니다. 다수의 일반 구조 또는 정의를 정의하는 경우 단일 포함 파일을 작성하여 하나의 위치에서 해당 오브젝트를 정의할 수 있습니다.