Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
132
Src/Wasabi/api/skin/xmlobject.h
Normal file
132
Src/Wasabi/api/skin/xmlobject.h
Normal file
|
@ -0,0 +1,132 @@
|
|||
#ifndef __XMLOBJECT_H
|
||||
#define __XMLOBJECT_H
|
||||
|
||||
#include <bfc/nsguid.h>
|
||||
#include <bfc/ptrlist.h>
|
||||
#include <bfc/dispatch.h>
|
||||
#include <bfc/string/StringW.h>
|
||||
#include <bfc/wasabi_std.h>
|
||||
|
||||
#define XML_ATTRIBUTE_IMPLIED 0
|
||||
#define XML_ATTRIBUTE_REQUIRED 1
|
||||
|
||||
class XmlObject : public Dispatchable
|
||||
{
|
||||
public:
|
||||
int setXmlParam(const wchar_t *name, const wchar_t *strvalue);
|
||||
const wchar_t *getXmlParamValue(int n);
|
||||
int getXmlParam(const wchar_t *paramname);
|
||||
|
||||
enum
|
||||
{
|
||||
SETXMLPARAM=10,
|
||||
GETXMLPARAMVALUE=40,
|
||||
GETXMLPARAM=50,
|
||||
};
|
||||
};
|
||||
|
||||
inline int XmlObject::setXmlParam(const wchar_t *name, const wchar_t *strvalue)
|
||||
{
|
||||
return _call(SETXMLPARAM, 0, name, strvalue);
|
||||
}
|
||||
|
||||
inline const wchar_t *XmlObject::getXmlParamValue(int n)
|
||||
{
|
||||
return _call(GETXMLPARAMVALUE, (const wchar_t *)0, n);
|
||||
}
|
||||
|
||||
inline int XmlObject::getXmlParam(const wchar_t *paramname)
|
||||
{
|
||||
return _call(GETXMLPARAM, 0, paramname);
|
||||
}
|
||||
|
||||
class XmlObjectParam
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
XmlObjectParam(int xmlhandle, wchar_t *xmlattribute, int xmlattributeid);
|
||||
virtual ~XmlObjectParam() {}
|
||||
|
||||
const wchar_t *getXmlAttribute()
|
||||
{
|
||||
return xmlattributename;
|
||||
}
|
||||
int getXmlAttributeId()
|
||||
{
|
||||
return attributeid;
|
||||
}
|
||||
int getXmlHandle()
|
||||
{
|
||||
return handle;
|
||||
}
|
||||
void setLastValue(const wchar_t *val)
|
||||
{
|
||||
lastvalue = val;
|
||||
}
|
||||
const wchar_t *getLastValue()
|
||||
{
|
||||
return lastvalue;
|
||||
}
|
||||
|
||||
private:
|
||||
const wchar_t *xmlattributename;
|
||||
StringW lastvalue;
|
||||
int attributeid;
|
||||
int handle;
|
||||
|
||||
};
|
||||
|
||||
class XmlObjectParamSort
|
||||
{
|
||||
public:
|
||||
static inline int compareItem(XmlObjectParam *p1, XmlObjectParam*p2)
|
||||
{
|
||||
return wcscmp(p1->getXmlAttribute(), p2->getXmlAttribute());
|
||||
}
|
||||
static inline int compareAttrib(const wchar_t *attrib, XmlObjectParam *item)
|
||||
{
|
||||
return WCSICMP(attrib, item->getXmlAttribute());
|
||||
}
|
||||
};
|
||||
|
||||
struct XMLParamPair
|
||||
{
|
||||
int id;
|
||||
wchar_t name[64];
|
||||
};
|
||||
|
||||
class XmlObjectI : public XmlObject
|
||||
{
|
||||
public:
|
||||
XmlObjectI();
|
||||
virtual ~XmlObjectI();
|
||||
|
||||
virtual int setXmlParam(const wchar_t *name, const wchar_t *strvalue); // receives from system
|
||||
virtual int setXmlParamById(int xmlhandle, int xmlattributeid, const wchar_t *name, const wchar_t *strvalue); // distributes to inheritors
|
||||
virtual const wchar_t *getXmlParamValue(int n);
|
||||
virtual int getXmlParam(const wchar_t *paramname);
|
||||
const wchar_t *getXmlParamByName(const wchar_t *paramname);
|
||||
void addParam(int xmlhandle, XMLParamPair ¶m, int unused=0);
|
||||
//void addXmlParam(int xmlhandle, const wchar_t *xmlattribute, int xmlattributeid);
|
||||
protected:
|
||||
virtual int onUnknownXmlParam(const wchar_t *param, const wchar_t *value);
|
||||
int newXmlHandle();
|
||||
void hintNumberOfParams(int xmlhandle, int params);
|
||||
|
||||
private:
|
||||
XmlObjectParam *enumParam(int n)
|
||||
{
|
||||
return params[n];
|
||||
}
|
||||
|
||||
PtrListInsertSorted<XmlObjectParam, XmlObjectParamSort> params;
|
||||
int handlepos;
|
||||
|
||||
protected:
|
||||
|
||||
RECVS_DISPATCH;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue