#include <cpps/cpps.h>#include <iostream>#include <string>#include <fstream>#ifndef _WIN32#include <uuid/uuid.h>#else#include <objbase.h>#endif#define GUID_LEN 128using 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 _WIN32GUID guid;if (CoCreateGuid(&guid) != NULL){return;}memcpy(this, &guid, sizeof(guid));#elseuuid_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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型