[DEV] test done and more flexible
This commit is contained in:
parent
b68b4f7b82
commit
ad80b15850
@ -18,7 +18,7 @@ bool ejson::Number::IParse(const etk::UString& _data, int32_t& _pos, ejson::file
|
|||||||
{
|
{
|
||||||
JSON_PARSE_ELEMENT("start parse : 'Number' ");
|
JSON_PARSE_ELEMENT("start parse : 'Number' ");
|
||||||
etk::UString tmpVal;
|
etk::UString tmpVal;
|
||||||
for (int32_t iii=_pos+1; iii<_data.Size(); iii++) {
|
for (int32_t iii=_pos; iii<_data.Size(); iii++) {
|
||||||
_filePos.Check(_data[iii]);
|
_filePos.Check(_data[iii]);
|
||||||
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
|
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
|
||||||
DrawElementParsed(_data[iii], _filePos);
|
DrawElementParsed(_data[iii], _filePos);
|
||||||
|
@ -43,7 +43,13 @@ bool ejson::Object::IParse(const etk::UString& _data, int32_t& _pos, ejson::file
|
|||||||
statusParsing_te mode = parseName;
|
statusParsing_te mode = parseName;
|
||||||
etk::UString currentName;
|
etk::UString currentName;
|
||||||
JSON_PARSE_ELEMENT("start parse : 'Object' ");
|
JSON_PARSE_ELEMENT("start parse : 'Object' ");
|
||||||
for (int32_t iii=_pos+1; iii<_data.Size(); iii++) {
|
bool standalone = true;
|
||||||
|
int32_t startPos = _pos+1;
|
||||||
|
if (_data[_pos] != '{' ) { // when the main node call it, it can be start with != '{'
|
||||||
|
standalone = false;
|
||||||
|
startPos = _pos;
|
||||||
|
}
|
||||||
|
for (int32_t iii=startPos; iii<_data.Size(); iii++) {
|
||||||
_filePos.Check(_data[iii]);
|
_filePos.Check(_data[iii]);
|
||||||
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
|
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
|
||||||
DrawElementParsed(_data[iii], _filePos);
|
DrawElementParsed(_data[iii], _filePos);
|
||||||
@ -193,6 +199,9 @@ bool ejson::Object::IParse(const etk::UString& _data, int32_t& _pos, ejson::file
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
_pos = _data.Size();
|
_pos = _data.Size();
|
||||||
|
if (false==standalone) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool ejson::Object::IGenerate(etk::UString& _data, int32_t _indent) const
|
bool ejson::Object::IGenerate(etk::UString& _data, int32_t _indent) const
|
||||||
|
172
ejson/ejson.cpp
172
ejson/ejson.cpp
@ -21,7 +21,6 @@
|
|||||||
#define __class__ "Document"
|
#define __class__ "Document"
|
||||||
|
|
||||||
ejson::Document::Document(void) :
|
ejson::Document::Document(void) :
|
||||||
m_subElement(NULL),
|
|
||||||
m_writeErrorWhenDetexted(true),
|
m_writeErrorWhenDetexted(true),
|
||||||
m_comment(""),
|
m_comment(""),
|
||||||
m_Line(""),
|
m_Line(""),
|
||||||
@ -32,17 +31,12 @@ ejson::Document::Document(void) :
|
|||||||
|
|
||||||
ejson::Document::~Document(void)
|
ejson::Document::~Document(void)
|
||||||
{
|
{
|
||||||
if (NULL!=m_subElement) {
|
|
||||||
delete m_subElement;
|
|
||||||
m_subElement=NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ejson::Document::IGenerate(etk::UString& _data, int32_t _indent) const
|
bool ejson::Document::IGenerate(etk::UString& _data, int32_t _indent) const
|
||||||
{
|
{
|
||||||
if (NULL!=m_subElement) {
|
ejson::Object::IGenerate(_data, _indent+1);
|
||||||
m_subElement->IGenerate(_data, _indent+1);
|
|
||||||
}
|
|
||||||
_data += "\n";
|
_data += "\n";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -177,7 +171,9 @@ void ejson::Document::CreateError(const etk::UString& _data, int32_t _pos, const
|
|||||||
|
|
||||||
bool ejson::Document::IParse(const etk::UString& _data, int32_t& _pos, ejson::filePos& _filePos, ejson::Document& _doc)
|
bool ejson::Document::IParse(const etk::UString& _data, int32_t& _pos, ejson::filePos& _filePos, ejson::Document& _doc)
|
||||||
{
|
{
|
||||||
JSON_PARSE_ELEMENT("start parse : 'Value' ");
|
JSON_PARSE_ELEMENT("start parse : 'Document' ");
|
||||||
|
bool haveMainNode=false;
|
||||||
|
bool nodeParsed=false;
|
||||||
for (int32_t iii=_pos; iii<_data.Size(); iii++) {
|
for (int32_t iii=_pos; iii<_data.Size(); iii++) {
|
||||||
_filePos.Check(_data[iii]);
|
_filePos.Check(_data[iii]);
|
||||||
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
|
#ifdef ENABLE_DISPLAY_PARSED_ELEMENT
|
||||||
@ -190,144 +186,40 @@ bool ejson::Document::IParse(const etk::UString& _data, int32_t& _pos, ejson::fi
|
|||||||
|| _data[iii]=='\r') {
|
|| _data[iii]=='\r') {
|
||||||
// white space ==> nothing to do ...
|
// white space ==> nothing to do ...
|
||||||
} else if (_data[iii]=='{') {
|
} else if (_data[iii]=='{') {
|
||||||
// find an object:
|
if (nodeParsed==true) {
|
||||||
JSON_PARSE_ELEMENT("find Object");
|
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "element already parsed");
|
||||||
ejson::Object * tmpElement = new ejson::Object();
|
|
||||||
if (NULL==tmpElement) {
|
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Allocation error in object");
|
|
||||||
_pos=iii;
|
_pos=iii;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
tmpElement->IParse(_data, iii, _filePos, _doc);
|
// find a main object:
|
||||||
m_subElement = tmpElement;
|
// ==> generic sub parsing
|
||||||
} else if (_data[iii]=='"') {
|
iii++;
|
||||||
// find a string:
|
haveMainNode=true;
|
||||||
JSON_PARSE_ELEMENT("find String quoted");
|
nodeParsed=true;
|
||||||
ejson::String * tmpElement = new ejson::String(true);
|
ejson::Object::IParse(_data, iii, _filePos, _doc);
|
||||||
if (NULL==tmpElement) {
|
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Allocation error in String");
|
|
||||||
_pos=iii;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tmpElement->IParse(_data, iii, _filePos, _doc);
|
|
||||||
m_subElement = tmpElement;
|
|
||||||
} else if (_data[iii]=='[') {
|
|
||||||
// find a list:
|
|
||||||
JSON_PARSE_ELEMENT("find List");
|
|
||||||
ejson::Array * tmpElement = new ejson::Array();
|
|
||||||
if (NULL==tmpElement) {
|
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Allocation error in Array");
|
|
||||||
_pos=iii;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tmpElement->IParse(_data, iii, _filePos, _doc);
|
|
||||||
m_subElement = tmpElement;
|
|
||||||
} else if( _data[iii] == 'f'
|
|
||||||
|| _data[iii] == 't' ) {
|
|
||||||
// find boolean:
|
|
||||||
JSON_PARSE_ELEMENT("find Boolean");
|
|
||||||
ejson::Boolean * tmpElement = new ejson::Boolean();
|
|
||||||
if (NULL==tmpElement) {
|
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Allocation error in Boolean");
|
|
||||||
_pos=iii;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tmpElement->IParse(_data, iii, _filePos, _doc);
|
|
||||||
m_subElement = tmpElement;
|
|
||||||
} else if( _data[iii] == 'n') {
|
|
||||||
// find null:
|
|
||||||
JSON_PARSE_ELEMENT("find Null");
|
|
||||||
ejson::Null * tmpElement = new ejson::Null();
|
|
||||||
if (NULL==tmpElement) {
|
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Allocation error in Boolean");
|
|
||||||
_pos=iii;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tmpElement->IParse(_data, iii, _filePos, _doc);
|
|
||||||
m_subElement = tmpElement;
|
|
||||||
} else if(true==CheckNumber(_data[iii])) {
|
|
||||||
// find number:
|
|
||||||
JSON_PARSE_ELEMENT("find Number");
|
|
||||||
ejson::Number * tmpElement = new ejson::Number();
|
|
||||||
if (NULL==tmpElement) {
|
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Allocation error in Boolean");
|
|
||||||
_pos=iii;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tmpElement->IParse(_data, iii, _filePos, _doc);
|
|
||||||
m_subElement = tmpElement;
|
|
||||||
} else if(_data[iii]=='}') {
|
} else if(_data[iii]=='}') {
|
||||||
// find end of value:
|
|
||||||
_pos=iii; // ==> return the end element type ==> usefull to check end and check if adding element is needed
|
_pos=iii; // ==> return the end element type ==> usefull to check end and check if adding element is needed
|
||||||
return true;
|
if (haveMainNode==true) {
|
||||||
|
// find end of value:
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "find } but never start !!!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// find an error ....
|
if (nodeParsed==true) {
|
||||||
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, etk::UString("Find '") + _data[iii] + "' with no element in the element...");
|
_pos=iii;
|
||||||
// move the curent index
|
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "element already parsed");
|
||||||
_pos = iii+1;
|
return false;
|
||||||
return false;
|
}
|
||||||
|
nodeParsed=true;
|
||||||
|
// this might not have the '{' start element !!!
|
||||||
|
if (false==ejson::Object::IParse(_data, iii, _filePos, _doc)) {
|
||||||
|
EJSON_CREATE_ERROR(_doc, _data, iii, _filePos, "Object sub parsing in error");
|
||||||
|
_pos = iii;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ejson::Value* ejson::Document::GetSub(const etk::UString& _named) const
|
|
||||||
{
|
|
||||||
if (m_subElement == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
ejson::Object* tmp = m_subElement->ToObject();
|
|
||||||
if (NULL==tmp) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return tmp->GetSub(_named);
|
|
||||||
}
|
|
||||||
|
|
||||||
ejson::Object* ejson::Document::GetSubObject(const etk::UString& _named) const
|
|
||||||
{
|
|
||||||
ejson::Value* tmp = GetSub(_named);
|
|
||||||
if (NULL == tmp) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return tmp->ToObject();
|
|
||||||
}
|
|
||||||
|
|
||||||
ejson::String* ejson::Document::GetSubString(const etk::UString& _named) const
|
|
||||||
{
|
|
||||||
ejson::Value* tmp = GetSub(_named);
|
|
||||||
if (NULL == tmp) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return tmp->ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
ejson::Array* ejson::Document::GetSubArray(const etk::UString& _named) const
|
|
||||||
{
|
|
||||||
ejson::Value* tmp = GetSub(_named);
|
|
||||||
if (NULL == tmp) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return tmp->ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool ejson::Document::SetSub(ejson::Value* _value)
|
|
||||||
{
|
|
||||||
if (NULL == _value) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (NULL!=m_subElement) {
|
|
||||||
delete(m_subElement);
|
|
||||||
}
|
|
||||||
m_subElement = _value;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ejson::Document::Clear(void)
|
|
||||||
{
|
|
||||||
if (NULL!=m_subElement) {
|
|
||||||
delete(m_subElement);
|
|
||||||
m_subElement=NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
namespace ejson
|
namespace ejson
|
||||||
{
|
{
|
||||||
class Document : public ejson::Value
|
class Document : public ejson::Object
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
@ -63,14 +63,6 @@ namespace ejson
|
|||||||
* @brief Display the Document on console
|
* @brief Display the Document on console
|
||||||
*/
|
*/
|
||||||
void Display(void);
|
void Display(void);
|
||||||
private:
|
|
||||||
ejson::Value* m_subElement; //!< only element that contain the json document:
|
|
||||||
public:
|
|
||||||
ejson::Value* GetSub(const etk::UString& _named) const;
|
|
||||||
ejson::Object* GetSubObject(const etk::UString& _named) const;
|
|
||||||
ejson::String* GetSubString(const etk::UString& _named) const;
|
|
||||||
ejson::Array* GetSubArray(const etk::UString& _named) const;
|
|
||||||
bool SetSub(ejson::Value* _value);
|
|
||||||
private:
|
private:
|
||||||
bool m_writeErrorWhenDetexted;
|
bool m_writeErrorWhenDetexted;
|
||||||
etk::UString m_comment;
|
etk::UString m_comment;
|
||||||
@ -84,11 +76,10 @@ namespace ejson
|
|||||||
void DisplayError(void);
|
void DisplayError(void);
|
||||||
public: // herited function:
|
public: // herited function:
|
||||||
virtual nodeType_te GetType(void) const { return typeDocument; };
|
virtual nodeType_te GetType(void) const { return typeDocument; };
|
||||||
bool IParse(const etk::UString& _data, int32_t& _pos, ejson::filePos& _filePos, ejson::Document& _doc);
|
virtual bool IParse(const etk::UString& _data, int32_t& _pos, ejson::filePos& _filePos, ejson::Document& _doc);
|
||||||
bool IGenerate(etk::UString& _data, int32_t _indent) const;
|
virtual bool IGenerate(etk::UString& _data, int32_t _indent) const;
|
||||||
virtual ejson::Document* ToDocument(void) { return this; };
|
virtual ejson::Document* ToDocument(void) { return this; };
|
||||||
virtual const ejson::Document* ToDocument(void) const { return this; };
|
virtual const ejson::Document* ToDocument(void) const { return this; };
|
||||||
virtual void Clear(void);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
340
ejson/test.cpp
340
ejson/test.cpp
@ -52,6 +52,102 @@ void Init(void)
|
|||||||
-1,
|
-1,
|
||||||
"{ \t\r }\n");
|
"{ \t\r }\n");
|
||||||
l_list.PushBack(check);
|
l_list.PushBack(check);
|
||||||
|
// ======================================================
|
||||||
|
check.Set("test ejson::null", -2, "");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
reference = "{\n\t\"tmpElement\": null\n}\n";
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ tmpElement:null }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ \t\ntmpElement:null \t\n }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"tmpElement:null\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ======================================================
|
||||||
|
check.Set("test ejson::boolean", -2, "");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
reference = "{\n\t\"tmpElement\": true\n}\n";
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ tmpElement:true }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ \t\ntmpElement:true \t\n }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"tmpElement:true\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
reference = "{\n\t\"tmpElement\": false\n}\n";
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ tmpElement:false }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ \t\ntmpElement:false \t\n }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"tmpElement:false\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ======================================================
|
||||||
|
check.Set("test ejson::number", -2, "");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
reference = "{\n\t\"tmpElement\": 956256.000000\n}\n";
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ tmpElement:956256 }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"{ \t\ntmpElement:956256 \t\n }\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"tmpElement:956256\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set("{\n\t\"tmpElement\": 956256.000000\n}\n",
|
||||||
|
-1,
|
||||||
|
"{tmpElement:956256}\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set("{\n\t\"tmpElement\": -956256.000000\n}\n",
|
||||||
|
-1,
|
||||||
|
"{tmpElement:-956256}\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set("{\n\t\"tmpElement\": -956256.000000\n}\n",
|
||||||
|
-1,
|
||||||
|
"{tmpElement:-956256}\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
// ------------------------------------------------------
|
||||||
|
check.Set("{\n\t\"tmpElement\": -956.256000\n}\n",
|
||||||
|
-1,
|
||||||
|
"{tmpElement:-956.256}\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ======================================================
|
// ======================================================
|
||||||
check.Set("test ejson::all", -2, "");
|
check.Set("test ejson::all", -2, "");
|
||||||
l_list.PushBack(check);
|
l_list.PushBack(check);
|
||||||
@ -104,29 +200,28 @@ void Init(void)
|
|||||||
reference);
|
reference);
|
||||||
l_list.PushBack(check);
|
l_list.PushBack(check);
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
/*
|
|
||||||
check.Set(reference,
|
check.Set(reference,
|
||||||
-1,
|
-1,
|
||||||
"{\n"
|
"{\n"
|
||||||
" menu: {\n"
|
" menu: {\n"
|
||||||
" id: file,\n"
|
" id: \"file\",\n"
|
||||||
" value: File,\n"
|
" value: \"File\",\n"
|
||||||
" popup: {\n"
|
" popup: {\n"
|
||||||
" menuitem: [\n"
|
" menuitem: [\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
" value: Close,\n"
|
" value: \"Close\",\n"
|
||||||
" onclick: \"CloseDoc()\"\n"
|
" onclick: \"CloseDoc()\"\n"
|
||||||
" },\n"
|
" },\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
" value: New,\n"
|
" value: \"New\",\n"
|
||||||
" onclick: \"CreateNewDoc()\"\n"
|
" onclick: \"CreateNewDoc()\"\n"
|
||||||
" },\n"
|
" },\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
" value: Open,\n"
|
" value: \"Open\",\n"
|
||||||
" onclick: \"OpenDoc()\"\n"
|
" onclick: \"OpenDoc()\"\n"
|
||||||
" },\n"
|
" },\n"
|
||||||
" {\n"
|
" {\n"
|
||||||
" value: Close,\n"
|
" value: \"Close\",\n"
|
||||||
" onclick: \"CloseDoc()\"\n"
|
" onclick: \"CloseDoc()\"\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" ]\n"
|
" ]\n"
|
||||||
@ -134,7 +229,234 @@ void Init(void)
|
|||||||
" }\n"
|
" }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
l_list.PushBack(check);
|
l_list.PushBack(check);
|
||||||
*/
|
// ------------------------------------------------------
|
||||||
|
check.Set(reference,
|
||||||
|
-1,
|
||||||
|
"menu: {\n"
|
||||||
|
" id: \"file\",\n"
|
||||||
|
" value: \"File\",\n"
|
||||||
|
" popup: {\n"
|
||||||
|
" menuitem: [\n"
|
||||||
|
" {\n"
|
||||||
|
" value: \"Close\",\n"
|
||||||
|
" onclick: \"CloseDoc()\"\n"
|
||||||
|
" },\n"
|
||||||
|
" {\n"
|
||||||
|
" value: \"New\",\n"
|
||||||
|
" onclick: \"CreateNewDoc()\"\n"
|
||||||
|
" },\n"
|
||||||
|
" {\n"
|
||||||
|
" value: \"Open\",\n"
|
||||||
|
" onclick: \"OpenDoc()\"\n"
|
||||||
|
" },\n"
|
||||||
|
" {\n"
|
||||||
|
" value: \"Close\",\n"
|
||||||
|
" onclick: \"CloseDoc()\"\n"
|
||||||
|
" }\n"
|
||||||
|
" ]\n"
|
||||||
|
" }\n"
|
||||||
|
"}\n");
|
||||||
|
l_list.PushBack(check);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
"
|
||||||
|
{
|
||||||
|
\"glossary\": {
|
||||||
|
\"title\": \"example glossary\",
|
||||||
|
\"GlossDiv\": {
|
||||||
|
\"title\": \"S\",
|
||||||
|
\"GlossList\": {
|
||||||
|
\"GlossEntry\": {
|
||||||
|
\"ID\": \"SGML\",
|
||||||
|
\"SortAs\": \"SGML\",
|
||||||
|
\"GlossTerm\": \"Standard Generalized Markup Language\",
|
||||||
|
\"Acronym\": \"SGML\",
|
||||||
|
\"Abbrev\": \"ISO 8879:1986\",
|
||||||
|
\"GlossDef\": {
|
||||||
|
\"para\": \"A meta-markup language, used to create markup languages such as DocBook.\",
|
||||||
|
\"GlossSeeAlso\": [\"GML\", \"XML\"]
|
||||||
|
},
|
||||||
|
\"GlossSee\": \"markup\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
"
|
||||||
|
{\"menu\": {
|
||||||
|
\"id\": \"file\",
|
||||||
|
\"value\": \"File\",
|
||||||
|
\"popup\": {
|
||||||
|
\"menuitem\": [
|
||||||
|
{\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},
|
||||||
|
{\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},
|
||||||
|
{\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
"
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
"
|
||||||
|
{\"widget\": {
|
||||||
|
\"debug\": \"on\",
|
||||||
|
\"window\": {
|
||||||
|
\"title\": \"Sample Konfabulator Widget\",
|
||||||
|
\"name\": \"main_window\",
|
||||||
|
\"width\": 500,
|
||||||
|
\"height\": 500
|
||||||
|
},
|
||||||
|
\"image\": {
|
||||||
|
\"src\": \"Images/Sun.png\",
|
||||||
|
\"name\": \"sun1\",
|
||||||
|
\"hOffset\": 250,
|
||||||
|
\"vOffset\": 250,
|
||||||
|
\"alignment\": \"center\"
|
||||||
|
},
|
||||||
|
\"text\": {
|
||||||
|
\"data\": \"Click Here\",
|
||||||
|
\"size\": 36,
|
||||||
|
\"style\": \"bold\",
|
||||||
|
\"name\": \"text1\",
|
||||||
|
\"hOffset\": 250,
|
||||||
|
\"vOffset\": 100,
|
||||||
|
\"alignment\": \"center\",
|
||||||
|
\"onMouseUp\": \"sun1.opacity = (sun1.opacity / 100) * 90;\"
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
"
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"
|
||||||
|
{\"web-app\": {
|
||||||
|
\"servlet\": [
|
||||||
|
{
|
||||||
|
\"servlet-name\": \"cofaxCDS\",
|
||||||
|
\"servlet-class\": \"org.cofax.cds.CDSServlet\",
|
||||||
|
\"init-param\": {
|
||||||
|
\"configGlossary:installationAt\": \"Philadelphia, PA\",
|
||||||
|
\"configGlossary:adminEmail\": \"ksm@pobox.com\",
|
||||||
|
\"configGlossary:poweredBy\": \"Cofax\",
|
||||||
|
\"configGlossary:poweredByIcon\": \"/images/cofax.gif\",
|
||||||
|
\"configGlossary:staticPath\": \"/content/static\",
|
||||||
|
\"templateProcessorClass\": \"org.cofax.WysiwygTemplate\",
|
||||||
|
\"templateLoaderClass\": \"org.cofax.FilesTemplateLoader\",
|
||||||
|
\"templatePath\": \"templates\",
|
||||||
|
\"templateOverridePath\": \"\",
|
||||||
|
\"defaultListTemplate\": \"listTemplate.htm\",
|
||||||
|
\"defaultFileTemplate\": \"articleTemplate.htm\",
|
||||||
|
\"useJSP\": false,
|
||||||
|
\"jspListTemplate\": \"listTemplate.jsp\",
|
||||||
|
\"jspFileTemplate\": \"articleTemplate.jsp\",
|
||||||
|
\"cachePackageTagsTrack\": 200,
|
||||||
|
\"cachePackageTagsStore\": 200,
|
||||||
|
\"cachePackageTagsRefresh\": 60,
|
||||||
|
\"cacheTemplatesTrack\": 100,
|
||||||
|
\"cacheTemplatesStore\": 50,
|
||||||
|
\"cacheTemplatesRefresh\": 15,
|
||||||
|
\"cachePagesTrack\": 200,
|
||||||
|
\"cachePagesStore\": 100,
|
||||||
|
\"cachePagesRefresh\": 10,
|
||||||
|
\"cachePagesDirtyRead\": 10,
|
||||||
|
\"searchEngineListTemplate\": \"forSearchEnginesList.htm\",
|
||||||
|
\"searchEngineFileTemplate\": \"forSearchEngines.htm\",
|
||||||
|
\"searchEngineRobotsDb\": \"WEB-INF/robots.db\",
|
||||||
|
\"useDataStore\": true,
|
||||||
|
\"dataStoreClass\": \"org.cofax.SqlDataStore\",
|
||||||
|
\"redirectionClass\": \"org.cofax.SqlRedirection\",
|
||||||
|
\"dataStoreName\": \"cofax\",
|
||||||
|
\"dataStoreDriver\": \"com.microsoft.jdbc.sqlserver.SQLServerDriver\",
|
||||||
|
\"dataStoreUrl\": \"jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon\",
|
||||||
|
\"dataStoreUser\": \"sa\",
|
||||||
|
\"dataStorePassword\": \"dataStoreTestQuery\",
|
||||||
|
\"dataStoreTestQuery\": \"SET NOCOUNT ON;select test='test';\",
|
||||||
|
\"dataStoreLogFile\": \"/usr/local/tomcat/logs/datastore.log\",
|
||||||
|
\"dataStoreInitConns\": 10,
|
||||||
|
\"dataStoreMaxConns\": 100,
|
||||||
|
\"dataStoreConnUsageLimit\": 100,
|
||||||
|
\"dataStoreLogLevel\": \"debug\",
|
||||||
|
\"maxUrlLength\": 500}},
|
||||||
|
{
|
||||||
|
\"servlet-name\": \"cofaxEmail\",
|
||||||
|
\"servlet-class\": \"org.cofax.cds.EmailServlet\",
|
||||||
|
\"init-param\": {
|
||||||
|
\"mailHost\": \"mail1\",
|
||||||
|
\"mailHostOverride\": \"mail2\"}},
|
||||||
|
{
|
||||||
|
\"servlet-name\": \"cofaxAdmin\",
|
||||||
|
\"servlet-class\": \"org.cofax.cds.AdminServlet\"},
|
||||||
|
|
||||||
|
{
|
||||||
|
\"servlet-name\": \"fileServlet\",
|
||||||
|
\"servlet-class\": \"org.cofax.cds.FileServlet\"},
|
||||||
|
{
|
||||||
|
\"servlet-name\": \"cofaxTools\",
|
||||||
|
\"servlet-class\": \"org.cofax.cms.CofaxToolsServlet\",
|
||||||
|
\"init-param\": {
|
||||||
|
\"templatePath\": \"toolstemplates/\",
|
||||||
|
\"log\": 1,
|
||||||
|
\"logLocation\": \"/usr/local/tomcat/logs/CofaxTools.log\",
|
||||||
|
\"logMaxSize\": \"\",
|
||||||
|
\"dataLog\": 1,
|
||||||
|
\"dataLogLocation\": \"/usr/local/tomcat/logs/dataLog.log\",
|
||||||
|
\"dataLogMaxSize\": \"\",
|
||||||
|
\"removePageCache\": \"/content/admin/remove?cache=pages&id=\",
|
||||||
|
\"removeTemplateCache\": \"/content/admin/remove?cache=templates&id=\",
|
||||||
|
\"fileTransferFolder\": \"/usr/local/tomcat/webapps/content/fileTransferFolder\",
|
||||||
|
\"lookInContext\": 1,
|
||||||
|
\"adminGroupID\": 4,
|
||||||
|
\"betaServer\": true}}],
|
||||||
|
\"servlet-mapping\": {
|
||||||
|
\"cofaxCDS\": \"/\",
|
||||||
|
\"cofaxEmail\": \"/cofaxutil/aemail/*\",
|
||||||
|
\"cofaxAdmin\": \"/admin/*\",
|
||||||
|
\"fileServlet\": \"/static/*\",
|
||||||
|
\"cofaxTools\": \"/tools/*\"},
|
||||||
|
|
||||||
|
\"taglib\": {
|
||||||
|
\"taglib-uri\": \"cofax.tld\",
|
||||||
|
\"taglib-location\": \"/WEB-INF/tlds/cofax.tld\"}}}
|
||||||
|
|
||||||
|
"
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
"
|
||||||
|
{\"menu\": {
|
||||||
|
\"header\": \"SVG Viewer\",
|
||||||
|
\"items\": [
|
||||||
|
{\"id\": \"Open\"},
|
||||||
|
{\"id\": \"OpenNew\", \"label\": \"Open New\"},
|
||||||
|
null,
|
||||||
|
{\"id\": \"ZoomIn\", \"label\": \"Zoom In\"},
|
||||||
|
{\"id\": \"ZoomOut\", \"label\": \"Zoom Out\"},
|
||||||
|
{\"id\": \"OriginalView\", \"label\": \"Original View\"},
|
||||||
|
null,
|
||||||
|
{\"id\": \"Quality\"},
|
||||||
|
{\"id\": \"Pause\"},
|
||||||
|
{\"id\": \"Mute\"},
|
||||||
|
null,
|
||||||
|
{\"id\": \"Find\", \"label\": \"Find...\"},
|
||||||
|
{\"id\": \"FindAgain\", \"label\": \"Find Again\"},
|
||||||
|
{\"id\": \"Copy\"},
|
||||||
|
{\"id\": \"CopyAgain\", \"label\": \"Copy Again\"},
|
||||||
|
{\"id\": \"CopySVG\", \"label\": \"Copy SVG\"},
|
||||||
|
{\"id\": \"ViewSVG\", \"label\": \"View SVG\"},
|
||||||
|
{\"id\": \"ViewSource\", \"label\": \"View Source\"},
|
||||||
|
{\"id\": \"SaveAs\", \"label\": \"Save As\"},
|
||||||
|
null,
|
||||||
|
{\"id\": \"Help\"},
|
||||||
|
{\"id\": \"About\", \"label\": \"About Adobe CVG Viewer...\"}
|
||||||
|
]
|
||||||
|
}}
|
||||||
|
"
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, const char *argv[])
|
int main(int argc, const char *argv[])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user