open source

This commit is contained in:
lvfulong
2020-11-11 16:17:13 +08:00
parent 4d989f3ecb
commit bc4ca748de
2441 changed files with 623057 additions and 2 deletions
@@ -0,0 +1,142 @@
/**
@file JsBlob.h
@brief
@author James
@version 1.0
@date 2017_11_28
*/
#ifndef __JsBlob_H__
#define __JsBlob_H__
#include "../JSInterface/JSInterface.h"
#include <stdio.h>
#include <string.h>
namespace laya
{
class JsBlob : public JsObjBase, public JSObjNode
{
public:
JsBlob()
{
m_pBuffer = 0;
m_i64Size = 0;
m_pszType = 0;
SetType("text/plain");
}
JsBlob(void *p_pData, size_t p_iSize, const char *p_pszType = 0)
{
m_pBuffer = 0;
m_i64Size = 0;
m_pszType = 0;
SetData(p_pData, p_iSize);
SetType(p_pszType);
if (0 == m_pszType) SetType("text/plain");
}
~JsBlob()
{
if (0 != m_pBuffer)
{
delete[] m_pBuffer;
m_pBuffer = 0;
}
if (0 != m_pszType)
{
delete[] m_pszType;
m_pszType = 0;
}
}
uint64_t GetSize()
{
return m_i64Size;
}
void close()
{
SetData(0, 0);
}
void Allocate(size_t p_iSize)
{
if (0 != m_pBuffer)
{
delete[] m_pBuffer;
m_pBuffer = 0;
}
m_i64Size = 0;
if (p_iSize > 0)
{
m_pBuffer = new char[p_iSize];
m_i64Size = p_iSize;
}
}
void SetData(const void *p_pData, size_t p_iLen)
{
if (0 != m_pBuffer)
{
delete[] m_pBuffer;
m_pBuffer = 0;
}
m_i64Size = 0;
if (0 != p_pData && 0 != p_iLen)
{
m_pBuffer = new char[p_iLen];
memcpy(m_pBuffer, p_pData, p_iLen);
m_i64Size = p_iLen;
}
}
JsValue slice(uint64_t p_iBegin = 0, uint64_t p_iEnd = -1)
{
return JSP_TO_JS_NULL;
}
const char *GetType()
{
return (0 == m_pszType) ? "" : m_pszType;
}
void SetType(const char *p_pszType)
{
if (0 != m_pszType)
{
delete[] m_pszType;
m_pszType = 0;
}
size_t len;
if (0 != p_pszType && 0 != (len = strlen(p_pszType)))
{
m_pszType = new char[len + 1];
memcpy(m_pszType, p_pszType, len + 1);
JsBlob::ToLowerString(m_pszType);
}
}
protected:
static char *ToLowerString(char *p_pszStr)
{
static const char __cdis = 'a' - 'A';
char *pBegin = p_pszStr;
for (; 0 != *pBegin; pBegin++)
{
if (*pBegin >= 'A' && *pBegin <= 'Z')
*pBegin += __cdis;
}
return p_pszStr;
}
public:
static JsObjClassInfo JSCLSINFO;
friend class JsFileReader;
protected:
char* m_pBuffer;
uint64_t m_i64Size;
char* m_pszType;
};
}
//------------------------------------------------------------------------------
#endif //__JsBlob_H__
//-----------------------------END FILE--------------------------------