| ## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# iSyntaxService Struct Reference
[Loading & Saving support]

This component provides services for other loaders to easily parse properties of standard CS world syntax. More...

`#include <imap/services.h>`

Inheritance diagram for iSyntaxService:

[legend]
List of all members.

## Public Member Functions
virtual bool | HandlePortalParameter (iDocumentNode *child, iLoaderContext *ldr_context, uint32 &flags, bool &mirror, bool &warp, int &msv, csMatrix3 &m, csVector3 &before, csVector3 &after, iString *destSector, bool &handled, bool &autoresolve)=0
| Handles a common portal parameter.
virtual bool | ParseAlphaMode (iDocumentNode *node, iStringSet *strings, csAlphaMode &alphaMode, bool allowAutoMode=true)=0
| Parse an alphamode description.
virtual bool | ParseBool (iDocumentNode *node, bool &result, bool def_result)=0
| Parse the value of this node and return a boolean depending on this value.
virtual bool | ParseBoolAttribute (iDocumentNode *node, const char *attrname, bool &result, bool def_result, bool required)=0
| Parse the value of an attribute of this node and return a boolean depending on this value.
virtual bool | ParseBox (iDocumentNode *node, csOBB &b)=0
| Parse a box description.
virtual bool | ParseBox (iDocumentNode *node, csBox3 &v)=0
| Parse a box description.
virtual bool | ParseColor (iDocumentNode *node, csColor4 &c)=0
| Parse a color description.
virtual bool | ParseColor (iDocumentNode *node, csColor &c)=0
| Parse a color description.
virtual bool | ParseGradient (iDocumentNode *node, iGradient *gradient)=0
| Parse a color gradient.
virtual bool | ParseKey (iDocumentNode *node, iKeyValuePair *&keyvalue)=0
| Parse a key definition.
virtual bool | ParseMatrix (iDocumentNode *node, csMatrix3 &m)=0
| Parse a matrix description.
virtual bool | ParseMixmode (iDocumentNode *node, uint &mixmode, bool allowFxMesh=false)=0
| Parse a mixmode description.
virtual bool | ParsePlane (iDocumentNode *node, csPlane3 &p)=0
| Parse a plane description.
virtual csRef< iRenderBuffer > | ParseRenderBuffer (iDocumentNode *node)=0
| Parse a user render buffer.
virtual csRef< iShader > | ParseShaderRef (iLoaderContext *ldr_context, iDocumentNode *node)=0
| Parse a node that is a reference to a shader.
virtual bool | ParseShaderVar (iLoaderContext *ldr_context, iDocumentNode *node, csShaderVariable &var)=0
| Parse a shader variable declaration.
virtual csRef< iShaderVariableAccessor > | ParseShaderVarExpr (iDocumentNode *node)=0
| Parse a shader variable expression.
virtual bool | ParseVector (iDocumentNode *node, csVector2 &v)=0
| Parse a vector description.
virtual bool | ParseVector (iDocumentNode *node, csVector3 &v)=0
| Parse a vector description.
virtual bool | ParseZMode (iDocumentNode *node, csZBufMode &zmode, bool allowZmesh=false)=0
| Attempt to parse a zmode from node.
virtual bool | WriteAlphaMode (iDocumentNode *node, iStringSet *strings, const csAlphaMode &alphaMode)=0
| Write an alphamode description.
bool | WriteBool (iDocumentNode *node, const char *name, bool value, bool default_value)
| Write a node representing the value of the boolean, if it differs from a provided default value.
virtual bool | WriteBool (iDocumentNode *node, const char *name, bool value)=0
| Write a node representing the value of the boolean.
virtual bool | WriteBox (iDocumentNode *node, const csOBB &b)=0
| Write a box description.
virtual bool | WriteBox (iDocumentNode *node, const csBox3 &v)=0
| Write a box description.
virtual bool | WriteColor (iDocumentNode *node, const csColor4 &c)=0
| Write a color description.
virtual bool | WriteColor (iDocumentNode *node, const csColor &c)=0
| Write a color description.
virtual bool | WriteGradient (iDocumentNode *node, iGradient *gradient)=0
| Write a color gradient.
virtual bool | WriteKey (iDocumentNode *node, iKeyValuePair *keyvalue)=0
| Write a key definition and add the key to the given object, Returns true if successful.
virtual bool | WriteMatrix (iDocumentNode *node, const csMatrix3 &m)=0
| Write a matrix description.
virtual bool | WriteMixmode (iDocumentNode *node, uint mixmode, bool allowFxMesh)=0
| Write a mixmode description.
virtual bool | WritePlane (iDocumentNode *node, const csPlane3 &p)=0
| Write a plane description.
virtual bool | WriteRenderBuffer (iDocumentNode *node, iRenderBuffer *buffer)=0
| Write a render buffer.
virtual bool | WriteShaderVar (iDocumentNode *node, csShaderVariable &var)=0
| Write a shader variable declaration.
virtual bool | WriteVector (iDocumentNode *node, const csVector2 &v)=0
| Write a vector description.
virtual bool | WriteVector (iDocumentNode *node, const csVector3 &v)=0
| Write a vector description.
virtual bool | WriteZMode (iDocumentNode *node, csZBufMode zmode, bool allowZmesh)=0
| Write a ZMode description.
Parse reporting helpers
virtual void | Report (const char *msgid, int severity, iDocumentNode *errornode, const char *msg,...)=0
| Report something, also gives a path in the XML tree.
virtual void | ReportBadToken (iDocumentNode *badtokennode)=0
| Report a bad token.
virtual void | ReportError (const char *msgid, iDocumentNode *errornode, const char *msg,...)=0
| Report an error and also gives a path in the XML tree.

