// Created on: 2006-05-25 // Created by: Alexander GRIGORIEV // Copyright (c) 2006-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef VrmlData_Node_HeaderFile #define VrmlData_Node_HeaderFile #include "NCollection_List.hxx" #include "Standard_Type.hxx" #include "Standard_TypeDef.hxx" #include "TCollection_AsciiString.hxx" #include "Standard_CStringHasher.hxx" #include "VrmlData_ErrorStatus.hxx" #define VRMLDATA_LCOMPARE(aa, bb) ((strncmp(aa, bb, sizeof(bb) - 1)) ? 0L : (aa += sizeof(bb) - 1)) struct VrmlData_InBuffer; class VrmlData_Scene; class TCollection_AsciiString; /** * Abstract VRML Node */ class VrmlData_Node : public Standard_Transient { public: // ---------- PUBLIC METHODS ---------- /** * Empty constructor */ Standard_EXPORT VrmlData_Node(); /** * Destructor */ virtual ~VrmlData_Node() {} /** * Query the Scene that contains this Node */ inline const VrmlData_Scene& Scene() const { return *myScene; } /** * Query the name */ inline const char* Name() const { return myName; } /** * Read a complete node definition from VRML stream * @param theBuffer * Buffer receiving the input data. * @param theNode * [out] Node restored from the buffer data * @param Type * Node type to be checked. If it is NULL(default) no type checking is done. * Otherwise the created node is matched and an error is returned if * no match detected. */ Standard_EXPORT VrmlData_ErrorStatus ReadNode(VrmlData_InBuffer& theBuffer, Handle(VrmlData_Node)& theNode, const Handle(Standard_Type)& Type = NULL); /** * Read the Node from input stream. */ Standard_EXPORT virtual VrmlData_ErrorStatus Read(VrmlData_InBuffer& theBuffer) = 0; /** * Write the Node to output stream. */ Standard_EXPORT virtual VrmlData_ErrorStatus Write(const char* thePrefix) const; /** * Returns True if the node is default, then it would not be written. */ Standard_EXPORT virtual Standard_Boolean IsDefault() const; /** * Write the closing brace in the end of a node output. */ Standard_EXPORT VrmlData_ErrorStatus WriteClosing() const; /** * Create a copy of this node. * If the parameter is null, a new copied node is created. Otherwise new node * is not created, but rather the given one is modified.
* This method nullifies the argument node if its member myScene differs
* from that one of the current instance.
*/
Standard_EXPORT virtual Handle(VrmlData_Node) Clone(const Handle(VrmlData_Node)&) const;
/**
* Read one boolean value (TRUE or FALSE).
*/
Standard_EXPORT static VrmlData_ErrorStatus ReadBoolean(VrmlData_InBuffer& theBuffer,
Standard_Boolean& theResult);
/**
* Read one quoted string, the quotes are removed.
*/
Standard_EXPORT static VrmlData_ErrorStatus ReadString(VrmlData_InBuffer& theBuffer,
TCollection_AsciiString& theRes);
/**
* Read one quoted string, the quotes are removed.
*/
Standard_EXPORT static VrmlData_ErrorStatus ReadMultiString(
VrmlData_InBuffer& theBuffer,
NCollection_List