// file: $isip/class/mmedia/AnnotationGraph/angr_0.cc
// version: $Id: angr_00.cc 8947 2002-12-29 02:19:02Z alphonso $
//

// isip include files
//
#include "AnnotationGraph.h"

// method: destructor
//
// arguments: none
//
// return: none
//
// this is the destructor for the AnnotationGraph class.
//
AnnotationGraph::~AnnotationGraph() {

  // clear all memory
  //
  clear();
}
  
// method: default constructor
//
// arguments: none
//
// return: none
//
AnnotationGraph::AnnotationGraph() {

  // initialize the identifiers
  //
  anchorids_d = (Identifier*)NULL;
  annotationids_d = (Identifier*)NULL;
  
  // set the allocation mode of the annotation sequence
  //
  annoseq_d.setAllocationMode(DstrBase::USER);
}
  
// method: copy constructor
//
// arguments:
//   const AnnotationGraph& arg: (input) annotation graph object
//
// return: none
//
AnnotationGraph::AnnotationGraph(const AnnotationGraph& arg_a) {

  // initialize the identifiers
  //
  anchorids_d = (Identifier*)NULL;
  annotationids_d = (Identifier*)NULL;
  
  // set the allocation mode of the annotation sequence
  //
  annoseq_d.setAllocationMode(DstrBase::USER);

  // assign the input object
  //
  assign(arg_a);
}

// method: constructor
//
// arguments:
//   String& id: (input) graph id
//   String& type: (input) graph type
//
// return: none
//
// this is the constructor for the AnnotationGraph class.
//
AnnotationGraph::AnnotationGraph(String& id_a, String& type_a) {

  // declare local variables
  //
  String anchor(DEF_ANCHOR);
  String annotation(DEF_ANNOTATION);  
  
  // initialize the member data
  //
  id_d = id_a;
  type_d = type_a;

  // initialize the identifiers
  //
  anchorids_d = new Identifier(id_a, anchor);
  annotationids_d = new Identifier(id_a, annotation);
  
  // set the allocation mode of the annotation sequence
  //
  annoseq_d.setAllocationMode(DstrBase::USER);
}

//-----------------------------------------------------------------------------
//
// we define non-integral constants in the default constructor
//
//-----------------------------------------------------------------------------

// constants: required constants such as the class name
//
const String AnnotationGraph::CLASS_NAME(L"AnnotationGraph");

// constants: i/o related constants
//
const String AnnotationGraph::DEF_PARAM(L"");
const String AnnotationGraph::DEF_ANCHOR(L"Anchor");
const String AnnotationGraph::DEF_ANNOTATION(L"Annotation");

const String AnnotationGraph::PARAM_ID(L"id");
const String AnnotationGraph::PARAM_TYPE(L"type");
const String AnnotationGraph::PARAM_SEARCH_LEVEL(L"level");
const String AnnotationGraph::PARAM_SEARCH_LEVEL_INDEX(L"level_index");
const String AnnotationGraph::PARAM_SCORE(L"score");
const String AnnotationGraph::PARAM_FRAME(L"frame");
const String AnnotationGraph::PARAM_ANCHORS(L"anchors");
const String AnnotationGraph::PARAM_ANNOTATIONS(L"annotations");

// static instantiations: debug level
//
Integral::DEBUG AnnotationGraph::debug_level_d = Integral::NONE;

// static instantiations: the memory manager
//
MemoryManager AnnotationGraph::mgr_d(sizeof(AnnotationGraph));