## Detailed Description

This component provides services for other loaders to easily parse properties of standard CS world syntax.

Definition at line 73 of file services.h.

## Member Function Documentation

virtual bool iSyntaxService::HandlePortalParameter | ( | iDocumentNode * | child,
|  | iLoaderContext * | ldr_context,
|  | uint32 & | flags,
|  | bool & | mirror,
|  | bool & | warp,
|  | int & | msv,
|  | csMatrix3 & | m,
|  | csVector3 & | before,
|  | csVector3 & | after,
|  | iString * | destSector,
|  | bool & | handled,
|  | bool & | autoresolve |
| ) |  |  | `[pure virtual]`

Handles a common portal parameter.

flags: contains all flags found in the description. Returns false on failure. Returns false in 'handled' if it couldn't understand the token.

virtual bool iSyntaxService::ParseAlphaMode | ( | iDocumentNode * | node,
|  | iStringSet * | strings,
|  | csAlphaMode & | alphaMode,
|  | bool | allowAutoMode = `true` |
| ) |  |  | `[pure virtual]`

Parse an alphamode description.

Returns true if successful.

virtual bool iSyntaxService::ParseBool | ( | iDocumentNode * | node,
|  | bool & | result,
|  | bool | def_result |
| ) |  |  | `[pure virtual]`

Parse the value of this node and return a boolean depending on this value.

The following mapping happens (case insensitive):

- 1 -> true
- 0 -> false
- yes -> true
- no -> false
- true -> true
- false -> false
- on -> true
- off -> false
- (empty value) -> (def_result)
- (everyting else) -> error

virtual bool iSyntaxService::ParseBoolAttribute | ( | iDocumentNode * | node,
|  | const char * | attrname,
|  | bool & | result,
|  | bool | def_result,
|  | bool | required |
| ) |  |  | `[pure virtual]`

Parse the value of an attribute of this node and return a boolean depending on this value.

The following mapping happens (case insensitive):

- 1 -> true
- 0 -> false
- yes -> true
- no -> false
- true -> true
- false -> false
- on -> true
- off -> false
- (empty value) -> (def_result)
- (everyting else) -> error
  Parameters:

    | node | Document node with the attribute to parse.
    | attrname | Name of the attribute.
    | result | Returns the result.
    | def_result | Default result value.
    | required | if this is true then not having the attribute will result in an error. If this is false then not having the attribute will result in the default value.

  Returns:
    Whether the parsing was successful. `false` if an error occured.

virtual bool iSyntaxService::ParseBox | ( | iDocumentNode * | node,
|  | csOBB & | b |
| ) |  |  | `[pure virtual]`

Parse a box description.

Returns true if successful.

virtual bool iSyntaxService::ParseBox | ( | iDocumentNode * | node,
|  | csBox3 & | v |
| ) |  |  | `[pure virtual]`

Parse a box description.

Returns true if successful.

virtual bool iSyntaxService::ParseColor | ( | iDocumentNode * | node,
|  | csColor4 & | c |
| ) |  |  | `[pure virtual]`

