Пример #1
0
    Formats::Chiptune::Container::Ptr Parse(const Binary::Container& data, Builder& target)
    {
      if (!FastCheck(data))
      {
        return Formats::Chiptune::Container::Ptr();
      }
      try
      {
        Binary::InputStream stream(data);
        stream.ReadField<SignatureType>();
        target.SetTitle(FromStdString(stream.ReadCString(MAX_STRING_SIZE)));
        target.SetAuthor(FromStdString(stream.ReadCString(MAX_STRING_SIZE)));
        target.SetComment(FromStdString(stream.ReadCString(MAX_COMMENT_SIZE)));

        const std::size_t fixedOffset = stream.GetPosition();
        for (;;)
        {
          const uint8_t val = stream.ReadField<uint8_t>();
          if (val == FINISH)
          {
            break;
          }
          switch (val)
          {
          case BEGIN_FRAME:
            target.BeginFrames(1);
            break;
          case SKIP_FRAMES:
            target.BeginFrames(3 + stream.ReadField<uint8_t>());
            break;
          case SELECT_SECOND_CHIP:
            target.SelectChip(1);
            break;
          case SELECT_FIRST_CHIP:
            target.SelectChip(0);
            break;
          case LOOP_MARKER:
            target.SetLoop();
            break;
          default:
            target.SetRegister(val, stream.ReadField<uint8_t>());
            break;
          }
        }
        const std::size_t usedSize = stream.GetPosition();
        const auto subData = stream.GetReadData();
        return CreateCalculatingCrcContainer(subData, fixedOffset, usedSize - fixedOffset);
      }
      catch (const std::exception&)
      {
        return Formats::Chiptune::Container::Ptr();
      }
    }
Пример #2
0
String GetBuildPlatform()
{
  //some business-logic
  if (PLATFORM == "linux" && ARCH == "mipsel")
  {
    return FromStdString("dingux");
  }
  else if (PLATFORM == "windows" && TOOLSET == "mingw")
  {
    return FromStdString(TOOLSET);
  }
  else
  {
    return FromStdString(PLATFORM);
  }
}
Пример #3
0
    Module::Holder::Ptr CreateModule(const Parameters::Accessor& params, const Binary::Container& rawData, Parameters::Container::Ptr properties) const override
    {
      try
      {
        const TunePtr tune = std::make_shared<SidTune>(static_cast<const uint_least8_t*>(rawData.Start()),
          static_cast<uint_least32_t>(rawData.Size()));
        CheckSidplayError(tune->getStatus());
        const unsigned songIdx = tune->selectSong(0);

        const SidTuneInfo& tuneInfo = *tune->getInfo();
        if (tuneInfo.songs() > 1)
        {
          Require(HasSidContainer(*properties));
        }

        PropertiesHelper props(*properties);
        switch (tuneInfo.numberOfInfoStrings())
        {
        default:
        case 3:
          //copyright/publisher really
          props.SetComment(FromStdString(tuneInfo.infoString(2)));
        case 2:
          props.SetAuthor(FromStdString(tuneInfo.infoString(1)));
        case 1:
          props.SetTitle(FromStdString(tuneInfo.infoString(0)));
        case 0:
          break;
        }
        const Binary::Container::Ptr data = rawData.GetSubcontainer(0, tuneInfo.dataFileLen());
        const Formats::Chiptune::Container::Ptr source = Formats::Chiptune::CreateCalculatingCrcContainer(data, 0, data->Size());
        props.SetSource(*source);

        const uint_t fps = tuneInfo.songSpeed() == SidTuneInfo::SPEED_CIA_1A || tuneInfo.clockSpeed() == SidTuneInfo::CLOCK_NTSC ? 60 : 50;
        props.SetFramesFrequency(fps);

        const Information::Ptr info = MakePtr<Information>(GetDuration(params), tune, fps, songIdx);
        return MakePtr<Holder>(tune, info, properties);
      }
      catch (const std::exception&)
      {
        return Holder::Ptr();
      }
    }
Пример #4
0
 void CheckCall(bool ok, Error::LocationRef loc) const
 {
   if (!ok)
   {
     if (const char* txt = SdlApi->SDL_GetError())
     {
       throw MakeFormattedError(loc,
         translate("Error in SDL backend: %1%."), FromStdString(txt));
     }
     throw Error(loc, translate("Unknown error in SDL backend."));
   }
 }
Пример #5
0
String GetBuildArchitectureVersion()
{
  return FromStdString(ARCH_VERSION);
}
Пример #6
0
String GetBuildArchitecture()
{
  return FromStdString(ARCH);
}
Пример #7
0
String GetBuildDate()
{
  return FromStdString(DATE);
}
Пример #8
0
String GetProgramVersion()
{
  return FromStdString(VERSION);
}
Пример #9
0
	String* String::FromCharArray(const char* _str)
	{
		std::string str(_str);
		return FromStdString(str);
	}