Титульная страница   Иерархия классов   Алфавитный указатель   Классы   Файлы   Члены классов   Члены файла   Примеры  

NDSTree.cpp

Пример использования классов Context, NDSObject, NDSObjects, String, Exception. Данный пример демонстрирует простейшую программу, которая выводит на консоль дерево NDS начиная с указанного объекта либо корня. Для всех пользователей выводятся их фамилии и номера телефонов.

#include <stdio.h>
#include "BGDNet.h"

using BGDNet::Context;
using BGDNet::NDSObject;
using BGDNet::NDSObjects;
using BGDNet::String;
using BGDNet::Exception;

void subtree( const NDSObject* pObj, int level = 0 );

int main( int argc, char* argv[] )
{
  try
  {
    Context ctx;
    ctx.dckFlags(ctx.dckFlags() | DCV_TYPELESS_NAMES);
    const char* root = (2 == argc) ? argv[1] : "[Root]";
    NDSObject cont(ctx, root);
    subtree(&cont);
  }
  catch (const Exception& e)
  {
    printf("ERROR: %s\n", e.what());
  }
  puts("----------");

  return 0;
}

void subtree( const NDSObject* pObj, int level )
{
  const int MAX_LEVEL = 50;
  if (level < MAX_LEVEL)
  {
    char buf[MAX_LEVEL + 1];
    memset(buf, ' ', level);
    buf[level] = '\0';
    const char* base = pObj->baseClass().ptr();
    if (strcmp("User", base))
      printf("%s%s (%s)\n", buf, pObj->rdn().ptr(), base);
    else
    {
      String surname, phone;
      pObj->attr("Surname", &surname);
      pObj->attr("Telephone Number", &phone);
      printf("%s%s (%s) - %s, \"%s\"\n",
        buf, pObj->rdn().ptr(), base, surname.ptr(), phone.ptr());
    }
  
    if (pObj->isContainer())
    {
      NDSObjects sub;
      pObj->getSubordinates(&sub);
      for (int i = 0; i < sub.size(); ++i)
        subtree(sub[i], level + 2);
    }
  }
}

РУП БЕЛГИПРОДОР Документация на BGDNet сгенерирована Mon Apr 1 18:36:52 2002, БЕЛГИПРОДОР ©  2001