ls.h revision fd81cca9448f3ec45db258eb73b8de41f301e4e1
#ifndef __LS_H__
#define __LS_H__
/**
* Phoebe DOM Implementation.
*
* This is a C++ approximation of the W3C DOM model, which follows
* fairly closely the specifications in the various .idl files, copies of
* which are provided for reference. Most important is this one:
*
*
* Authors:
* Bob Jamison
*
* Copyright (C) 2005 Bob Jamison
*
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "dom.h"
#include "events.h"
#include "traversal.h"
#include "io/domstream.h"
{
{
{
{
//Local definitions
//The idl said Object. Since this is undefined, we will
//use our own class which is designed to be a bit similar to
//java.io streams
//local definitions
//forward declarations
/*#########################################################################
## LSException
#########################################################################*/
/**
* Maybe this should inherit from DOMException?
*/
{
LSException(short theCode)
{
}
{}
/**
*
*/
unsigned short code;
/**
*
*/
/**
* Get a string, translated from the code.
* Like std::exception. Not in spec.
*/
const char *what()
};
/**
* LSExceptionCode
*/
typedef enum
{
PARSE_ERR = 81,
SERIALIZE_ERR = 82
/*#########################################################################
## LSParserFilter
#########################################################################*/
/**
*
*/
{
// Constants returned by startElement and acceptNode
typedef enum
{
FILTER_ACCEPT = 1,
FILTER_REJECT = 2,
FILTER_SKIP = 3,
FILTER_INTERRUPT = 4
} ReturnValues;
/**
*
*/
/**
*
*/
/**
*
*/
virtual unsigned long getWhatToShow() =0;
//##################
//# Non-API methods
//##################
/**
*
*/
virtual ~LSParserFilter() {}
};
/*#########################################################################
## LSInput
#########################################################################*/
/**
*
*/
{
/**
*
*/
{ return characterStream; }
/**
*
*/
/**
*
*/
{ return byteStream; }
/**
*
*/
/**
*
*/
{ return stringData; }
/**
*
*/
{ stringData = val; }
/**
*
*/
{ return systemId; }
/**
*
*/
/**
*
*/
{ return publicId; }
/**
*
*/
/**
*
*/
{ return baseURI; }
/**
*
*/
/**
*
*/
{ return encoding; }
/**
*
*/
/**
*
*/
virtual bool getCertifiedText() const
{ return certifiedText; }
/**
*
*/
{ certifiedText = val; }
//##################
//# Non-API methods
//##################
/**
*
*/
LSInput()
{
byteStream = NULL;
stringData = "";
systemId = "";
publicId = "";
baseURI = "";
encoding = "";
certifiedText = false;
}
/**
*
*/
{
}
/**
*
*/
{}
bool certifiedText;
};
/*#########################################################################
## LSParser
#########################################################################*/
/**
*
*/
{
/**
*
*/
{ return NULL; }
/**
*
*/
{ return filter; }
/**
*
*/
/**
*
*/
{ return false; }
/**
*
*/
{ return false; }
/**
*
*/
{ return NULL; }
/**
*
*/
{ return NULL; }
typedef enum
{
ACTION_INSERT_BEFORE = 3,
ACTION_INSERT_AFTER = 4,
ACTION_REPLACE = 5
} ActionTypes;
/**
*
*/
const NodePtr /*contextArg*/,
unsigned short /*action*/)
{ return NULL; }
/**
*
*/
{}
//##################
//# Non-API methods
//##################
/**
*
*/
LSParser()
{
}
/**
*
*/
{
}
/**
*
*/
};
/*#########################################################################
## LSResourceResolver
#########################################################################*/
/**
*
*/
{
/**
*
*/
const DOMString &/*namespaceURI*/,
const DOMString &/*publicId*/,
const DOMString &/*systemId*/,
const DOMString &/*baseURI*/)
{
//do something
return input;
}
//##################
//# Non-API methods
//##################
/**
*
*/
LSResourceResolver() {}
/**
*
*/
{
}
/**
*
*/
virtual ~LSResourceResolver() {}
};
/*#########################################################################
## LSOutput
#########################################################################*/
/**
*
*/
{
/**
*
*/
{ return characterStream; }
/**
*
*/
/**
*
*/
{ return byteStream; }
/**
*
*/
/**
*
*/
{ return systemId; }
/**
*
*/
/**
*
*/
{ return encoding; }
/**
*
*/
//##################
//# Non-API methods
//##################
/**
*
*/
LSOutput()
{
byteStream = NULL;
systemId = "";
encoding = "";
}
/**
*
*/
{
}
/**
*
*/
{}
};
/*#########################################################################
## LSSerializer
#########################################################################*/
/**
*
*/
{
/**
*
*/
{ return NULL; }
/**
*
*/
{ return newLine; }
/**
*
*/
/**
*
*/
{ return filter; }
/**
*
*/
/**
*
*/
const LSOutput &/*destination*/)
{ return false; }
/**
*
*/
const DOMString &/*uri*/)
{ return false; }
/**
*
*/
{
return str;
}
//##################
//# Non-API methods
//##################
/**
*
*/
{
newLine = "\n";
}
/**
*
*/
{
}
/**
*
*/
virtual ~LSSerializer() {}
};
/*#########################################################################
## LSProgressEvent
#########################################################################*/
/**
*
*/
{
/**
*
*/
{
return input;
}
/**
*
*/
virtual unsigned long getPosition()
{ return position; }
/**
*
*/
virtual unsigned long getTotalSize()
{ return totalSize; }
//##################
//# Non-API methods
//##################
/**
*
*/
{
}
/**
*
*/
{
}
/**
*
*/
virtual ~LSProgressEvent() {}
unsigned long position;
unsigned long totalSize;
};
/*#########################################################################
## LSLoadEvent
#########################################################################*/
/**
*
*/
{
/**
*
*/
{ return newDocument; }
/**
*
*/
{ return input; }
//##################
//# Non-API methods
//##################
/**
*
*/
const DocumentPtr docArg)
{ newDocument = docArg; }
/**
*
*/
{
}
/**
*
*/
virtual ~LSLoadEvent() {}
};
/*#########################################################################
## LSSerializerFilter
#########################################################################*/
/**
*
*/
{
/**
*
*/
virtual unsigned long getWhatToShow() =0;
//##################
//# Non-API methods
//##################
/**
*
*/
virtual ~LSSerializerFilter() {}
};
/*#########################################################################
## DOMImplementationLS
#########################################################################*/
/**
*
*/
{
typedef enum
{
MODE_SYNCHRONOUS = 1,
/**
* To use, for this and subclasses:
* LSParser &parser = myImplementation.createLSParser(mode, schemaType);
*/
const DOMString &schemaType)
/**
* To use, for this and subclasses:
* LSSerializer &serializer = myImplementation.createLSSerializer();
*
*/
/**
*
*/
/**
*
*/
//##################
//# Non-API methods
//##################
/**
*
*/
virtual ~DOMImplementationLS() {}
};
} //namespace ls
} //namespace dom
} //namespace w3c
} //namespace org
#endif // __LS_H__
/*#########################################################################
## E N D O F F I L E
#########################################################################*/