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

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

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

int main( int argc, char* argv[] )
{
  if (2 != argc)
  {
    puts("Usage: ListSubordinates.exe <container>");
    return -1;
  }

  try
  {
    Context ctx;
    NDSObject cont(ctx, argv[1]);
    NDSObjects sub;
    cont.getSubordinates(&sub);
    printf("Subordinates of %s:\n", cont.dn().ptr());
    if (!cont.isContainer())
    {
      printf("  %s (%s) is not a container!\n",
        cont.dn().ptr(), cont.baseClass().ptr());
    }
    else
    {
      for (int i = 0; i < sub.size(); ++i)
        printf("  %s (%s)\n", sub[i]->rdn().ptr(), sub[i]->baseClass().ptr());
    }
  }
  catch (const Exception& e)
  {
    printf("ERROR: %s\n", e.what());
  }
  puts("----------");

  return 0;
}
