mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 14:53:52 +00:00
UTF refactor to eliminate duplicated code outside of PL
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
#include "PLCore.h"
|
||||
#include "PLBigEndian.h"
|
||||
#include "MacRomanConversion.h"
|
||||
#include "UTF8.h"
|
||||
#include "GpUnicode.h"
|
||||
#include "WindowsUnicodeToolShim.h"
|
||||
|
||||
#include <vector>
|
||||
@@ -376,122 +376,122 @@ static const size_t houseSize = sizeof(houseType);
|
||||
EnumDef g_objectTypeEnum[] =
|
||||
{
|
||||
{ -1, "kObjectIsEmpty" },
|
||||
ENUM_VALUE_DEF(kFloorVent),
|
||||
ENUM_VALUE_DEF(kCeilingVent),
|
||||
ENUM_VALUE_DEF(kFloorBlower),
|
||||
ENUM_VALUE_DEF(kCeilingBlower),
|
||||
ENUM_VALUE_DEF(kSewerGrate),
|
||||
ENUM_VALUE_DEF(kLeftFan),
|
||||
ENUM_VALUE_DEF(kRightFan),
|
||||
ENUM_VALUE_DEF(kTaper),
|
||||
ENUM_VALUE_DEF(kCandle),
|
||||
ENUM_VALUE_DEF(kStubby),
|
||||
ENUM_VALUE_DEF(kTiki),
|
||||
ENUM_VALUE_DEF(kBBQ),
|
||||
ENUM_VALUE_DEF(kInvisBlower),
|
||||
ENUM_VALUE_DEF(kGrecoVent),
|
||||
ENUM_VALUE_DEF(kSewerBlower),
|
||||
ENUM_VALUE_DEF(kLiftArea),
|
||||
ENUM_VALUE_DEF(kTable),
|
||||
ENUM_VALUE_DEF(kShelf),
|
||||
ENUM_VALUE_DEF(kCabinet),
|
||||
ENUM_VALUE_DEF(kFilingCabinet),
|
||||
ENUM_VALUE_DEF(kWasteBasket),
|
||||
ENUM_VALUE_DEF(kMilkCrate),
|
||||
ENUM_VALUE_DEF(kCounter),
|
||||
ENUM_VALUE_DEF(kDresser),
|
||||
ENUM_VALUE_DEF(kDeckTable),
|
||||
ENUM_VALUE_DEF(kStool),
|
||||
ENUM_VALUE_DEF(kTrunk),
|
||||
ENUM_VALUE_DEF(kInvisObstacle),
|
||||
ENUM_VALUE_DEF(kManhole),
|
||||
ENUM_VALUE_DEF(kBooks),
|
||||
ENUM_VALUE_DEF(kInvisBounce),
|
||||
ENUM_VALUE_DEF(kRedClock),
|
||||
ENUM_VALUE_DEF(kBlueClock),
|
||||
ENUM_VALUE_DEF(kYellowClock),
|
||||
ENUM_VALUE_DEF(kCuckoo),
|
||||
ENUM_VALUE_DEF(kPaper),
|
||||
ENUM_VALUE_DEF(kBattery),
|
||||
ENUM_VALUE_DEF(kBands),
|
||||
ENUM_VALUE_DEF(kGreaseRt),
|
||||
ENUM_VALUE_DEF(kGreaseLf),
|
||||
ENUM_VALUE_DEF(kFoil),
|
||||
ENUM_VALUE_DEF(kInvisBonus),
|
||||
ENUM_VALUE_DEF(kStar),
|
||||
ENUM_VALUE_DEF(kSparkle),
|
||||
ENUM_VALUE_DEF(kHelium),
|
||||
ENUM_VALUE_DEF(kSlider),
|
||||
ENUM_VALUE_DEF(kUpStairs),
|
||||
ENUM_VALUE_DEF(kDownStairs),
|
||||
ENUM_VALUE_DEF(kMailboxLf),
|
||||
ENUM_VALUE_DEF(kMailboxRt),
|
||||
ENUM_VALUE_DEF(kFloorTrans),
|
||||
ENUM_VALUE_DEF(kCeilingTrans),
|
||||
ENUM_VALUE_DEF(kDoorInLf),
|
||||
ENUM_VALUE_DEF(kDoorInRt),
|
||||
ENUM_VALUE_DEF(kDoorExRt),
|
||||
ENUM_VALUE_DEF(kDoorExLf),
|
||||
ENUM_VALUE_DEF(kWindowInLf),
|
||||
ENUM_VALUE_DEF(kWindowInRt),
|
||||
ENUM_VALUE_DEF(kWindowExRt),
|
||||
ENUM_VALUE_DEF(kWindowExLf),
|
||||
ENUM_VALUE_DEF(kInvisTrans),
|
||||
ENUM_VALUE_DEF(kDeluxeTrans),
|
||||
ENUM_VALUE_DEF(kLightSwitch),
|
||||
ENUM_VALUE_DEF(kMachineSwitch),
|
||||
ENUM_VALUE_DEF(kThermostat),
|
||||
ENUM_VALUE_DEF(kPowerSwitch),
|
||||
ENUM_VALUE_DEF(kKnifeSwitch),
|
||||
ENUM_VALUE_DEF(kInvisSwitch),
|
||||
ENUM_VALUE_DEF(kTrigger),
|
||||
ENUM_VALUE_DEF(kLgTrigger),
|
||||
ENUM_VALUE_DEF(kSoundTrigger),
|
||||
ENUM_VALUE_DEF(kCeilingLight),
|
||||
ENUM_VALUE_DEF(kLightBulb),
|
||||
ENUM_VALUE_DEF(kTableLamp),
|
||||
ENUM_VALUE_DEF(kHipLamp),
|
||||
ENUM_VALUE_DEF(kDecoLamp),
|
||||
ENUM_VALUE_DEF(kFlourescent),
|
||||
ENUM_VALUE_DEF(kTrackLight),
|
||||
ENUM_VALUE_DEF(kInvisLight),
|
||||
ENUM_VALUE_DEF(kShredder),
|
||||
ENUM_VALUE_DEF(kToaster),
|
||||
ENUM_VALUE_DEF(kMacPlus),
|
||||
ENUM_VALUE_DEF(kGuitar),
|
||||
ENUM_VALUE_DEF(kTV),
|
||||
ENUM_VALUE_DEF(kCoffee),
|
||||
ENUM_VALUE_DEF(kOutlet),
|
||||
ENUM_VALUE_DEF(kVCR),
|
||||
ENUM_VALUE_DEF(kStereo),
|
||||
ENUM_VALUE_DEF(kMicrowave),
|
||||
ENUM_VALUE_DEF(kCinderBlock),
|
||||
ENUM_VALUE_DEF(kFlowerBox),
|
||||
ENUM_VALUE_DEF(kCDs),
|
||||
ENUM_VALUE_DEF(kCustomPict),
|
||||
ENUM_VALUE_DEF(kBalloon),
|
||||
ENUM_VALUE_DEF(kCopterLf),
|
||||
ENUM_VALUE_DEF(kCopterRt),
|
||||
ENUM_VALUE_DEF(kDartLf),
|
||||
ENUM_VALUE_DEF(kDartRt),
|
||||
ENUM_VALUE_DEF(kBall),
|
||||
ENUM_VALUE_DEF(kDrip),
|
||||
ENUM_VALUE_DEF(kFish),
|
||||
ENUM_VALUE_DEF(kCobweb),
|
||||
ENUM_VALUE_DEF(kOzma),
|
||||
ENUM_VALUE_DEF(kMirror),
|
||||
ENUM_VALUE_DEF(kMousehole),
|
||||
ENUM_VALUE_DEF(kFireplace),
|
||||
ENUM_VALUE_DEF(kFlower),
|
||||
ENUM_VALUE_DEF(kWallWindow),
|
||||
ENUM_VALUE_DEF(kBear),
|
||||
ENUM_VALUE_DEF(kCalendar),
|
||||
ENUM_VALUE_DEF(kVase1),
|
||||
ENUM_VALUE_DEF(kVase2),
|
||||
ENUM_VALUE_DEF(kBulletin),
|
||||
ENUM_VALUE_DEF(kCloud),
|
||||
ENUM_VALUE_DEF(kFaucet),
|
||||
ENUM_VALUE_DEF(kRug),
|
||||
ENUM_VALUE_DEF(kFloorVent),
|
||||
ENUM_VALUE_DEF(kCeilingVent),
|
||||
ENUM_VALUE_DEF(kFloorBlower),
|
||||
ENUM_VALUE_DEF(kCeilingBlower),
|
||||
ENUM_VALUE_DEF(kSewerGrate),
|
||||
ENUM_VALUE_DEF(kLeftFan),
|
||||
ENUM_VALUE_DEF(kRightFan),
|
||||
ENUM_VALUE_DEF(kTaper),
|
||||
ENUM_VALUE_DEF(kCandle),
|
||||
ENUM_VALUE_DEF(kStubby),
|
||||
ENUM_VALUE_DEF(kTiki),
|
||||
ENUM_VALUE_DEF(kBBQ),
|
||||
ENUM_VALUE_DEF(kInvisBlower),
|
||||
ENUM_VALUE_DEF(kGrecoVent),
|
||||
ENUM_VALUE_DEF(kSewerBlower),
|
||||
ENUM_VALUE_DEF(kLiftArea),
|
||||
ENUM_VALUE_DEF(kTable),
|
||||
ENUM_VALUE_DEF(kShelf),
|
||||
ENUM_VALUE_DEF(kCabinet),
|
||||
ENUM_VALUE_DEF(kFilingCabinet),
|
||||
ENUM_VALUE_DEF(kWasteBasket),
|
||||
ENUM_VALUE_DEF(kMilkCrate),
|
||||
ENUM_VALUE_DEF(kCounter),
|
||||
ENUM_VALUE_DEF(kDresser),
|
||||
ENUM_VALUE_DEF(kDeckTable),
|
||||
ENUM_VALUE_DEF(kStool),
|
||||
ENUM_VALUE_DEF(kTrunk),
|
||||
ENUM_VALUE_DEF(kInvisObstacle),
|
||||
ENUM_VALUE_DEF(kManhole),
|
||||
ENUM_VALUE_DEF(kBooks),
|
||||
ENUM_VALUE_DEF(kInvisBounce),
|
||||
ENUM_VALUE_DEF(kRedClock),
|
||||
ENUM_VALUE_DEF(kBlueClock),
|
||||
ENUM_VALUE_DEF(kYellowClock),
|
||||
ENUM_VALUE_DEF(kCuckoo),
|
||||
ENUM_VALUE_DEF(kPaper),
|
||||
ENUM_VALUE_DEF(kBattery),
|
||||
ENUM_VALUE_DEF(kBands),
|
||||
ENUM_VALUE_DEF(kGreaseRt),
|
||||
ENUM_VALUE_DEF(kGreaseLf),
|
||||
ENUM_VALUE_DEF(kFoil),
|
||||
ENUM_VALUE_DEF(kInvisBonus),
|
||||
ENUM_VALUE_DEF(kStar),
|
||||
ENUM_VALUE_DEF(kSparkle),
|
||||
ENUM_VALUE_DEF(kHelium),
|
||||
ENUM_VALUE_DEF(kSlider),
|
||||
ENUM_VALUE_DEF(kUpStairs),
|
||||
ENUM_VALUE_DEF(kDownStairs),
|
||||
ENUM_VALUE_DEF(kMailboxLf),
|
||||
ENUM_VALUE_DEF(kMailboxRt),
|
||||
ENUM_VALUE_DEF(kFloorTrans),
|
||||
ENUM_VALUE_DEF(kCeilingTrans),
|
||||
ENUM_VALUE_DEF(kDoorInLf),
|
||||
ENUM_VALUE_DEF(kDoorInRt),
|
||||
ENUM_VALUE_DEF(kDoorExRt),
|
||||
ENUM_VALUE_DEF(kDoorExLf),
|
||||
ENUM_VALUE_DEF(kWindowInLf),
|
||||
ENUM_VALUE_DEF(kWindowInRt),
|
||||
ENUM_VALUE_DEF(kWindowExRt),
|
||||
ENUM_VALUE_DEF(kWindowExLf),
|
||||
ENUM_VALUE_DEF(kInvisTrans),
|
||||
ENUM_VALUE_DEF(kDeluxeTrans),
|
||||
ENUM_VALUE_DEF(kLightSwitch),
|
||||
ENUM_VALUE_DEF(kMachineSwitch),
|
||||
ENUM_VALUE_DEF(kThermostat),
|
||||
ENUM_VALUE_DEF(kPowerSwitch),
|
||||
ENUM_VALUE_DEF(kKnifeSwitch),
|
||||
ENUM_VALUE_DEF(kInvisSwitch),
|
||||
ENUM_VALUE_DEF(kTrigger),
|
||||
ENUM_VALUE_DEF(kLgTrigger),
|
||||
ENUM_VALUE_DEF(kSoundTrigger),
|
||||
ENUM_VALUE_DEF(kCeilingLight),
|
||||
ENUM_VALUE_DEF(kLightBulb),
|
||||
ENUM_VALUE_DEF(kTableLamp),
|
||||
ENUM_VALUE_DEF(kHipLamp),
|
||||
ENUM_VALUE_DEF(kDecoLamp),
|
||||
ENUM_VALUE_DEF(kFlourescent),
|
||||
ENUM_VALUE_DEF(kTrackLight),
|
||||
ENUM_VALUE_DEF(kInvisLight),
|
||||
ENUM_VALUE_DEF(kShredder),
|
||||
ENUM_VALUE_DEF(kToaster),
|
||||
ENUM_VALUE_DEF(kMacPlus),
|
||||
ENUM_VALUE_DEF(kGuitar),
|
||||
ENUM_VALUE_DEF(kTV),
|
||||
ENUM_VALUE_DEF(kCoffee),
|
||||
ENUM_VALUE_DEF(kOutlet),
|
||||
ENUM_VALUE_DEF(kVCR),
|
||||
ENUM_VALUE_DEF(kStereo),
|
||||
ENUM_VALUE_DEF(kMicrowave),
|
||||
ENUM_VALUE_DEF(kCinderBlock),
|
||||
ENUM_VALUE_DEF(kFlowerBox),
|
||||
ENUM_VALUE_DEF(kCDs),
|
||||
ENUM_VALUE_DEF(kCustomPict),
|
||||
ENUM_VALUE_DEF(kBalloon),
|
||||
ENUM_VALUE_DEF(kCopterLf),
|
||||
ENUM_VALUE_DEF(kCopterRt),
|
||||
ENUM_VALUE_DEF(kDartLf),
|
||||
ENUM_VALUE_DEF(kDartRt),
|
||||
ENUM_VALUE_DEF(kBall),
|
||||
ENUM_VALUE_DEF(kDrip),
|
||||
ENUM_VALUE_DEF(kFish),
|
||||
ENUM_VALUE_DEF(kCobweb),
|
||||
ENUM_VALUE_DEF(kOzma),
|
||||
ENUM_VALUE_DEF(kMirror),
|
||||
ENUM_VALUE_DEF(kMousehole),
|
||||
ENUM_VALUE_DEF(kFireplace),
|
||||
ENUM_VALUE_DEF(kFlower),
|
||||
ENUM_VALUE_DEF(kWallWindow),
|
||||
ENUM_VALUE_DEF(kBear),
|
||||
ENUM_VALUE_DEF(kCalendar),
|
||||
ENUM_VALUE_DEF(kVase1),
|
||||
ENUM_VALUE_DEF(kVase2),
|
||||
ENUM_VALUE_DEF(kBulletin),
|
||||
ENUM_VALUE_DEF(kCloud),
|
||||
ENUM_VALUE_DEF(kFaucet),
|
||||
ENUM_VALUE_DEF(kRug),
|
||||
ENUM_VALUE_DEF(kChimes),
|
||||
};
|
||||
|
||||
@@ -1124,7 +1124,7 @@ void PatchVisitor::VisitLPStr(uint8_t &length, uint8_t *chars, int capacity)
|
||||
{
|
||||
uint32_t codePoint = 0;
|
||||
size_t charsDigested = 0;
|
||||
if (!PortabilityLayer::UTF8Processor::DecodeCodePoint(replacementUTF8, rLen, charsDigested, codePoint))
|
||||
if (!GpUnicode::UTF8::Decode(replacementUTF8, rLen, charsDigested, codePoint))
|
||||
break;
|
||||
|
||||
rLen -= charsDigested;
|
||||
@@ -1382,9 +1382,9 @@ bool PatchVisitor::DecodeQuotedString(const std::string &scopeStr, size_t startP
|
||||
}
|
||||
|
||||
const uint16_t unicodeCodePoint = (nibbles[0] << 12) + (nibbles[1] << 8) + (nibbles[2] << 4) + nibbles[3];
|
||||
uint8_t encoded[PortabilityLayer::UTF8Processor::kMaxEncodedBytes];
|
||||
uint8_t encoded[GpUnicode::UTF8::kMaxEncodedBytes];
|
||||
size_t emitted = 0;
|
||||
PortabilityLayer::UTF8Processor::EncodeCodePoint(encoded, emitted, unicodeCodePoint);
|
||||
GpUnicode::UTF8::Encode(encoded, emitted, unicodeCodePoint);
|
||||
|
||||
for (size_t ei = 0; ei < emitted; ei++)
|
||||
decoded.push_back(static_cast<char>(encoded[ei]));
|
||||
|
Reference in New Issue
Block a user