// MetaDataOfClasses.h: interface for the CMetaDataOfClasses class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_METADATAOFCLASSES_H__F1BE676F_903A_4D46_99F1_123B72722A0A__INCLUDED_)
#define AFX_METADATAOFCLASSES_H__F1BE676F_903A_4D46_99F1_123B72722A0A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "SetOfHierarchy.h"
#include "istrmap.h"

class CRangesOfDescr;

struct CMetaDataOfClasses  
{

	CMetaDataOfClasses();
	~CMetaDataOfClasses();
  static void RemoveNeedlessBlank(CString &str);

  // Метод разбирает строку текста и заполняет внутренние структуры класса. 
  // Строка должна состоять из объявлений классов с привязкой к именам файлов 
  // хранящих реализацию и иерархической структуры этих классов	
  void ParsingString(CString& StringForParse, CRangesOfDescr& RangesDescr);
  // Хранит связи названий классов 1С (для возможности использовать 
  // СоздатьОбъект(<ИмяКласса>) и файлов в которых находиться реализация данных классов
	CIStringMapToString m_ClassBindFile;
	
  // Хранит строки названий классов и связанный с ним список названий базовых классов
	CIStringMapToOb m_ClassesHierarchyMap;
  
  // Содержит синонимы каталогов из файла ini компоненты
  CIStringMapToString m_AliasOfPaths;

  // Содержит типы методов классов для строгой проверки
  CIStringMapToOb m_TypeOfClassMeth;  

  typedef CArray<NameBindOfType*, NameBindOfType*> ARR_TYPE_NAME;

  // Ключ - имя класса плюс имя метода в котором присутствует параметр передаваемый по значению
  CIStringMapToOb m_ValParamInMeth;

  // Ключ - имя класса плюс имя метода в котором присутствует неограниченное количество параметров (...)
  CIStringMapToOb m_UnlimitsParams;
  
  // Содержит полный путь к файлу описания для класса
  CIStringMapToString m_FullFileNameOfDescrFile;
};

#endif // !defined(AFX_METADATAOFCLASSES_H__F1BE676F_903A_4D46_99F1_123B72722A0A__INCLUDED_)