Parse a color description.

Returns true if successful.

virtual bool iSyntaxService::ParseColor | ( | iDocumentNode * | node,
|  | csColor & | c |
| ) |  |  | `[pure virtual]`

Parse a color description.

Returns true if successful.

virtual bool iSyntaxService::ParseGradient | ( | iDocumentNode * | node,
|  | iGradient * | gradient |
| ) |  |  | `[pure virtual]`

Parse a color gradient.

Parameters:

  | node | Document node containing the gradient data.
  | gradient | Valid pointer to a gradient interface which is filled with the data from the document node.

virtual bool iSyntaxService::ParseKey | ( | iDocumentNode * | node,
|  | iKeyValuePair *& | keyvalue |
| ) |  |  | `[pure virtual]`

Parse a key definition.

A iKeyValuePair instance is return in "keyvalue", with refcount 1 Returns true if successful.

virtual bool iSyntaxService::ParseMatrix | ( | iDocumentNode * | node,
|  | csMatrix3 & | m |
| ) |  |  | `[pure virtual]`

Parse a matrix description.

Returns true if successful.

virtual bool iSyntaxService::ParseMixmode | ( | iDocumentNode * | node,
|  | uint & | mixmode,
|  | bool | allowFxMesh = `false` |
| ) |  |  | `[pure virtual]`

Parse a mixmode description.

Returns true if successful.

virtual bool iSyntaxService::ParsePlane | ( | iDocumentNode * | node,
|  | csPlane3 & | p |
| ) |  |  | `[pure virtual]`

Parse a plane description.

Returns true if successful.

virtual csRef<iRenderBuffer> iSyntaxService::ParseRenderBuffer | ( | iDocumentNode * | node | ) | `[pure virtual]`

Parse a user render buffer.

virtual csRef<iShader> iSyntaxService::ParseShaderRef | ( | iLoaderContext * | ldr_context,
|  | iDocumentNode * | node |
| ) |  |  | `[pure virtual]`

Parse a node that is a reference to a shader.

Those nodes look like `<nodename name="shadername" file="/path/to/shader.xml" />`. First, the shader manager is queried for a shader of the name specified in the `name` attribute. If this failed, the shader is attempted to be loaded from the `file` specified. Note that if the name appearing in the shader file and the name of the `name` attribute mismatches, this method fails (and the loaded shader is not registered with the shader manager),

virtual bool iSyntaxService::ParseShaderVar | ( | iLoaderContext * | ldr_context,
|  | iDocumentNode * | node,
|  | csShaderVariable & | var |
| ) |  |  | `[pure virtual]`

Parse a shader variable declaration.

virtual csRef<iShaderVariableAccessor> iSyntaxService::ParseShaderVarExpr | ( | iDocumentNode * | node | ) | `[pure virtual]`

Parse a shader variable expression.

Returns an acessor that can be set on a shader variable. The accessor subsequently evaluates the expression.

virtual bool iSyntaxService::ParseVector | ( | iDocumentNode * | node,
|  | csVector2 & | v |
| ) |  |  | `[pure virtual]`

Parse a vector description.

Returns true if successful.

virtual bool iSyntaxService::ParseVector | ( | iDocumentNode * | node,
|  | csVector3 & | v |
| ) |  |  | `[pure virtual]`

Parse a vector description.

Returns true if successful.

virtual bool iSyntaxService::ParseZMode | ( | iDocumentNode * | node,
|  | csZBufMode & | zmode,
|  | bool | allowZmesh = `false` |
| ) |  |  | `[pure virtual]`

Attempt to parse a zmode from node.

allowZmesh specifies whether ZMESH and ZMESH2 zmodes should be saved to zmode or rejected, causing the method to fail and return 'false'.

Remarks:
  As z modes usually appear "in between" other document nodes, this function does not report an error if the token isn't recognized, but only returns 'false'.

virtual void iSyntaxService::Report | ( | const char * | msgid,
|  | int | severity,
|  | iDocumentNode * | errornode,
|  | const char * | msg,
|  |  | ... |
| ) |  |  | `[pure virtual]`

Report something, also gives a path in the XML tree.

See also:
  Notes about string formatting in Crystal Space

virtual void iSyntaxService::ReportBadToken | ( | iDocumentNode * | badtokennode | ) | `[pure virtual]`

