#pragma once
#include "LabelTable.h"
#include "ObjParams.h"

namespace ObjManger
{
	bool MakeObj(const fs::path &pathName, const std::_tstring &strExt, const bool bTbl = false);
	bool LoadObj(const fs::path &pathName);
	bool FindBlock(FILE *f, OBJBlockHeader &hdr, OBJTags tag) noexcept;
	bool SaveIDBlk(FILE *f);
	bool ReadIDBlk(FILE *f, OBJIDBlock &data);
	bool SaveLabelTable(FILE *f, CLabelTable *lbltbl, OBJTags nTag);
	bool LoadLabelTable(FILE *f, CLabelTable *lbltbl, const OBJBlockHeader &hdr);
	bool SaveRefsTable(FILE *f, OBJTags nTag);
	bool LoadRefsTable(FILE *f, const OBJBlockHeader &hdr);
	bool SaveData(FILE *f);
	bool ReadData(FILE *f, const uint32_t nLen);

	bool SaveScripts(FILE *f);
	bool ReadScripts(FILE *f, const uint32_t nLen);
}
/*
Объектный файл.
имеет теговую структуру.
состоит из блоков:
1. Блок глобальных меток
2. Блок локальных меток (если есть)
3. Блок ссылок на метки.
4. Блок идентификатор
5. Блок скриптов
*/


