// THIS CORNFILE IS GENERATED. DO NOT EDIT! 🌽 #ifndef _PROTOBUFH #define _PROTOBUFH #include #include #include #include #include class AnyRef; struct VectorOperations { void (*push_back)(AnyRef &vec, AnyRef &val); AnyRef (*at)(AnyRef &vec, size_t index); size_t (*size)(AnyRef &vec); void (*emplace_back)(AnyRef &vec); void (*clear)(AnyRef &vec); void (*reserve)(AnyRef &vec, size_t n); }; class AnyRef; struct OptionalOperations { AnyRef (*get)(AnyRef &opt); bool (*has_value)(AnyRef &opt); void (*set)(AnyRef &opt, AnyRef &val); void (*reset)(AnyRef &opt); void (*emplaceEmpty)(AnyRef &opt); }; #include "ReflectionInternal.h" #include "authentication.h" #include "keyexchange.h" #include "metadata.h" #include "spirc.h" #include "mercury.h" template void __reflectConstruct(void *mem) { new(mem) T; } template void __reflectDestruct(void *obj) { ((T*) obj)->~T(); } class ReflectField; class ReflectEnumValue; class ReflectType; class SystemInfo; class LoginCredentials; class ClientResponseEncrypted; class LoginCryptoDiffieHellmanChallenge; class LoginCryptoChallengeUnion; class LoginCryptoDiffieHellmanHello; class LoginCryptoHelloUnion; class BuildInfo; class FeatureSet; class APChallenge; class APResponseMessage; class LoginCryptoDiffieHellmanResponse; class LoginCryptoResponseUnion; class CryptoResponseUnion; class PoWResponseUnion; class ClientResponsePlaintext; class ClientHello; class Header; class AudioFile; class Restriction; class Image; class ImageGroup; class Album; class Artist; class Track; class Episode; class TrackRef; class State; class Capability; class DeviceState; class Frame; class AnyRef { public: ReflectTypeID typeID; AnyRef() {}; AnyRef(ReflectTypeID typeID, void *obj) { this->typeID = typeID; this->value.voidptr = obj; } template T *as() { // if(T::_TYPE_ID != this->typeID) { // throw "invalid as call"; // } return (T*) this->value.voidptr; } template bool is() { if constexpr(std::is_same::value) { return ReflectTypeID::EnumReflectTypeID == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumReflectTypeKind == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassReflectField == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassReflectEnumValue == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Int32 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Int64 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Uint32 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Uint8 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Int == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::UnsignedChar == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Float == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::String == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Uint64 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Char == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Double == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::Bool == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfUint8 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumCpuFamily == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumOs == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumAuthenticationType == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfString == this->typeID; } else if constexpr(std::is_same>>::value) { return ReflectTypeID::OptionalOfVectorOfUint8 == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumProduct == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumPlatform == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumCryptosuite == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassLoginCryptoDiffieHellmanChallenge == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassLoginCryptoDiffieHellmanHello == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfBool == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassAPChallenge == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassLoginCryptoDiffieHellmanResponse == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfEnumCryptosuite == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassFeatureSet == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumAudioFormat == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfEnumAudioFormat == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassImage == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassImageGroup == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassAlbum == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassArtist == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfInt32 == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassRestriction == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassAudioFile == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassTrack == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumMessageType == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumPlayStatus == this->typeID; } else if constexpr(std::is_same::value) { return ReflectTypeID::EnumCapabilityType == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfUint32 == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfEnumPlayStatus == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfUint64 == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassTrackRef == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfEnumCapabilityType == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfInt64 == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfString == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfInt64 == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::VectorOfClassCapability == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfEnumMessageType == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassDeviceState == this->typeID; } else if constexpr(std::is_same>::value) { return ReflectTypeID::OptionalOfClassState == this->typeID; } else { return T::_TYPE_ID == this->typeID; } } ReflectType *reflectType(); AnyRef getField(int i); template static AnyRef of(T *obj) { ReflectTypeID typeID; if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumReflectTypeID; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumReflectTypeKind; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassReflectField; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassReflectEnumValue; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Int32; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Int64; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Uint32; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Uint8; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Int; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::UnsignedChar; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Float; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::String; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Uint64; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Char; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Double; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::Bool; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfUint8; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumCpuFamily; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumOs; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumAuthenticationType; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfString; } else if constexpr(std::is_same>>::value) { typeID = ReflectTypeID::OptionalOfVectorOfUint8; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumProduct; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumPlatform; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumCryptosuite; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassLoginCryptoDiffieHellmanChallenge; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassLoginCryptoDiffieHellmanHello; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfBool; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassAPChallenge; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassLoginCryptoDiffieHellmanResponse; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfEnumCryptosuite; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassFeatureSet; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumAudioFormat; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfEnumAudioFormat; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassImage; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassImageGroup; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassAlbum; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassArtist; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfInt32; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassRestriction; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassAudioFile; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassTrack; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumMessageType; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumPlayStatus; } else if constexpr(std::is_same::value) { typeID = ReflectTypeID::EnumCapabilityType; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfUint32; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfEnumPlayStatus; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfUint64; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassTrackRef; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfEnumCapabilityType; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfInt64; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfString; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfInt64; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::VectorOfClassCapability; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfEnumMessageType; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassDeviceState; } else if constexpr(std::is_same>::value) { typeID = ReflectTypeID::OptionalOfClassState; } else { typeID = T::_TYPE_ID; } AnyRef a; a.typeID = typeID; a.value.voidptr = (void*) obj; return a; } union ReflectedTypes { void *voidptr; ReflectTypeID *u_EnumReflectTypeID; ReflectField *u_ClassReflectField; ReflectEnumValue *u_ClassReflectEnumValue; ReflectType *u_ClassReflectType; ReflectTypeKind *u_EnumReflectTypeKind; std::vector *u_VectorOfClassReflectField; std::vector *u_VectorOfClassReflectEnumValue; int32_t *u_Int32; int64_t *u_Int64; uint32_t *u_Uint32; uint8_t *u_Uint8; int *u_Int; unsigned char *u_UnsignedChar; float *u_Float; std::string *u_String; uint64_t *u_Uint64; char *u_Char; double *u_Double; bool *u_Bool; std::vector *u_VectorOfUint8; CpuFamily *u_EnumCpuFamily; Os *u_EnumOs; AuthenticationType *u_EnumAuthenticationType; SystemInfo *u_ClassSystemInfo; LoginCredentials *u_ClassLoginCredentials; ClientResponseEncrypted *u_ClassClientResponseEncrypted; std::optional *u_OptionalOfString; std::optional> *u_OptionalOfVectorOfUint8; Product *u_EnumProduct; Platform *u_EnumPlatform; Cryptosuite *u_EnumCryptosuite; LoginCryptoDiffieHellmanChallenge *u_ClassLoginCryptoDiffieHellmanChallenge; LoginCryptoChallengeUnion *u_ClassLoginCryptoChallengeUnion; LoginCryptoDiffieHellmanHello *u_ClassLoginCryptoDiffieHellmanHello; LoginCryptoHelloUnion *u_ClassLoginCryptoHelloUnion; BuildInfo *u_ClassBuildInfo; FeatureSet *u_ClassFeatureSet; APChallenge *u_ClassAPChallenge; APResponseMessage *u_ClassAPResponseMessage; LoginCryptoDiffieHellmanResponse *u_ClassLoginCryptoDiffieHellmanResponse; LoginCryptoResponseUnion *u_ClassLoginCryptoResponseUnion; CryptoResponseUnion *u_ClassCryptoResponseUnion; PoWResponseUnion *u_ClassPoWResponseUnion; ClientResponsePlaintext *u_ClassClientResponsePlaintext; ClientHello *u_ClassClientHello; std::optional *u_OptionalOfClassLoginCryptoDiffieHellmanChallenge; std::optional *u_OptionalOfClassLoginCryptoDiffieHellmanHello; std::optional *u_OptionalOfBool; std::optional *u_OptionalOfClassAPChallenge; std::optional *u_OptionalOfClassLoginCryptoDiffieHellmanResponse; std::vector *u_VectorOfEnumCryptosuite; std::optional *u_OptionalOfClassFeatureSet; Header *u_ClassHeader; AudioFormat *u_EnumAudioFormat; AudioFile *u_ClassAudioFile; Restriction *u_ClassRestriction; Image *u_ClassImage; ImageGroup *u_ClassImageGroup; Album *u_ClassAlbum; Artist *u_ClassArtist; Track *u_ClassTrack; Episode *u_ClassEpisode; std::optional *u_OptionalOfEnumAudioFormat; std::vector *u_VectorOfClassImage; std::optional *u_OptionalOfClassImageGroup; std::optional *u_OptionalOfClassAlbum; std::vector *u_VectorOfClassArtist; std::optional *u_OptionalOfInt32; std::vector *u_VectorOfClassRestriction; std::vector *u_VectorOfClassAudioFile; std::vector *u_VectorOfClassTrack; MessageType *u_EnumMessageType; PlayStatus *u_EnumPlayStatus; CapabilityType *u_EnumCapabilityType; TrackRef *u_ClassTrackRef; State *u_ClassState; Capability *u_ClassCapability; DeviceState *u_ClassDeviceState; Frame *u_ClassFrame; std::optional *u_OptionalOfUint32; std::optional *u_OptionalOfEnumPlayStatus; std::optional *u_OptionalOfUint64; std::vector *u_VectorOfClassTrackRef; std::optional *u_OptionalOfEnumCapabilityType; std::vector *u_VectorOfInt64; std::vector *u_VectorOfString; std::optional *u_OptionalOfInt64; std::vector *u_VectorOfClassCapability; std::optional *u_OptionalOfEnumMessageType; std::optional *u_OptionalOfClassDeviceState; std::optional *u_OptionalOfClassState; } value; private: }; template class __VectorManipulator { public: static void push_back(AnyRef &vec, AnyRef &val) { auto theVector = reinterpret_cast*>(vec.value.voidptr); auto theValue = *reinterpret_cast(val.value.voidptr); theVector->push_back(theValue); }; static AnyRef at(AnyRef &vec, size_t index) { auto theVector = reinterpret_cast*>(vec.value.voidptr); return AnyRef::of(&(*theVector)[index]); }; static size_t size(AnyRef &vec) { auto theVector = reinterpret_cast*>(vec.value.voidptr); return theVector->size(); }; static void emplace_back(AnyRef &vec) { auto theVector = reinterpret_cast*>(vec.value.voidptr); theVector->emplace_back(); }; static void clear(AnyRef &vec) { auto theVector = reinterpret_cast*>(vec.value.voidptr); theVector->clear(); }; static void reserve(AnyRef &vec, size_t n) { auto theVector = reinterpret_cast*>(vec.value.voidptr); theVector->reserve(n); }; }; template class __OptionalManipulator { public: static AnyRef get(AnyRef &opt) { auto theOptional = reinterpret_cast*>(opt.value.voidptr); return AnyRef::of(&**theOptional); } static bool has_value(AnyRef &opt) { auto theOptional = reinterpret_cast*>(opt.value.voidptr); return theOptional->has_value(); } static void set(AnyRef &opt, AnyRef &val) { auto theOptional = reinterpret_cast*>(opt.value.voidptr); auto theValue = reinterpret_cast(val.value.voidptr); *theOptional = *theValue; } static void reset(AnyRef &opt) { auto theOptional = reinterpret_cast*>(opt.value.voidptr); theOptional->reset(); } static void emplaceEmpty(AnyRef &opt) { auto theOptional = reinterpret_cast*>(opt.value.voidptr); theOptional->emplace(); } }; extern ReflectType reflectTypeInfo[92]; class UniqueAny: public AnyRef { public: UniqueAny() { this->value.voidptr = nullptr; }; UniqueAny(ReflectTypeID typeID) { this->typeID = typeID; auto typeInfo = &reflectTypeInfo[static_cast(typeID)]; AnyRef a; this->value.voidptr = new unsigned char[typeInfo->size]; typeInfo->_Construct(this->value.voidptr); }; ~UniqueAny() { auto typeInfo = &reflectTypeInfo[static_cast(typeID)]; typeInfo->_Destruct(this->value.voidptr); delete reinterpret_cast(this->value.voidptr); }; }; class AnyVectorRef { public: AnyRef ref; AnyVectorRef(AnyRef r): ref(r) {} void push_back(AnyRef &v) { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->vectorOps.push_back(ref, v); } size_t size() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; return typeInfo->vectorOps.size(ref); } void emplace_back() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->vectorOps.emplace_back(ref); } void clear() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->vectorOps.clear(ref); } void reserve(size_t n) { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->vectorOps.reserve(ref, n); } AnyRef at(size_t index) { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; return typeInfo->vectorOps.at(ref, index); } }; class AnyOptionalRef { public: AnyRef ref; AnyOptionalRef(AnyRef r): ref(r) {} AnyRef get() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; return typeInfo->optionalOps.get(ref); } bool has_value() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; return typeInfo->optionalOps.has_value(ref); } void set(AnyRef &o) { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->optionalOps.set(ref, o); } void reset() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->optionalOps.reset(ref); } void emplaceEmpty() { auto typeInfo = &reflectTypeInfo[static_cast(this->ref.typeID)]; typeInfo->optionalOps.emplaceEmpty(ref); } }; #endif