277 void SetLooping(
const std::string& catName,
bool looping =
false);
316 void Write(
const std::string& cifFileName,
const bool sortTables =
false,
317 const bool writeEmptyTables =
false);
339 void Write(
const std::string& cifFileName,
340 const std::vector<std::string>& tableOrder,
341 const bool writeEmptyTables =
false);
364 void Write(std::ostream& outStream,
const bool sortTables =
false,
365 const bool writeEmptyTables =
false);
391 const std::string& globalBlockName,
const bool sortTables =
false,
392 const bool writeEmptyTables =
false);
415 const bool extraChecks =
false);
438 const bool extraChecks =
false);
509 const std::string& category,
const std::string& attribute);
511 const std::string& category,
const std::string& attributeA,
512 const std::string& attributeB,
const std::string& valB);
514 const std::string& category,
const std::string& attribute);
517 const std::string& category,
518 const std::string& attribute,
const std::string& value,
519 const bool create =
false);
521 const std::string& category,
const std::string& attributeA,
522 const std::string& valA,
523 const std::string& attributeB,
const std::string& valB,
524 const bool create =
false);
526 const std::string& category,
const std::string& attribute,
527 const std::string& value);
530 const std::string& blockId,
531 const std::string& category,
const std::string& attribute);
533 const std::string& blockId,
const std::string& category,
534 const std::string& attributeA,
535 const std::string& attributeB,
const std::string& valB);
538 const std::string& category,
const std::string& attribute,
539 const std::vector<std::string>& values);
541 #ifdef VLAD_TO_CIF_FILE_NOT_USED
542 void del_attribute_value_where(
CifFile *fobj,
const char *blockId,
543 const char *category,
const char *attributeB,
const char *valB);
544 #endif // VLAD_TO_CIF_FILE_NOT_USED not defined
582 void _PrintItemName(std::ostream& cifo,
const std::string& category,
583 const std::string& itemName,
unsigned int& linePos);
585 const bool ident =
false,
const unsigned int numSpaces = 1);
589 const unsigned int width = 0);
593 const unsigned int width = 0);
596 const std::vector<std::string>& colNames,
597 const std::vector<unsigned int>& colWidths,
598 const std::vector<eIdentType> colPrintType);
600 void Write(std::ostream& cifo,
const std::vector<std::string>& catOrder,
601 const bool writeEmptyTables =
false);
603 void Write(std::ostream& cifo, std::vector<unsigned int>& tables,
604 const bool writeEmptyTables =
false);
608 std::string _srcFileName;
614 bool IsCatDefinedInRef(
const std::string& catName,
ISTable& catTable);
615 bool IsItemDefinedInRef(
const std::string& catName,
616 const std::string& itemName,
ISTable& refItemTable);
617 void CheckKeyItems(
const std::string& blockName,
ISTable& catTable,
618 ISTable& keyTable, std::ostringstream& log);
619 void CheckKeyValues(
const std::vector<std::string>& keyItems,
620 ISTable& catTable, std::ostringstream& log);
622 void GetKeyAttributes(std::vector<std::string>& keyAttributes,
623 const std::string& catTableName,
ISTable& catKeyTable);
624 void CheckKeyItems(
const std::string& blockName,
ISTable& catTable,
625 const std::vector<std::string>& keyAttributes, std::ostringstream& log);
627 void CheckMandatoryItems(
const std::string& blockName,
ISTable& catTable,
628 ISTable& refItemTable,
const std::vector<std::string>& keyItems,
629 std::ostringstream& log);
631 void CheckAndRectifyItemTypeCode(
Block& block, std::ostringstream& log);
632 void RectifyItemTypeCode(std::string& retItemTypeCode,
634 const std::string& cifItemName);
636 int CheckRegExpRangeEnum(
Block& block,
ISTable& catTable,
637 const std::string& attribName,
ISTable& itemTypeTable,
640 std::ostringstream& log);
642 int CheckCellRange(
const std::string& cell,
const std::string& typeCode,
643 const std::vector<std::string>& minlist,
644 const std::vector<std::string>& maxlist);
646 int CheckCellEnum(
const std::string& cell,
const std::string& typeCode,
647 const std::string& primCode,
const std::vector<std::string>& enumlist);
649 int CheckCellFloatRange(
const std::string& cell,
650 const std::vector<std::string>& minlist,
651 const std::vector<std::string>& maxlist);
653 int CheckCellIntRange(
const std::string& cell,
654 const std::vector<std::string>& minlist,
655 const std::vector<std::string>& maxlist);
657 int CheckCellFloatEnum(
const std::string& cell,
658 const std::vector<std::string>& enumlist);
660 int CheckCellIntEnum(
const std::string& cell,
661 const std::vector<std::string>& enumlist);
663 int CheckCellOtherEnum(
const std::string& cell,
const std::string& primCode,
664 const std::vector<std::string>& enumlist);
666 void GetItemTypeCode(std::string& typeCode,
const std::string& cifItemName,
669 void ConvertEscapedString(
const std::string& inString,
670 std::string& outString);