00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef skMSXMLELEMENTOBJECT_H
00024 #define skMSXMLELEMENTOBJECT_H
00025
00026 #include "msxmldefs.h"
00027
00028 #include "skExecutable.h"
00029 #include <iostream.h>
00030
00031 class skMethodTable;
00032
00033
00034
00035 #define MSXMLELEMENT_TYPE 5
00036
00037
00038
00039
00040 CLASSEXPORT extern ostream& operator<< (ostream& target, const _bstr_t & s);
00041
00058 class CLASSEXPORT skMSXMLElementObject : public skExecutable {
00059 public:
00063 skMSXMLElementObject();
00069 skMSXMLElementObject(const skString& location,XMLElement& elem);
00073 ~skMSXMLElementObject();
00078 int executableType() const;
00082 int intValue() const;
00086 float floatValue() const;
00090 bool boolValue() const;
00094 Char charValue() const;
00098 skString strValue() const;
00106 bool setValue(const skString& s,const skString& attribute,const skRValue& return_value);
00114 bool setValueAt(const skRValue& array_index,const skString& attribute,const skRValue& value);
00124 bool getValue(const skString& s,const skString& attribute,skRValue& return_value);
00129 bool getValueAt(const skRValue& array_index,const skString& attribute,skRValue& value);
00142 bool method(const skString& name,skRValueArray& args,skRValue& ret,skExecutableContext& ctxt);
00147
00152 void copyItemsInto(XMLElement& other);
00156 virtual void setAddIfNotPresent(bool enable);
00160 virtual bool getAddIfNotPresent();
00165 XMLElement getElement();
00171 static skString getData(const XMLElement& element);
00177 static void setData(XMLElement& element,const skString& data);
00184 static XMLElement findChild(XMLElement& parent,const skString& tagname);
00191 static XMLElement findChild(XMLElement& parent,int index);
00200 static XMLElement findChild(XMLElement& parent,const skString& tagname,const skString& attribute,const skString& value);
00204 void setAttribute(skString name,const skString& value);
00209 skString getAttribute(const skString& name);
00213 static skString getAttribute(XMLElement& elem,const skString& name);
00217 static skString toString(_bstr_t& str);
00221 static _bstr_t fromString(const skString& str);
00225 skString getLocation() const;
00227 static int countChildren(XMLElement& parent);
00232 void save(ostream& out);
00236 virtual skString getSource(const skString& location);
00241 virtual void getInstanceVariables(skRValueTable& table);
00242 protected:
00247 virtual void setElement(XMLElement& element);
00253 virtual skMSXMLElementObject * createXMLElementObject(const skString& location,XMLElement& element);
00257 skString m_ScriptLocation;
00262 skExecutableIterator * createIterator(const skString& qualifier);
00266 skExecutableIterator * createIterator();
00267 private:
00271 XMLElement m_Element;
00275 skMethodTable * m_MethodCache;
00279 skMSXMLElementObject(const skMSXMLElementObject&);
00283 skMSXMLElementObject& operator=(const skMSXMLElementObject&);
00288 bool m_AddIfNotPresent;
00289
00290 };
00291
00292 #endif