~vbursian/research-assistant/intervers

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
////////////////////////////////////////////////////////////////////////////////
/*! @file Adam.cpp   Реализация полиморфизма.
- Part of RANet - Research Assistant Net Library (based on ANSI C++).
- Copyright(C) 1994-2010, Viktor E. Bursian, St.Petersburg, Russia.
                     Viktor.Bursian@mail.ioffe.ru
*///////////////////////////////////////////////////////////////////////////////
#include "Adam.h"
#include "Excepts.h"
//#include "Trace.h"
//#include <utility>
namespace RA {
//------------------------------------------------------------------------------

//--------------------------------------------------------------------- sTag ---

sTag::sTag (literal name)
  :TheName(name)
{
//  TRACE( TheName );
  std::pair<map<sString,pcsTag>::iterator,bool>  P;
  P=TagMapByName.insert(std::pair<sString,pcsTag>(sString(name),this));
  ASSERT(P.second);
}


pcsTag  sTag::ByName (rcsString name)
{
  sTagMapByName::const_iterator   p=TagMapByName.find(name);
  return ( p != sTag::TagMapByName.end()  ?  p->second  :  NULL );
}

//-------------------------------------------------------------------- sAdam ---
/*! @class sAdam
Обеспечивает возможность получить имя класса полиморфного объекта
в виде строки.
@code
  psAdam  PA;
  // ...
  PA = new sDataArrayRecord(...);
  // ...
  cout << PA->TrueType().Name();
@endcode
@sa sTag sStorable
*/

//------------------------------------------------------------------------------
} //namespace RA