Report a bad token.

This is a convenience function which will eventually call ReportError().

virtual void iSyntaxService::ReportError | ( | const char * | msgid,
|  | iDocumentNode * | errornode,
|  | const char * | msg,
|  |  | ... |
| ) |  |  | `[pure virtual]`

Report an error and also gives a path in the XML tree.

See also:
  Notes about string formatting in Crystal Space

virtual bool iSyntaxService::WriteAlphaMode | ( | iDocumentNode * | node,
|  | iStringSet * | strings,
|  | const csAlphaMode & | alphaMode |
| ) |  |  | `[pure virtual]`

Write an alphamode description.

Returns true if successful.

bool iSyntaxService::WriteBool | ( | iDocumentNode * | node,
|  | const char * | name,
|  | bool | value,
|  | bool | default_value |
| ) |  |  | `[inline]`

Write a node representing the value of the boolean, if it differs from a provided default value.

Definition at line 152 of file services.h.

References WriteBool().

virtual bool iSyntaxService::WriteBool | ( | iDocumentNode * | node,
|  | const char * | name,
|  | bool | value |
| ) |  |  | `[pure virtual]`

Write a node representing the value of the boolean.

Referenced by WriteBool().

virtual bool iSyntaxService::WriteBox | ( | iDocumentNode * | node,
|  | const csOBB & | b |
| ) |  |  | `[pure virtual]`

Write a box description.

Returns true if successful.

virtual bool iSyntaxService::WriteBox | ( | iDocumentNode * | node,
|  | const csBox3 & | v |
| ) |  |  | `[pure virtual]`

Write a box description.

Returns true if successful.

virtual bool iSyntaxService::WriteColor | ( | iDocumentNode * | node,
|  | const csColor4 & | c |
| ) |  |  | `[pure virtual]`

Write a color description.

Returns true if successful.

virtual bool iSyntaxService::WriteColor | ( | iDocumentNode * | node,
|  | const csColor & | c |
| ) |  |  | `[pure virtual]`

Write a color description.

Returns true if successful.

virtual bool iSyntaxService::WriteGradient | ( | iDocumentNode * | node,
|  | iGradient * | gradient |
| ) |  |  | `[pure virtual]`

Write a color gradient.

virtual bool iSyntaxService::WriteKey | ( | iDocumentNode * | node,
|  | iKeyValuePair * | keyvalue |
| ) |  |  | `[pure virtual]`

Write a key definition and add the key to the given object, Returns true if successful.

virtual bool iSyntaxService::WriteMatrix | ( | iDocumentNode * | node,
|  | const csMatrix3 & | m |
| ) |  |  | `[pure virtual]`

Write a matrix description.

Returns true if successful.

virtual bool iSyntaxService::WriteMixmode | ( | iDocumentNode * | node,
|  | uint | mixmode,
|  | bool | allowFxMesh |
| ) |  |  | `[pure virtual]`

Write a mixmode description.

Returns true if successful.

virtual bool iSyntaxService::WritePlane | ( | iDocumentNode * | node,
|  | const csPlane3 & | p |
| ) |  |  | `[pure virtual]`

Write a plane description.

Returns true if successful.

virtual bool iSyntaxService::WriteRenderBuffer | ( | iDocumentNode * | node,
|  | iRenderBuffer * | buffer |
| ) |  |  | `[pure virtual]`

Write a render buffer.

virtual bool iSyntaxService::WriteShaderVar | ( | iDocumentNode * | node,
|  | csShaderVariable & | var |
| ) |  |  | `[pure virtual]`

Write a shader variable declaration.

virtual bool iSyntaxService::WriteVector | ( | iDocumentNode * | node,
|  | const csVector2 & | v |
| ) |  |  | `[pure virtual]`

Write a vector description.

Returns true if successful.

virtual bool iSyntaxService::WriteVector | ( | iDocumentNode * | node,
|  | const csVector3 & | v |
| ) |  |  | `[pure virtual]`

Write a vector description.

Returns true if successful.

virtual bool iSyntaxService::WriteZMode | ( | iDocumentNode * | node,
|  | csZBufMode | zmode,
|  | bool | allowZmesh |
| ) |  |  | `[pure virtual]`

Write a ZMode description.

Returns true if successful.

The documentation for this struct was generated from the following file:

- imap/services.h