Fixed intrinsic issue

Signed-off-by: xdmal <maxiaodong16@huawei.com>
This commit is contained in:
xdmal
2022-03-25 16:31:14 +08:00
parent fd71824c7a
commit e79543faaa
14 changed files with 693 additions and 282 deletions
+1 -1
View File
@@ -605,4 +605,4 @@ namespace OHOS::Xml {
curNode = curNode->next;
}
}
} // namespace
} // namespace OHOS::Xml
+38 -8
View File
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef FOUNDATION_ACE_CCRUNTIME_CONVERT_XML_CLASS_H
#define FOUNDATION_ACE_CCRUNTIME_CONVERT_XML_CLASS_H
#ifndef CONVERTXML_JS_CONVERTXML_H_
#define CONVERTXML_JS_CONVERTXML_H_
#include <string>
#include <vector>
@@ -70,18 +70,48 @@ namespace OHOS::Xml {
class ConvertXml {
public:
/**
* To convert XML text to JavaScript object.
*
* @param env NAPI environment parameters.
*/
explicit ConvertXml(napi_env env);
/**
* The destructor of the ConvertXml.
*/
virtual ~ConvertXml() {}
/**
* To convert XML text to JavaScript object.
*
* @param strXml A string of XML text.
*/
napi_value Convert(std::string strXml);
/**
* Converts the string of js to string of C++.
*
* @param napi_StrValue JS layer incoming stringing.
* @param result The C++ layer accepts stringing.
*/
napi_status DealNapiStrValue(const napi_value napi_StrValue, std::string &result) const;
/**
* Handles user input of optional information
*
* @param napiObj Get the option parameter from js to the napi layer
*/
void DealOptions(const napi_value napiObj);
private:
void SetAttributes(xmlNodePtr curNode, const napi_value &elementsObject) const;
void SetXmlElementType(xmlNodePtr curNode, const napi_value &elementsObject, bool &bFlag) const;
void SetNodeInfo(xmlNodePtr curNode, const napi_value &elementsObject) const;
void SetEndInfo(xmlNodePtr curNode, const napi_value &elementsObject, bool &bFlag) const;
void GetXMLInfo(xmlNodePtr curNode, const napi_value &object, int flag = 0);
napi_value Convert(std::string strXml);
std::string GetNodeType(const xmlElementType enumType) const;
napi_status DealNapiStrValue(const napi_value napi_StrValue, std::string &result) const;
void SetKeyValue(const napi_value &object, const std::string strKey, const std::string strValue) const;
void DealOptions(const napi_value napiObj);
std::string Trim(std::string strXmltrim) const;
void GetPrevNodeList(xmlNodePtr curNode);
void DealSpaces(const napi_value napiObj);
@@ -93,7 +123,7 @@ namespace OHOS::Xml {
void DealComplex(std::string &strXml, const napi_value &object) const;
void Replace(std::string &str, const std::string src, const std::string dst) const;
void DealCDataInfo(bool bCData, xmlNodePtr &curNode) const;
private:
napi_env env_;
SpaceType spaceType_;
int32_t iSpace_;
@@ -102,5 +132,5 @@ namespace OHOS::Xml {
std::vector<napi_value> prevObj_;
XmlInfo xmlInfo_;
};
} // namespace
#endif
} // namespace OHOS::Xml
#endif // CONVERTXML_JS_CONVERTXML_H_
+5 -5
View File
@@ -32,8 +32,8 @@ namespace OHOS::Xml {
auto objectInfo = new ConvertXml(env);
napi_wrap(
env, thisVar, objectInfo,
[](napi_env env_, void *data, void *hint) {
auto obj = (ConvertXml*)data;
[](napi_env environment, void *data, void *hint) {
auto obj = reinterpret_cast<ConvertXml*>(data);
if (obj != nullptr) {
delete obj;
}
@@ -94,11 +94,11 @@ namespace OHOS::Xml {
.nm_filename = nullptr,
.nm_register_func = ConvertXmlInit,
.nm_modname = "ConvertXML",
.nm_priv = ((void*)0),
.nm_priv = reinterpret_cast<void*>(0),
.reserved = { 0 },
};
extern "C" __attribute__ ((constructor)) void RegisterModule()
extern "C" __attribute__((constructor)) void RegisterModule()
{
napi_module_register(&convertXmlModule);
}
@@ -123,4 +123,4 @@ namespace OHOS::Xml {
*buflen = _binary_convertxml_abc_end - _binary_convertxml_abc_start;
}
}
} // namespace
} // namespace OHOS::Xml
+3 -3
View File
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef FOUNDATION_ACE_NAPI_TEST_UNITTEST_TEST_H
#define FOUNDATION_ACE_NAPI_TEST_UNITTEST_TEST_H
#ifndef TEST_URI_UNITTEST_TEST_H_
#define TEST_URI_UNITTEST_TEST_H_
#include "native_engine.h"
@@ -30,4 +30,4 @@ protected:
NativeEngine *engine_;
};
#endif /* FOUNDATION_ACE_NAPI_TEST_UNITTEST_TEST_H */
#endif // TEST_URI_UNITTEST_TEST_H_
+3 -3
View File
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef FOUNDATION_ACE_NAPI_TEST_UNITTEST_TEST_H
#define FOUNDATION_ACE_NAPI_TEST_UNITTEST_TEST_H
#ifndef TEST_XML_UNITTEST_TEST_H_
#define TEST_XML_UNITTEST_TEST_H_
#include "native_engine.h"
@@ -30,4 +30,4 @@ protected:
NativeEngine *engine_;
};
#endif /* FOUNDATION_ACE_NAPI_TEST_UNITTEST_TEST_H */
#endif // TEST_XML_UNITTEST_TEST_H_
+2 -2
View File
@@ -119,7 +119,7 @@ namespace OHOS::Uri {
if (!errStr_.empty()) {
return;
}
} else if (data_.find('/') == 0) {
} else if (data_[0] == '/') {
uriData_.path = data_;
uriData_.SchemeSpecificPart = data_ + uriData_.query;
data_ = "";
@@ -531,4 +531,4 @@ namespace OHOS::Uri {
}
return uriData_.fragment;
}
} // namespace
} // namespace OHOS::Uri
+72 -4
View File
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef COMPILERUNTIME_JS_API_URI_H
#define COMPILERUNTIME_JS_API_URI_H
#ifndef URI_JS_URI_H_
#define URI_JS_URI_H_
#include <bitset>
#include <cstdlib>
@@ -40,24 +40,91 @@ namespace OHOS::Uri {
class Uri {
public:
/**
* URI constructor, which is used to instantiate a URI object.
*
* @param env NAPI environment parameters.
* @param input Constructs a URI by parsing a given string.
*/
Uri(napi_env env, const std::string input);
/**
* The destructor of the Uri.
*/
virtual ~Uri() {}
/**
* Tests whether this URI is equivalent to other URI objects.
*
* @param other URI object to be compared
*/
bool Equals(const Uri other) const;
/**
* Indicates whether this URI is an absolute URI.
*/
bool IsAbsolute() const;
/**
* Determine whether parsing failed.
*/
std::string IsFailed() const;
/**
* Returns the serialized URI as a string.
*/
std::string ToString() const;
/**
* Normalize the path of this URI.
*/
std::string Normalize() const;
/**
* Gets the protocol part of the URI.
*/
std::string GetScheme() const;
/**
* Gets the decoding permission component part of this URI.
*/
std::string GetAuthority() const;
/**
* Gets the decoding scheme-specific part of the URI.
*/
std::string GetSsp() const;
/**
* Obtains the user information part of the URI.
*/
std::string GetUserinfo() const;
/**
* Gets the hostname portion of the URI without a port.
*/
std::string GetHost() const;
/**
* Gets the hostname portion of the URI without a port.
*/
std::string GetPort() const;
/**
* Gets the path portion of the URI.
*/
std::string GetPath() const;
/**
* Gets the query portion of the URI.
*/
std::string GetQuery() const;
/**
* Gets the fragment part of the URI.
*/
std::string GetFragment() const;
private:
void PreliminaryWork() const;
void AnalysisUri();
@@ -75,6 +142,7 @@ namespace OHOS::Uri {
bool AnalysisIPV4();
std::string Split(std::string path) const;
private:
UriData uriData_;
std::string data_;
@@ -82,5 +150,5 @@ namespace OHOS::Uri {
std::string errStr_;
napi_env env_ = nullptr;
};
} // namespace
#endif /* COMPILERUNTIME_JS_API_URI_H */
} // namespace OHOS::Uri
#endif // URI_JS_URI_H_
+13 -17
View File
@@ -32,31 +32,27 @@ namespace OHOS::Uri {
size_t argc = 1;
napi_value argv[1] = { 0 };
Uri *object = nullptr;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, &data));
napi_valuetype valuetype;
NAPI_CALL(env, napi_typeof(env, argv[0], &valuetype));
if (valuetype == napi_string) {
char *type = nullptr;
std::string type = "";
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
delete[] type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
object = new Uri(env, input);
type.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], type.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
object = new Uri(env, type);
} else {
napi_throw_error(env, nullptr, "parameter type is error");
}
NAPI_CALL(env, napi_wrap(env, thisVar, object,
[](napi_env env_, void *data, void *hint) {
[](napi_env environment, void *data, void *hint) {
auto obj = reinterpret_cast<Uri*>(data);
if (obj != nullptr) {
delete obj;
@@ -287,7 +283,7 @@ namespace OHOS::Uri {
.nm_filename = nullptr,
.nm_register_func = UriInit,
.nm_modname = "uri",
.nm_priv = ((void*)0),
.nm_priv = reinterpret_cast<void*>(0),
.reserved = {0},
};
extern "C" __attribute__((constructor)) void RegisterModule()
@@ -314,4 +310,4 @@ namespace OHOS::Uri {
*buflen = _binary_uri_abc_end - _binary_uri_abc_start;
}
}
} // namespace
} // namespace OHOS::Uri
+31 -35
View File
@@ -220,9 +220,9 @@ namespace OHOS::Url {
}
if (userAndPasswd.find(':') != std::string::npos) {
size_t pos_ = userAndPasswd.find(':');
std::string user = userAndPasswd.substr(0, pos_);
std::string keyWord = userAndPasswd.substr(pos_ + 1);
size_t position = userAndPasswd.find(':');
std::string user = userAndPasswd.substr(0, position);
std::string keyWord = userAndPasswd.substr(position + 1);
if (!user.empty()) {
username = user;
flags.set(static_cast<size_t>(BitsetStatusFlag::BIT2));
@@ -849,9 +849,10 @@ namespace OHOS::Url {
}
size_t i = 0;
bool special = false;
std::string strHost = "";
if (hostandpath.find('/') != std::string::npos) {
i = hostandpath.find('/');
std::string strHost = hostandpath.substr(0, i);
strHost = hostandpath.substr(0, i);
std::string strPath = hostandpath.substr(i + 1);
if (strHost.find('@') != std::string::npos) {
AnalysisUsernameAndPasswd(strHost, urlinfo.username, urlinfo.password, flags);
@@ -873,14 +874,14 @@ namespace OHOS::Url {
AnalysisHost(strHost, urlinfo.host, flags, special);
AnalysisPath(strPath, urlinfo.path, flags, special);
} else {
std::string strHost_ = hostandpath;
AnalyStrHost(strHost_, urlinfo, flags);
AnalyHostPath(strHost_, flags, urlinfo);
AnalysisHost(strHost_, urlinfo.host, flags, special);
strHost = hostandpath;
AnalyStrHost(strHost, urlinfo, flags);
AnalyHostPath(strHost, flags, urlinfo);
AnalysisHost(strHost, urlinfo.host, flags, special);
}
} else if (input[1] == '/') {
std::string strPath_ = input.substr(1);
AnalysisPath(strPath_, urlinfo.path, flags, false);
std::string strOfPath = input.substr(1);
AnalysisPath(strOfPath, urlinfo.path, flags, false);
} else {
AnalyInfoPath(flags, urlinfo, input);
}
@@ -972,17 +973,18 @@ namespace OHOS::Url {
void AnalysisInput(std::string& input, UrlData& urlData,
std::bitset<static_cast<size_t>(BitsetStatusFlag::BIT_STATUS_11)>& flags)
{
size_t pos = 0;
if (input.find('#') != std::string::npos) {
size_t pos = input.find('#');
pos = input.find('#');
std::string fragment = input.substr(pos);
AnalysisFragment(fragment, urlData.fragment, flags);
input = input.substr(0, pos);
}
if (input.find('?') != std::string::npos) {
size_t pos_ = input.find('?');
std::string query = input.substr(pos_);
pos = input.find('?');
std::string query = input.substr(pos);
AnalysisQuery(query, urlData.query, flags);
input = input.substr(0, pos_);
input = input.substr(0, pos);
}
bool special = (flags.test(static_cast<size_t>(BitsetStatusFlag::BIT1)) ? true : false);
AnalysisPath(input, urlData.path, flags, special);
@@ -1055,10 +1057,10 @@ namespace OHOS::Url {
input = input.substr(0, pos);
}
if (input.find('?') != std::string::npos) {
size_t pos_ = input.find('?');
std::string query = input.substr(pos_);
size_t position = input.find('?');
std::string query = input.substr(position);
AnalysisQuery(query, urlData.query, flags);
input = input.substr(0, pos_);
input = input.substr(0, position);
}
std::string str = input.substr(pos);
if (urlData.scheme == "file:") {
@@ -1659,8 +1661,8 @@ namespace OHOS::Url {
}
reviseChar[0x20] = "+"; // 0x20:ASCII value of spaces
const size_t lenStr = searchParams.size();
napi_value result = nullptr;
if (lenStr == 0) {
napi_value result = nullptr;
napi_create_string_utf8(env, output.c_str(), output.size(), &result);
return result;
}
@@ -1675,9 +1677,8 @@ namespace OHOS::Url {
output += +"&" + strKey + "=" + strValue;
}
}
napi_value result_ = nullptr;
napi_create_string_utf8(env, output.c_str(), output.size(), &result_);
return result_;
napi_create_string_utf8(env, output.c_str(), output.size(), &result);
return result;
}
void URLSearchParams::HandleIllegalChar(std::wstring& inputStr, std::wstring::const_iterator it)
{
@@ -1865,19 +1866,16 @@ namespace OHOS::Url {
napi_value URLSearchParams::IsHas(napi_value name) const
{
char *buffer = nullptr;
size_t bufferSize = 0;
if (napi_get_value_string_utf8(env, name, nullptr, 0, &bufferSize) != napi_ok) {
HILOG_ERROR("can not get name size");
return nullptr;
}
std::string buf = "";
napi_get_value_string_utf8(env, name, nullptr, 0, &bufferSize);
if (bufferSize > 0) {
buffer = new char[bufferSize + 1];
if (memset_s(buffer, bufferSize + 1, 0, bufferSize + 1) != EOK) {
HILOG_ERROR("type memset error");
delete [] buffer;
return nullptr;
}
napi_get_value_string_utf8(env, name, buffer, bufferSize + 1, &bufferSize);
buf = buffer;
buf.resize(bufferSize);
if (napi_get_value_string_utf8(env, name, buf.data(), bufferSize + 1, &bufferSize) != napi_ok) {
HILOG_ERROR("can not get name value");
return nullptr;
}
bool flag = false;
napi_value result = nullptr;
@@ -1886,11 +1884,9 @@ namespace OHOS::Url {
if (searchParams[i] == buf) {
flag = true;
napi_get_boolean(env, flag, &result);
delete []buffer;
return result;
}
}
delete []buffer;
napi_get_boolean(env, flag, &result);
return result;
}
@@ -2015,4 +2011,4 @@ namespace OHOS::Url {
}
return arr;
}
} // namespace
} // namespace OHOS::Url
+220 -4
View File
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef COMPILERUNTIME_JS_API_URL_H
#define COMPILERUNTIME_JS_API_URL_H
#ifndef URL_JS_URL_H_
#define URL_JS_URL_H_
#include <algorithm>
#include <bitset>
@@ -55,34 +55,162 @@ namespace OHOS::Url {
class URL {
public:
/**
* URI constructor, which is used to instantiate a URI object.
*
* @param env NAPI environment parameters.
* @param input Constructs a URI by parsing a given string.
*/
URL(napi_env env, const std::string& input);
/**
* URI constructor, which is used to instantiate a URI object.
*
* @param env NAPI environment parameters.
* @param input Constructs a URI by parsing a given string.
* @param base The input parameter is a character string.
*/
URL(napi_env env, const std::string& input, const std::string& base);
/**
* URI constructor, which is used to instantiate a URI object.
*
* @param env NAPI environment parameters.
* @param input Constructs a URI by parsing a given string.
* @param base The input parameter is the URL object.
*/
URL(napi_env env, const std::string& input, const URL& base);
/**
* Gets the host name portion of the URLnot include the port.
*/
napi_value GetHostname() const;
/**
* Sets the host name portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetHostname(const std::string& input);
/**
* Sets the username name portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetUsername(const std::string& input);
/**
* Sets the password portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetPassword(const std::string& input);
/**
* Sets the scheme portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetScheme(const std::string& input);
/**
* Sets the fragment portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetFragment(const std::string& input);
/**
* Sets the search portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetSearch(const std::string& input);
/**
* Sets the host portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetHost(const std::string& input);
/**
* Sets the port portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetPort(const std::string& input);
/**
* Sets the href portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetHref(const std::string& input);
/**
* Sets the path portion of the URLnot include the port.
*
* @param input Constructs a URI by parsing a given string.
*/
void SetPath(const std::string& input);
/**
* Gets the search portion of the URLnot include the port.
*/
napi_value GetSearch() const;
/**
* Gets the username portion of the URLnot include the port.
*/
napi_value GetUsername() const;
/**
* Gets the password portion of the URLnot include the port.
*/
napi_value GetPassword() const;
/**
* Gets the fragment portion of the URLnot include the port.
*/
napi_value GetFragment() const;
/**
* Gets the scheme portion of the URLnot include the port.
*/
napi_value GetScheme() const;
/**
* Gets the path portion of the URLnot include the port.
*/
napi_value GetPath() const;
/**
* Gets the port portion of the URLnot include the port.
*/
napi_value GetPort() const;
/**
* Judge whether it's on or off.
*/
napi_value GetOnOrOff() const;
/**
* Judge whether it's Ipv6.
*/
napi_value GetIsIpv6() const;
/**
* Gets the host name portion of the URLnot include the port.
*/
napi_value GetHost() const;
/**
* The destructor of the url
*/
virtual ~URL() {}
private:
UrlData urlData_;
std::bitset<static_cast<size_t>(BitsetStatusFlag::BIT_STATUS_11)> flags_;
@@ -92,27 +220,115 @@ namespace OHOS::Url {
class URLSearchParams {
public:
/**
* A parameterized constructor used to create an URLSearchParams instance.
*
* @param env NAPI environment parameters.
*/
explicit URLSearchParams(napi_env env);
/**
* Virtual destructor of URLSearchParams
*/
virtual ~URLSearchParams() {}
/**
* Returns a Boolean that indicates whether a parameter with the specified name exists.
*
* @param name Specifies the name of a key-value pair.
*/
napi_value IsHas(napi_value name) const;
/**
* Returns the first value associated to the given search parameter.
*
* @param buffer Returns the first value associated to the given search parameter.
*/
napi_value Get(napi_value buffer);
/**
* Returns all key-value pairs associated with a given search parameter as an array.
*
* @param buffer Specifies the name of a key value.
*/
napi_value GetAll(napi_value buffer);
/**
* Appends a specified key/value pair as a new search parameter.
*
* @param buffer Key name of the search parameter to be inserted.
* @param temp Values of search parameters to be inserted.
*/
void Append(napi_value buffer, napi_value temp);
/**
* Deletes the given search parameter and its associated value,from the list of all search parameters.
*
* @param buffer Name of the key-value pair to be deleted.
*/
void Delete(napi_value buffer);
/**
* Returns an ES6 iterator. Each item of the iterator is a JavaScript Array.
*/
napi_value Entries() const;
/**
* Sets the value associated with a given search parameter to the
* given value. If there were several matching values, this method
* deletes the others. If the search parameter doesn't exist, this
* method creates it.
*
* @param name Key name of the parameter to be set.
* @param value Indicates the parameter value to be set.
*/
void Set(napi_value name, napi_value value);
/**
* Sort all key/value pairs contained in this object in place and return undefined.
*/
void Sort();
/**
* Returns a query string suitable for use in a URL.
*/
napi_value ToString();
/**
* Returns an iterator allowing to go through all keys contained in this object.
*/
napi_value IterByKeys();
/**
* Returns an iterator allowing to go through all values contained in this object.
*/
napi_value IterByValues();
/**
* Sets the string array of searchParams.
*
* @param input String array.
*/
void SetArray(std::vector<std::string> input);
/**
* Gets the string array of searchParams.
*/
napi_value GetArray() const;
/**
* This function will decode the string and put the parsed key and value values into the
* vector container of urlsearchparams class according to the rules.
*
* @param Stringpar The input parameter of urlsearchparams is string.
*/
std::vector<std::string> StringParmas(std::string Stringpar);
private:
std::string ToUSVString(std::string inputStr);
void HandleIllegalChar(std::wstring& inputStr, std::wstring::const_iterator it);
std::vector<std::string> searchParams;
napi_env env;
};
} // namespace
#endif /* COMPILERUNTIME_JS_API_URL_H */
} // namespace OHOS::Url
#endif // URL_JS_URL_H_
+92 -167
View File
@@ -104,8 +104,8 @@ namespace OHOS::Url {
}
napi_wrap(
env, thisVar, object,
[](napi_env env_, void *data, void *hint) {
auto obj = (URL*)data;
[](napi_env environment, void *data, void *hint) {
auto obj = reinterpret_cast<URL*>(data);
if (obj != nullptr) {
delete obj;
}
@@ -231,22 +231,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -263,22 +256,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -295,22 +281,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -327,22 +306,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -359,22 +331,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -391,22 +356,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -423,22 +381,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -455,22 +406,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -487,22 +431,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -519,22 +456,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr));
char *type = nullptr;
size_t typelen = 0;
NAPI_CALL(env, napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen));
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
if (type != nullptr) {
delete[] type;
type = nullptr;
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
URL *murl = nullptr;
NAPI_CALL(env, napi_unwrap(env, thisVar, reinterpret_cast<void**>(&murl)));
@@ -552,8 +482,8 @@ namespace OHOS::Url {
auto object = new URLSearchParams(env);
napi_wrap(
env, thisVar, object,
[](napi_env env_, void *data, void *hint) {
auto obj = (URLSearchParams*)data;
[](napi_env environment, void *data, void *hint) {
auto obj = reinterpret_cast<URLSearchParams*>(data);
if (obj != nullptr) {
delete obj;
}
@@ -574,20 +504,19 @@ namespace OHOS::Url {
size_t arraySize = 0;
napi_value napiStr = nullptr;
for (size_t i = 0; i < length; i++) {
char *cstr = nullptr;
napi_get_element(env, argv[0], i, &napiStr);
napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
if (napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize) != napi_ok) {
HILOG_ERROR("can not get napiStr size");
return nullptr;
}
if (arraySize > 0) {
cstr = new char[arraySize + 1];
if (memset_s(cstr, arraySize + 1, 0, arraySize + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] cstr;
return nullptr;
std::string cstr = "";
cstr.resize(arraySize);
if (napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize) != napi_ok) {
HILOG_ERROR("can not get name value");
return nullptr;
}
napi_get_value_string_utf8(env, napiStr, cstr, arraySize + 1, &arraySize);
vec.push_back(cstr);
delete []cstr;
cstr = nullptr;
} else {
vec.push_back("");
}
@@ -862,19 +791,15 @@ namespace OHOS::Url {
size_t argc = 1;
std::string input = "";
napi_get_cb_info(env, info, &argc, argv, &thisVar, nullptr);
char *type = nullptr;
size_t typelen = 0;
napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen);
if (typelen > 0) {
type = new char[typelen + 1];
if (memset_s(type, typelen + 1, 0, typelen + 1) != 0) {
HILOG_ERROR("type memset error");
delete [] type;
return nullptr;
}
napi_get_value_string_utf8(env, argv[0], type, typelen + 1, &typelen);
input = type;
delete[] type;
if (napi_get_value_string_utf8(env, argv[0], nullptr, 0, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] size");
return nullptr;
}
input.resize(typelen);
if (napi_get_value_string_utf8(env, argv[0], input.data(), typelen + 1, &typelen) != napi_ok) {
HILOG_ERROR("can not get argv[0] value");
return nullptr;
}
std::vector<std::string> seachParasmsString;
seachParasmsString = StringParsing(input);
@@ -961,7 +886,7 @@ namespace OHOS::Url {
.nm_filename = nullptr,
.nm_register_func = Init,
.nm_modname = "url",
.nm_priv = ((void*)0),
.nm_priv = reinterpret_cast<void*>(0),
.reserved = {0},
};
extern "C" __attribute__((constructor)) void RegisterModule()
+46 -22
View File
@@ -86,8 +86,10 @@ namespace OHOS::xml {
type = "isDecl";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetDeclaration memcpy_s failed");
}
}
}
@@ -106,8 +108,10 @@ namespace OHOS::xml {
type = "isNsp";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetNamespace memcpy_s failed");
}
}
}
@@ -141,8 +145,10 @@ namespace OHOS::xml {
elementStack.push_back("");
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("StartElement memcpy_s failed");
}
}
}
@@ -160,23 +166,28 @@ namespace OHOS::xml {
type = "isAttri";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetAttributes memcpy_s failed");
}
}
}
void XmlSerializer::EndElement()
{
out_ = "";
size_t iLenTemp = 0;
if (type == "isStart" || type == "isAttri") {
SplicNsp();
out_.append("/>");
type = "isEndTag";
--depth_;
size_t iLenTemp = out_.length();
iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("StartElement memcpy_s failed");
}
}
return;
@@ -195,10 +206,12 @@ namespace OHOS::xml {
elementStack[depth_ * 3 + 1] = ""; // 3: number of args
type = "isEndTag";
out_.append(">");
size_t iLenTemp_ = out_.length();
if (iLength_ > iPos_ + iLenTemp_ - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp_)) {
iPos_ += iLenTemp_;
iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("EndElement memcpy_s failed");
}
}
}
@@ -218,8 +231,10 @@ namespace OHOS::xml {
type = "isAddEmpElem";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("AddEmptyElement memcpy_s failed");
}
}
}
@@ -234,8 +249,10 @@ namespace OHOS::xml {
type = "isText";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetText memcpy_s failed");
}
}
}
@@ -253,8 +270,10 @@ namespace OHOS::xml {
type = "isCom";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetComment memcpy_s failed");
}
}
}
@@ -273,8 +292,10 @@ namespace OHOS::xml {
type = "isCData";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetCData memcpy_s failed");
}
}
}
@@ -292,8 +313,10 @@ namespace OHOS::xml {
type = "isDocType";
size_t iLenTemp = out_.length();
if (iLength_ > iPos_ + iLenTemp - 1) {
if (!memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp)) {
if (memcpy_s(pStart_ + iPos_, iLength_ - iPos_, out_.c_str(), iLenTemp) == EOK) {
iPos_ += iLenTemp;
} else {
HILOG_ERROR("SetDocType memcpy_s failed");
}
}
}
@@ -966,9 +989,10 @@ namespace OHOS::xml {
bool XmlPullParser::ParseNsp()
{
bool any = false;
size_t cut = 0;
for (size_t i = 0; i < (attriCount_ << 2); i += 4) { // 2 and 4: number of args
std::string attrName = attributes[i + 2]; // 2: number of args
size_t cut = attrName.find(':');
cut = attrName.find(':');
std::string prefix;
if (cut != std::string::npos) {
prefix = attrName.substr(0, cut);
@@ -988,13 +1012,13 @@ namespace OHOS::xml {
if (any) {
ParseNspFunction();
}
size_t cut_ = name_.find(':');
if (cut_ == 0) {
cut = name_.find(':');
if (cut == 0) {
xmlPullParserError_ = "illegal tag name: " + name_;
}
if (cut_ != std::string::npos) {
prefix_ = name_.substr(0, cut_);
name_ = name_.substr(cut_ + 1);
if (cut != std::string::npos) {
prefix_ = name_.substr(0, cut);
name_ = name_.substr(cut + 1);
}
namespace_ = GetNamespace(prefix_);
if (namespace_ == "") {
@@ -1822,5 +1846,5 @@ namespace OHOS::xml {
}
return result;
}
} // namespace
} // namespace OHOS::Xml
+160 -4
View File
@@ -13,8 +13,8 @@
* limitations under the License.
*/
#ifndef FOUNDATION_ACE_CCRUNTIME_XML_CLASS_H
#define FOUNDATION_ACE_CCRUNTIME_XML_CLASS_H
#ifndef XML_JS_XML_H_
#define XML_JS_XML_H_
#include <algorithm>
#include <cstring>
@@ -28,24 +28,120 @@
namespace OHOS::xml {
class XmlSerializer {
public:
/**
* Constructor for XmlSerializer.
*
* @param pStart is the pointer.
* @param bufferLengthis the length of the ArrayBuffer or
* DataView memory used to receive the written xml information.
*/
XmlSerializer(char *pStart, size_t bufferLength, std::string encoding = "utf-8") :pStart_(pStart),
iLength_(bufferLength), encoding_(encoding) {};
/**
* XmlSerializer destructor.
*/
~XmlSerializer() {}
/**
* Set the Attributes method.
*
* @param name The parameter is the key value of the property.
* @param value The parameter is the value of the property.
*/
void SetAttributes(std::string name, std::string value);
/**
* Writes an empty element.
*
* @param name The parameter is the element name of the empty element.
*/
void AddEmptyElement(std::string name);
/**
* Set the Declaration method.
*/
void SetDeclaration();
/**
* Writes the element start tag with the given name.
*
* @param name The parameter is the element name of the current element.
*/
void StartElement(std::string name);
/**
* Write element end tag.
*/
void EndElement();
/**
* The namespace into which the current element tag is written.
*
* @param prefix The parameter is the prefix of the current element and its children.
* @param nsTemp The parameter is the namespace of the current element and its children.
*/
void SetNamespace(std::string prefix, std::string nsTemp);
/**
* Write the comment property.
*
* @param comment The parameter is the comment content of the current element.
*/
void SetComment(std::string comment);
/**
* Write CDATA attributes.
*
* @param comment The parameter is the content of the CDATA attribute.
*/
void SetCData(std::string data);
/**
* Write CDATA attributes.
*
* @param comment The parameter is the content of the CDATA attribute.
*/
void SetText(std::string text);
/**
* Write DocType property.
*
* @param text The parameter is the content of the DocType property.
*/
void SetDocType(std::string text);
/**
* write an escape.
*
* @param s The parameter is the passed in escaped string.
*/
void WriteEscaped(std::string s);
/**
* SplicNsp functio.
*/
void SplicNsp();
/**
* NextItem function.
*/
void NextItem();
/**
* Throw exception function.
*/
std::string XmlSerializerError();
/**
* Process the value of the string passed by napi.
*
* @param env The parameter is NAPI environment variables.
* @param napiStr The parameter is pass parameters.
* @param result The parameter is return the processed value.
*/
static napi_status DealNapiStrValue(napi_env env, const napi_value napiStr, std::string &result);
private:
char *pStart_;
size_t iPos_ = 0;
@@ -92,15 +188,74 @@ namespace OHOS::xml {
public:
class ParseInfo {
public:
/**
* Get the current depth of the element.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is the current depth of the returned element.
*/
static napi_value GetDepth(napi_env env, napi_callback_info info);
/**
* Get the current column number, starting at 1.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to return the current line number.
*/
static napi_value GetColumnNumber(napi_env env, napi_callback_info info);
/**
* Get the current line number, starting at 1.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to return the current column number.
*/
static napi_value GetLineNumber(napi_env env, napi_callback_info info);
/**
* Get the number of attributes of the current start tag.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is the number of attributes of the current start tag.
*/
static napi_value GetAttributeCount(napi_env env, napi_callback_info info);
/**
* Get the current element name.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to return the current element name.
*/
static napi_value GetName(napi_env env, napi_callback_info info);
/**
* Get the namespace of the current element.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is the namespace that returns the current element.
*/
static napi_value GetNamespace(napi_env env, napi_callback_info info);
/**
* Get the current element prefix.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to return the current element prefix.
*/
static napi_value GetPrefix(napi_env env, napi_callback_info info);
/**
* Get the text content of the current event.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to return the text content of the current event.
*/
static napi_value GetText(napi_env env, napi_callback_info info);
/**
* Check whether the current element is an empty element.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to returns true The current element is an empty element.
*/
static napi_value IsEmptyElementTag(napi_env env, napi_callback_info info);
/**
* Determines whether the current text event contains only space characters.
* @param env The parameter is NAPI environment variables.
* @param info The parameter is to returns true, the current text event contains only space characters.
*/
static napi_value IsWhitespace(napi_env env, napi_callback_info info);
};
struct TagText {
@@ -216,6 +371,7 @@ namespace OHOS::xml {
void MakeStrUpper(std::string &src) const;
TagEnum DealLtGroup();
void DealWhiteSpace(unsigned char c);
private:
napi_env env_;
bool bDoctype_ = false;
@@ -261,5 +417,5 @@ namespace OHOS::xml {
bool bKeepNsAttri = false;
bool bDocDecl = false;
};
} // namespace
#endif /* FOUNDATION_ACE_CCRUNTIME_XML_CLASS_H */
} // namespace OHOS::Xml
#endif // XML_JS_XML_H_
+7 -7
View File
@@ -64,8 +64,8 @@ namespace OHOS::xml {
}
napi_wrap(
env, thisVar, object,
[](napi_env env, void *data, void *hint) {
auto obj = (XmlSerializer*)data;
[](napi_env environment, void *data, void *hint) {
auto obj = reinterpret_cast<XmlSerializer*>(data);
if (obj != nullptr) {
delete obj;
}
@@ -101,7 +101,7 @@ namespace OHOS::xml {
napi_get_dataview_info(env, args[0], &len, &data, &arraybuffer, &offPos);
}
if (data) {
std::string strEnd = (char*)data;
std::string strEnd = reinterpret_cast<char*>(data);
if (argc == 1) {
object = new XmlPullParser(env, strEnd, "utf-8");
} else if (argc == 2) { // 2:When the input parameter is set to 2
@@ -114,8 +114,8 @@ namespace OHOS::xml {
}
napi_wrap(
env, thisVar, object,
[](napi_env env, void *data, void *hint) {
auto obj = (XmlPullParser*)data;
[](napi_env env_, void *data, void *hint) {
auto obj = reinterpret_cast<XmlPullParser*>(data);
if (obj != nullptr) {
delete obj;
}
@@ -459,11 +459,11 @@ namespace OHOS::xml {
.nm_filename = nullptr,
.nm_register_func = Init,
.nm_modname = "xml",
.nm_priv = ((void*)0),
.nm_priv = reinterpret_cast<void*>(0),
.reserved = {0},
};
extern "C" __attribute__((constructor)) void RegisterModule()
{
napi_module_register(&xmlModule);
}
} // namespace
} // namespace OHOS::Xml