m3u8d/m3u8d-qt/m3u8d.cpp

742 lines
22 KiB
C++
Raw Normal View History

2022-05-15 03:05:31 +00:00
#include "m3u8d.h"
/* Code generated by cmd/cgo; DO NOT EDIT. */
/* package command-line-arguments */
#line 1 "cgo-builtin-export-prolog"
#include <stddef.h> /* for ptrdiff_t below */
#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif
#endif
/* Start of preamble from import "C" comments. */
/* End of preamble from import "C" comments. */
/* Start of boilerplate cgo prologue. */
#line 1 "cgo-gcc-export-header-prolog"
#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H
typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef __SIZE_TYPE__ GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
/*
static assertion to make sure the file is being used on architecture
at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
#endif
/* End of boilerplate cgo prologue. */
#ifdef __cplusplus
extern "C" {
#endif
extern __declspec(dllexport) void Go2cppFn_RunDownload(char* in, int inLen, char** out, int* outLen);
2022-06-12 14:43:20 +00:00
extern __declspec(dllexport) void Go2cppFn_CloseOldEnv(char* in, int inLen, char** out, int* outLen);
2022-05-15 03:05:31 +00:00
extern __declspec(dllexport) void Go2cppFn_GetProgress(char* in, int inLen, char** out, int* outLen);
extern __declspec(dllexport) void Go2cppFn_GetWd(char* in, int inLen, char** out, int* outLen);
2022-06-25 12:16:21 +00:00
extern __declspec(dllexport) void Go2cppFn_ParseCurlStr(char* in, int inLen, char** out, int* outLen);
extern __declspec(dllexport) void Go2cppFn_RunDownload_Req_ToCurlStr(char* in, int inLen, char** out, int* outLen);
2022-05-15 03:05:31 +00:00
#ifdef __cplusplus
}
#endif
RunDownload_Resp RunDownload(RunDownload_Req in0){
std::string in;
{
{
2022-06-25 12:16:21 +00:00
uint32_t tmp36 = in0.M3u8Url.length();
char tmp37[4];
tmp37[0] = (uint32_t(tmp36) >> 24) & 0xFF;
tmp37[1] = (uint32_t(tmp36) >> 16) & 0xFF;
tmp37[2] = (uint32_t(tmp36) >> 8) & 0xFF;
tmp37[3] = (uint32_t(tmp36) >> 0) & 0xFF;
in.append(tmp37, 4);
2022-05-15 03:05:31 +00:00
in.append(in0.M3u8Url);
}
{
2022-06-25 12:16:21 +00:00
uint32_t tmp38 = in0.HostType.length();
char tmp39[4];
tmp39[0] = (uint32_t(tmp38) >> 24) & 0xFF;
tmp39[1] = (uint32_t(tmp38) >> 16) & 0xFF;
tmp39[2] = (uint32_t(tmp38) >> 8) & 0xFF;
tmp39[3] = (uint32_t(tmp38) >> 0) & 0xFF;
in.append(tmp39, 4);
2022-05-15 03:05:31 +00:00
in.append(in0.HostType);
}
in.append((char*)(&in0.Insecure), 1);
{
2022-06-25 12:16:21 +00:00
uint32_t tmp40 = in0.SaveDir.length();
char tmp41[4];
tmp41[0] = (uint32_t(tmp40) >> 24) & 0xFF;
tmp41[1] = (uint32_t(tmp40) >> 16) & 0xFF;
tmp41[2] = (uint32_t(tmp40) >> 8) & 0xFF;
tmp41[3] = (uint32_t(tmp40) >> 0) & 0xFF;
in.append(tmp41, 4);
2022-05-15 03:05:31 +00:00
in.append(in0.SaveDir);
}
{
2022-06-25 12:16:21 +00:00
uint32_t tmp42 = in0.FileName.length();
char tmp43[4];
tmp43[0] = (uint32_t(tmp42) >> 24) & 0xFF;
tmp43[1] = (uint32_t(tmp42) >> 16) & 0xFF;
tmp43[2] = (uint32_t(tmp42) >> 8) & 0xFF;
tmp43[3] = (uint32_t(tmp42) >> 0) & 0xFF;
in.append(tmp43, 4);
2022-05-15 03:05:31 +00:00
in.append(in0.FileName);
}
{
2022-06-25 12:16:21 +00:00
char tmp44[4];
tmp44[0] = (uint32_t(in0.SkipTsCountFromHead) >> 24) & 0xFF;
tmp44[1] = (uint32_t(in0.SkipTsCountFromHead) >> 16) & 0xFF;
tmp44[2] = (uint32_t(in0.SkipTsCountFromHead) >> 8) & 0xFF;
tmp44[3] = (uint32_t(in0.SkipTsCountFromHead) >> 0) & 0xFF;
in.append(tmp44, 4);
2022-06-20 23:22:53 +00:00
}
{
2022-06-25 12:16:21 +00:00
uint32_t tmp45 = in0.SetProxy.length();
char tmp46[4];
tmp46[0] = (uint32_t(tmp45) >> 24) & 0xFF;
tmp46[1] = (uint32_t(tmp45) >> 16) & 0xFF;
tmp46[2] = (uint32_t(tmp45) >> 8) & 0xFF;
tmp46[3] = (uint32_t(tmp45) >> 0) & 0xFF;
in.append(tmp46, 4);
2022-06-20 23:22:53 +00:00
in.append(in0.SetProxy);
2022-05-15 03:05:31 +00:00
}
2022-06-25 12:16:21 +00:00
{
uint32_t tmp47 = in0.HeaderMap.size();
char tmp48[4];
tmp48[0] = (uint32_t(tmp47) >> 24) & 0xFF;
tmp48[1] = (uint32_t(tmp47) >> 16) & 0xFF;
tmp48[2] = (uint32_t(tmp47) >> 8) & 0xFF;
tmp48[3] = (uint32_t(tmp47) >> 0) & 0xFF;
in.append(tmp48, 4);
for(std::map<std::string, std::vector<std::string>>::iterator tmp49 = in0.HeaderMap.begin(); tmp49 != in0.HeaderMap.end(); ++tmp49) {
{
uint32_t tmp50 = tmp49->first.length();
char tmp51[4];
tmp51[0] = (uint32_t(tmp50) >> 24) & 0xFF;
tmp51[1] = (uint32_t(tmp50) >> 16) & 0xFF;
tmp51[2] = (uint32_t(tmp50) >> 8) & 0xFF;
tmp51[3] = (uint32_t(tmp50) >> 0) & 0xFF;
in.append(tmp51, 4);
in.append(tmp49->first);
}
{
uint32_t tmp52 = tmp49->second.size();
char tmp53[4];
tmp53[0] = (uint32_t(tmp52) >> 24) & 0xFF;
tmp53[1] = (uint32_t(tmp52) >> 16) & 0xFF;
tmp53[2] = (uint32_t(tmp52) >> 8) & 0xFF;
tmp53[3] = (uint32_t(tmp52) >> 0) & 0xFF;
in.append(tmp53, 4);
for (uint32_t tmp54=0; tmp54 < tmp52; ++tmp54) {
{
uint32_t tmp55 = tmp49->second[tmp54].length();
char tmp56[4];
tmp56[0] = (uint32_t(tmp55) >> 24) & 0xFF;
tmp56[1] = (uint32_t(tmp55) >> 16) & 0xFF;
tmp56[2] = (uint32_t(tmp55) >> 8) & 0xFF;
tmp56[3] = (uint32_t(tmp55) >> 0) & 0xFF;
in.append(tmp56, 4);
in.append(tmp49->second[tmp54]);
}
}
}
}
}
2022-05-15 03:05:31 +00:00
}
char *out = NULL;
int outLen = 0;
Go2cppFn_RunDownload((char *)in.data(), in.length(), &out, &outLen);
RunDownload_Resp retValue;
int outIdx = 0;
{
{
2022-06-25 12:16:21 +00:00
uint32_t tmp57 = 0;
uint32_t tmp58 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp59 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp60 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp61 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp57 = tmp58 | tmp59 | tmp60 | tmp61;
2022-05-15 03:05:31 +00:00
outIdx+=4;
2022-06-25 12:16:21 +00:00
retValue.ErrMsg = std::string(out+outIdx, out+outIdx+tmp57);
outIdx+=tmp57;
2022-05-15 03:05:31 +00:00
}
2022-06-20 23:22:53 +00:00
retValue.IsSkipped = (bool) out[outIdx];
outIdx++;
retValue.IsCancel = (bool) out[outIdx];
outIdx++;
{
2022-06-25 12:16:21 +00:00
uint32_t tmp62 = 0;
uint32_t tmp63 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp64 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp65 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp66 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp62 = tmp63 | tmp64 | tmp65 | tmp66;
2022-06-20 23:22:53 +00:00
outIdx+=4;
2022-06-25 12:16:21 +00:00
retValue.SaveFileTo = std::string(out+outIdx, out+outIdx+tmp62);
outIdx+=tmp62;
2022-06-20 23:22:53 +00:00
}
2022-05-15 03:05:31 +00:00
}
if (out != NULL) {
free(out);
}
return retValue;
}
2022-06-12 14:43:20 +00:00
void CloseOldEnv(){
std::string in;
char *out = NULL;
int outLen = 0;
Go2cppFn_CloseOldEnv((char *)in.data(), in.length(), &out, &outLen);
if (out != NULL) {
free(out);
}
}
2022-06-19 23:32:53 +00:00
GetProgress_Resp GetProgress(){
2022-05-15 03:05:31 +00:00
std::string in;
char *out = NULL;
int outLen = 0;
Go2cppFn_GetProgress((char *)in.data(), in.length(), &out, &outLen);
2022-06-19 23:32:53 +00:00
GetProgress_Resp retValue;
2022-05-15 03:05:31 +00:00
int outIdx = 0;
{
2022-06-19 23:32:53 +00:00
{
uint32_t tmp3 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp4 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp5 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp6 = uint32_t(uint8_t(out[outIdx+3]) << 0);
retValue.Percent = tmp3 | tmp4 | tmp5 | tmp6;
outIdx+=4;
}
{
uint32_t tmp7 = 0;
uint32_t tmp8 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp9 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp10 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp11 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp7 = tmp8 | tmp9 | tmp10 | tmp11;
outIdx+=4;
retValue.Title = std::string(out+outIdx, out+outIdx+tmp7);
outIdx+=tmp7;
}
2022-05-15 03:05:31 +00:00
}
if (out != NULL) {
free(out);
}
return retValue;
}
std::string GetWd(){
std::string in;
char *out = NULL;
int outLen = 0;
Go2cppFn_GetWd((char *)in.data(), in.length(), &out, &outLen);
std::string retValue;
int outIdx = 0;
{
uint32_t tmp2 = 0;
uint32_t tmp3 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp4 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp5 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp6 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp2 = tmp3 | tmp4 | tmp5 | tmp6;
outIdx+=4;
retValue = std::string(out+outIdx, out+outIdx+tmp2);
outIdx+=tmp2;
}
if (out != NULL) {
free(out);
}
return retValue;
}
2022-06-25 12:16:21 +00:00
ParseCurl_Resp ParseCurlStr(std::string in0){
std::string in;
{
uint32_t tmp19 = in0.length();
char tmp20[4];
tmp20[0] = (uint32_t(tmp19) >> 24) & 0xFF;
tmp20[1] = (uint32_t(tmp19) >> 16) & 0xFF;
tmp20[2] = (uint32_t(tmp19) >> 8) & 0xFF;
tmp20[3] = (uint32_t(tmp19) >> 0) & 0xFF;
in.append(tmp20, 4);
in.append(in0);
}
char *out = NULL;
int outLen = 0;
Go2cppFn_ParseCurlStr((char *)in.data(), in.length(), &out, &outLen);
ParseCurl_Resp retValue;
int outIdx = 0;
{
{
uint32_t tmp21 = 0;
uint32_t tmp22 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp23 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp24 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp25 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp21 = tmp22 | tmp23 | tmp24 | tmp25;
outIdx+=4;
retValue.ErrMsg = std::string(out+outIdx, out+outIdx+tmp21);
outIdx+=tmp21;
}
{
{
uint32_t tmp26 = 0;
uint32_t tmp27 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp28 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp29 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp30 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp26 = tmp27 | tmp28 | tmp29 | tmp30;
outIdx+=4;
retValue.DownloadReq.M3u8Url = std::string(out+outIdx, out+outIdx+tmp26);
outIdx+=tmp26;
}
{
uint32_t tmp31 = 0;
uint32_t tmp32 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp33 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp34 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp35 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp31 = tmp32 | tmp33 | tmp34 | tmp35;
outIdx+=4;
retValue.DownloadReq.HostType = std::string(out+outIdx, out+outIdx+tmp31);
outIdx+=tmp31;
}
retValue.DownloadReq.Insecure = (bool) out[outIdx];
outIdx++;
{
uint32_t tmp36 = 0;
uint32_t tmp37 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp38 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp39 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp40 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp36 = tmp37 | tmp38 | tmp39 | tmp40;
outIdx+=4;
retValue.DownloadReq.SaveDir = std::string(out+outIdx, out+outIdx+tmp36);
outIdx+=tmp36;
}
{
uint32_t tmp41 = 0;
uint32_t tmp42 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp43 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp44 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp45 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp41 = tmp42 | tmp43 | tmp44 | tmp45;
outIdx+=4;
retValue.DownloadReq.FileName = std::string(out+outIdx, out+outIdx+tmp41);
outIdx+=tmp41;
}
{
uint32_t tmp46 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp47 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp48 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp49 = uint32_t(uint8_t(out[outIdx+3]) << 0);
retValue.DownloadReq.SkipTsCountFromHead = tmp46 | tmp47 | tmp48 | tmp49;
outIdx+=4;
}
{
uint32_t tmp50 = 0;
uint32_t tmp51 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp52 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp53 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp54 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp50 = tmp51 | tmp52 | tmp53 | tmp54;
outIdx+=4;
retValue.DownloadReq.SetProxy = std::string(out+outIdx, out+outIdx+tmp50);
outIdx+=tmp50;
}
{
uint32_t tmp55 = 0;
uint32_t tmp56 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp57 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp58 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp59 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp55 = tmp56 | tmp57 | tmp58 | tmp59;
outIdx+=4;
for (uint32_t tmp60 = 0; tmp60 < tmp55; tmp60++) {
std::string tmp61;
{
uint32_t tmp62 = 0;
uint32_t tmp63 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp64 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp65 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp66 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp62 = tmp63 | tmp64 | tmp65 | tmp66;
outIdx+=4;
tmp61 = std::string(out+outIdx, out+outIdx+tmp62);
outIdx+=tmp62;
}
std::vector<std::string> tmp67;
{
uint32_t tmp68 = 0;
uint32_t tmp69 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp70 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp71 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp72 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp68 = tmp69 | tmp70 | tmp71 | tmp72;
outIdx+=4;
for (uint32_t tmp73 = 0; tmp73 < tmp68; tmp73++) {
std::string tmp74;
{
uint32_t tmp75 = 0;
uint32_t tmp76 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp77 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp78 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp79 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp75 = tmp76 | tmp77 | tmp78 | tmp79;
outIdx+=4;
tmp74 = std::string(out+outIdx, out+outIdx+tmp75);
outIdx+=tmp75;
}
tmp67.push_back(tmp74);
}
}
retValue.DownloadReq.HeaderMap[tmp61] = tmp67;
}
}
}
}
if (out != NULL) {
free(out);
}
return retValue;
}
std::string RunDownload_Req_ToCurlStr(RunDownload_Req in0){
std::string in;
{
{
uint32_t tmp33 = in0.M3u8Url.length();
char tmp34[4];
tmp34[0] = (uint32_t(tmp33) >> 24) & 0xFF;
tmp34[1] = (uint32_t(tmp33) >> 16) & 0xFF;
tmp34[2] = (uint32_t(tmp33) >> 8) & 0xFF;
tmp34[3] = (uint32_t(tmp33) >> 0) & 0xFF;
in.append(tmp34, 4);
in.append(in0.M3u8Url);
}
{
uint32_t tmp35 = in0.HostType.length();
char tmp36[4];
tmp36[0] = (uint32_t(tmp35) >> 24) & 0xFF;
tmp36[1] = (uint32_t(tmp35) >> 16) & 0xFF;
tmp36[2] = (uint32_t(tmp35) >> 8) & 0xFF;
tmp36[3] = (uint32_t(tmp35) >> 0) & 0xFF;
in.append(tmp36, 4);
in.append(in0.HostType);
}
in.append((char*)(&in0.Insecure), 1);
{
uint32_t tmp37 = in0.SaveDir.length();
char tmp38[4];
tmp38[0] = (uint32_t(tmp37) >> 24) & 0xFF;
tmp38[1] = (uint32_t(tmp37) >> 16) & 0xFF;
tmp38[2] = (uint32_t(tmp37) >> 8) & 0xFF;
tmp38[3] = (uint32_t(tmp37) >> 0) & 0xFF;
in.append(tmp38, 4);
in.append(in0.SaveDir);
}
{
uint32_t tmp39 = in0.FileName.length();
char tmp40[4];
tmp40[0] = (uint32_t(tmp39) >> 24) & 0xFF;
tmp40[1] = (uint32_t(tmp39) >> 16) & 0xFF;
tmp40[2] = (uint32_t(tmp39) >> 8) & 0xFF;
tmp40[3] = (uint32_t(tmp39) >> 0) & 0xFF;
in.append(tmp40, 4);
in.append(in0.FileName);
}
{
char tmp41[4];
tmp41[0] = (uint32_t(in0.SkipTsCountFromHead) >> 24) & 0xFF;
tmp41[1] = (uint32_t(in0.SkipTsCountFromHead) >> 16) & 0xFF;
tmp41[2] = (uint32_t(in0.SkipTsCountFromHead) >> 8) & 0xFF;
tmp41[3] = (uint32_t(in0.SkipTsCountFromHead) >> 0) & 0xFF;
in.append(tmp41, 4);
}
{
uint32_t tmp42 = in0.SetProxy.length();
char tmp43[4];
tmp43[0] = (uint32_t(tmp42) >> 24) & 0xFF;
tmp43[1] = (uint32_t(tmp42) >> 16) & 0xFF;
tmp43[2] = (uint32_t(tmp42) >> 8) & 0xFF;
tmp43[3] = (uint32_t(tmp42) >> 0) & 0xFF;
in.append(tmp43, 4);
in.append(in0.SetProxy);
}
{
uint32_t tmp44 = in0.HeaderMap.size();
char tmp45[4];
tmp45[0] = (uint32_t(tmp44) >> 24) & 0xFF;
tmp45[1] = (uint32_t(tmp44) >> 16) & 0xFF;
tmp45[2] = (uint32_t(tmp44) >> 8) & 0xFF;
tmp45[3] = (uint32_t(tmp44) >> 0) & 0xFF;
in.append(tmp45, 4);
for(std::map<std::string, std::vector<std::string>>::iterator tmp46 = in0.HeaderMap.begin(); tmp46 != in0.HeaderMap.end(); ++tmp46) {
{
uint32_t tmp47 = tmp46->first.length();
char tmp48[4];
tmp48[0] = (uint32_t(tmp47) >> 24) & 0xFF;
tmp48[1] = (uint32_t(tmp47) >> 16) & 0xFF;
tmp48[2] = (uint32_t(tmp47) >> 8) & 0xFF;
tmp48[3] = (uint32_t(tmp47) >> 0) & 0xFF;
in.append(tmp48, 4);
in.append(tmp46->first);
}
{
uint32_t tmp49 = tmp46->second.size();
char tmp50[4];
tmp50[0] = (uint32_t(tmp49) >> 24) & 0xFF;
tmp50[1] = (uint32_t(tmp49) >> 16) & 0xFF;
tmp50[2] = (uint32_t(tmp49) >> 8) & 0xFF;
tmp50[3] = (uint32_t(tmp49) >> 0) & 0xFF;
in.append(tmp50, 4);
for (uint32_t tmp51=0; tmp51 < tmp49; ++tmp51) {
{
uint32_t tmp52 = tmp46->second[tmp51].length();
char tmp53[4];
tmp53[0] = (uint32_t(tmp52) >> 24) & 0xFF;
tmp53[1] = (uint32_t(tmp52) >> 16) & 0xFF;
tmp53[2] = (uint32_t(tmp52) >> 8) & 0xFF;
tmp53[3] = (uint32_t(tmp52) >> 0) & 0xFF;
in.append(tmp53, 4);
in.append(tmp46->second[tmp51]);
}
}
}
}
}
}
char *out = NULL;
int outLen = 0;
Go2cppFn_RunDownload_Req_ToCurlStr((char *)in.data(), in.length(), &out, &outLen);
std::string retValue;
int outIdx = 0;
{
uint32_t tmp54 = 0;
uint32_t tmp55 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp56 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp57 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp58 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp54 = tmp55 | tmp56 | tmp57 | tmp58;
outIdx+=4;
retValue = std::string(out+outIdx, out+outIdx+tmp54);
outIdx+=tmp54;
}
if (out != NULL) {
free(out);
}
return retValue;
}
2022-05-15 03:05:31 +00:00
// Qt:
#include <QMutexLocker>
#include <QtConcurrent/QtConcurrent>
RunOnUiThread::RunOnUiThread(QObject *parent) : QObject(parent), m_done(false)
{
// 用signal里的Qt::QueuedConnection 将多线程里面的函数转化到ui线程里调用
connect(this, SIGNAL(signal_newFn()), this, SLOT(slot_newFn()), Qt::QueuedConnection);
}
RunOnUiThread::~RunOnUiThread()
{
{
QMutexLocker lk(&this->m_Mutex);
this->m_done = true;
this->m_funcList.clear();
}
this->m_pool.clear();
this->m_pool.waitForDone();
}
void RunOnUiThread::AddRunFnOn_OtherThread(std::function<void ()> fn)
{
QMutexLocker lk(&this->m_Mutex);
if (this->m_done) {
return;
}
QtConcurrent::run(&this->m_pool, fn);
}
void RunOnUiThread::slot_newFn()
{
QVector<std::function<void ()>> fn_vector;
{
QMutexLocker lk(&this->m_Mutex);
if (this->m_funcList.empty() || this->m_done) {
return;
}
fn_vector.swap(this->m_funcList);
}
for(std::function<void ()>& fn : fn_vector)
{
bool v_done = false;
{
QMutexLocker lk(&this->m_Mutex);
v_done = this->m_done;
}
if (v_done) { // 快速结束
return;
}
fn();
}
}
void RunOnUiThread::AddRunFnOn_UiThread(std::function<void ()> fn)
{
{
QMutexLocker lk(&this->m_Mutex);
if (this->m_done) {
return;
}
m_funcList.push_back(fn);
}
emit this->signal_newFn();
}
#include <QTimer>
#include <QLabel>
#include <QWidget>
#include <QPropertyAnimation>
#include <QPainter>
#include <QScreen>
#include <QHBoxLayout>
#include <QDesktopWidget>
#include <QApplication>
QString StringToRGBA(const QString &color);
Toast::Toast(QObject *parent) : QObject(parent)
{
m_myWidget = new QWidget;
m_myWidget->setFixedHeight(60);
m_label = new QLabel;
m_label->setFixedHeight(30);
m_label->move(0,0);
QFont ft;
ft.setPointSize(10);
m_label->setFont(ft);
m_label->setAlignment(Qt::AlignCenter);
m_label->setStyleSheet("color:white");
m_myWidget->setStyleSheet("border: none;background-color:black;border-radius:10px");
QHBoxLayout * la = new QHBoxLayout;
la->addWidget(m_label);
la->setContentsMargins(0,0,0,0);
m_myWidget->setLayout(la);
m_myWidget->hide();
m_myWidget->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
m_myWidget->setAttribute(Qt::WA_TranslucentBackground,true);
m_timer = new QTimer();
m_timer->setInterval(3000);
connect(m_timer,SIGNAL(timeout()),this,SLOT(onTimerStayOut()));
}
Toast *Toast::Instance()
{
static Toast instance;
return &instance;
}
void Toast::setText(const QString &color,const QString &bgcolor,const int & mestime,const QString &text){
QApplication::beep();
QFontMetrics fm(m_label->font());
int width = fm.boundingRect(text).width() + 30;
m_myWidget->setFixedWidth(width);
m_label->setFixedWidth(width);
m_label->setText(text);
QString style = QString("color:").append(StringToRGBA(color));
m_label->setStyleSheet(style);
m_myWidget->setStyleSheet(QString("border: none;border-radius:10px;")
.append("background-color:").append(StringToRGBA(bgcolor)));
QDesktopWidget *pDesk = QApplication::desktop();
m_myWidget->move((pDesk->width() - m_myWidget->width()) / 2, (pDesk->height() - m_myWidget->height()) / 2);
m_myWidget->show();
m_timer->setInterval(mestime);
m_timer->stop();
m_timer->start();
}
void Toast::SetError(const QString &text,const int & mestime){
setText("FFFFFF","FF0000",mestime,text);
}
void Toast::SetSuccess(const QString &text,const int & mestime){
setText("000000","00FF00",mestime,text);
}
void Toast::SetWaring(const QString &text,const int & mestime){
setText("FF0000","FFFF00",mestime,text);
}
void Toast::SetTips(const QString &text,const int & mestime){
setText("FFFFFF","0080FF",mestime,text);
}
QString StringToRGBA(const QString &color){
int r = color.mid(0,2).toInt(nullptr,16);
int g = color.mid(2,2).toInt(nullptr,16);
int b = color.mid(4,2).toInt(nullptr,16);
int a = color.length()>=8?color.mid(6,2).toInt(nullptr,16):QString("FF").toInt(nullptr,16);
QString style = QString("rgba(").append(QString::number(r)).append(",")
.append(QString::number(g)).append(",")
.append(QString::number(b)).append(",")
.append(QString::number(a))
.append(");");
return style;
}
void Toast::onTimerStayOut()
{
m_timer->stop();
m_myWidget->hide();
}