代码拉取完成,页面将自动刷新
#include <cpps/cpps.h>
#include <iostream>
#include <string>
#include <fstream>
#ifndef _WIN32
#include <uuid/uuid.h>
#else
#include <objbase.h>
#endif
#define GUID_LEN 128
using namespace cpps;
using namespace std;
class cpps_uuid
{
public:
unsigned int Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
void constructor(object _p) {
if (_p.isstring()) {
sscanf(_p.tostring().c_str(),
"%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X",
(unsigned int*)&Data1, (unsigned int*)&Data2, (unsigned int*)&Data3,
(unsigned int*)&Data4[0], (unsigned int*)&Data4[1], (unsigned int*)&Data4[2],
(unsigned int*)&Data4[3], (unsigned int*)&Data4[4], (unsigned int*)&Data4[5],
(unsigned int*)&Data4[6], (unsigned int*)&Data4[7]);
}
else {
init();
}
}
void init() {
#ifdef _WIN32
GUID guid;
if (CoCreateGuid(&guid) != NULL)
{
return;
}
memcpy(this, &guid, sizeof(guid));
#else
uuid_t uuid;
uuid_generate(uuid);
memcpy(this, uuid, sizeof(cpps_uuid));
#endif
}
std::string tostring() {
char buffer[GUID_LEN] = { 0 };
sprintf(buffer,
"%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X",
Data1, Data2, Data3,
Data4[0], Data4[1], Data4[2],
Data4[3], Data4[4], Data4[5],
Data4[6], Data4[7]);
return buffer;
}
};
cpps_value cpps_uuid_create(C*c) {
cpps_uuid* ret_uuid;
cpps_value ret;
newclass<cpps_uuid>(c, &ret_uuid,&ret);
ret_uuid->init();
return ret;
}
std::string cpps_uuid_uuid4() {
cpps_uuid uuid;
uuid.init();
return uuid.tostring();
}
cpps_export_void cpps_attach(cpps::C* c)
{
cpps::cpps_init_cpps_class(c);
cpps::_module(c, "uuid")[
_class<cpps_uuid>("UUID")
.def("constructor", &cpps_uuid::constructor)
.def("tostring", &cpps_uuid::tostring),
def_inside("create", cpps_uuid_create),
def("uuid4", cpps_uuid_uuid4)
];
}
cpps_export_void cpps_detach(cpps::C * c)
{
cpps::_unmodule(c, "uuid");
}
cpps_export_finish
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。