public override CTAPData ImportData(string path)
        {
            var parser = new ElloumiCTAPParser();

            parser.Parse(path);
            var instance = Load(parser);

            instance.Name        = Path.GetFileName(path);
            instance.Description = "Loaded from file \"" + path + "\" on " + DateTime.Now.ToString();
            return(instance);
        }
        private CTAPData Load(ElloumiCTAPParser parser)
        {
            var instance = new CTAPData();

            instance.Processors         = parser.Processors;
            instance.Tasks              = parser.Tasks;
            instance.ExecutionCosts     = parser.ExecutionCosts;
            instance.CommunicationCosts = parser.CommunicationCosts;
            instance.MemoryRequirements = parser.MemoryRequirements;
            instance.MemoryCapacities   = parser.MemoryCapacities;
            return(instance);
        }
        public override CTAPData LoadData(IDataDescriptor id)
        {
            var descriptor          = (ElloumiCTAPDataDescriptor)id;
            var instanceArchiveName = GetResourceName(FileName + @"\.dat\.zip");

            using (var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {
                var entry = instancesZipFile.GetEntry(descriptor.InstanceIdentifier);
                using (var stream = entry.Open()) {
                    var parser = new ElloumiCTAPParser();
                    parser.Parse(stream);
                    var instance = Load(parser);

                    instance.Name        = id.Name;
                    instance.Description = id.Description;

                    if (!String.IsNullOrEmpty(descriptor.SolutionIdentifier))
                    {
                        var solutionsArchiveName = GetResourceName(FileName + @"\.sol\.zip");
                        using (var solutionsZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName), ZipArchiveMode.Read)) {
                            entry = solutionsZipFile.GetEntry(descriptor.SolutionIdentifier);
                            using (var solStream = entry.Open()) {
                                ElloumiCTAPSolutionParser slnParser = new ElloumiCTAPSolutionParser();
                                slnParser.Parse(solStream, instance.MemoryRequirements.Length);
                                if (slnParser.Error != null)
                                {
                                    throw slnParser.Error;
                                }

                                instance.BestKnownAssignment = slnParser.Assignment;
                                instance.BestKnownQuality    = slnParser.Quality;
                            }
                        }
                    }
                    return(instance);
                }
            }
        }