../contrib/openddlparser/code/OpenDDLCommon.cpp
../contrib/openddlparser/code/OpenDDLExport.cpp
../contrib/openddlparser/code/Value.cpp
+ ../contrib/openddlparser/code/OpenDDLStream.cpp
../contrib/openddlparser/include/openddlparser/OpenDDLParser.h
../contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h
../contrib/openddlparser/include/openddlparser/OpenDDLCommon.h
../contrib/openddlparser/include/openddlparser/OpenDDLExport.h
+ ../contrib/openddlparser/include/openddlparser/OpenDDLStream.h
../contrib/openddlparser/include/openddlparser/DDLNode.h
../contrib/openddlparser/include/openddlparser/Value.h
)
SET ( OPENDDL_PARSER_VERSION_MAJOR 0 )
SET ( OPENDDL_PARSER_VERSION_MINOR 1 )
SET ( OPENDDL_PARSER_VERSION_PATCH 0 )
-SET ( OPENDDL_PARSER_VERSION ${CPPCORE_VERSION_MAJOR}.${CPPCORE_VERSION_MINOR}.${CPPCORE_VERSION_PATCH} )
+SET ( OPENDDL_PARSER_VERSION ${OPENDDL_PARSER_VERSION_MAJOR}.${OPENDDL_PARSER_VERSION_MINOR}.${OPENDDL_PARSER_VERSION_PATCH} )
SET ( PROJECT_VERSION "${OPENDDL_PARSER_VERSION}" )
+option( DDL_USE_CPP11 "Set to ON to use C++11 features ( always on on windows )." ON )
+option( DDL_DEBUG_OUTPUT "Set to ON to use output debug texts" OFF )
+option( DDL_STATIC_LIBRARY "Set to ON to build static libary of OpenDDL Parser." ON )
+option( COVERALLS "Generate coveralls data" OFF )
+
+if ( DDL_USE_CPP11 )
+ if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
+ set( OPENDDL_CXXFLAGS -std=c++0x )
+ elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ set( OPENDDL_CXXFLAGS --std=c++11 )
+ endif()
+else( DDL_USE_CPP11 )
+ add_definitions( -DOPENDDL_NO_USE_CPP11 )
+endif( DDL_USE_CPP11)
+
if( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
find_package(Threads)
else()
add_definitions( -D_CRT_SECURE_NO_WARNINGS )
endif()
+if ( DDL_STATIC_LIBRARY )
+ add_definitions( -DOPENDDL_STATIC_LIBARY )
+endif()
+
add_definitions( -DOPENDDLPARSER_BUILD )
-add_definitions( -DOPENDDL_NO_USE_CPP11 )
add_definitions( -D_VARIADIC_MAX=10 )
+add_definitions( -DGTEST_HAS_PTHREAD=0 )
+if ( DDL_DEBUG_OUTPUT )
+ add_definitions( -DDDL_DEBUG_HEADER_NAME)
+endif()
INCLUDE_DIRECTORIES(
./
)
link_directories(
- ./
+ ${CMAKE_HOME_DIRECTORY}/lib
)
+set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib )
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/bin )
endif()
elseif( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
# Update if necessary
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic -std=c++0x")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic ${OPENDDL_CXXFLAGS}")
elseif ( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" )
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic -std=c++11")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic ${OPENDDL_CXXFLAGS} -Wwrite-strings")
+endif()
+
+if (COVERALLS)
+ include(Coveralls)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
endif()
+# Include the doc component.
+FIND_PACKAGE( doxygen )
+IF ( DOXYGEN_FOUND )
+ CONFIGURE_FILE( doc/openddlparser_doc.in doc/doxygenfile @ONLY )
+ ADD_CUSTOM_TARGET( doc ALL ${DOXYGEN_EXECUTABLE} doc/doxygenfile
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating API documentation with Doxygen" VERBATIM )
+ENDIF ( DOXYGEN_FOUND )
+
SET ( openddl_parser_src
+ code/OpenDDLCommon.cpp
+ code/OpenDDLExport.cpp
code/OpenDDLParser.cpp
+ code/OpenDDLStream.cpp
code/DDLNode.cpp
code/Value.cpp
+ include/openddlparser/OpenDDLCommon.h
+ include/openddlparser/OpenDDLExport.h
include/openddlparser/OpenDDLParser.h
include/openddlparser/OpenDDLParserUtils.h
- include/openddlparser/OpenDDLCommon.h
+ include/openddlparser/OpenDDLStream.h
include/openddlparser/DDLNode.h
include/openddlparser/Value.h
README.md
SOURCE_GROUP( code FILES ${openddl_parser_src} )
-ADD_LIBRARY( openddl_parser SHARED
- ${openddl_parser_src}
+if ( DDL_STATIC_LIBRARY )
+ ADD_LIBRARY( openddl_parser STATIC
+ ${openddl_parser_src}
+ )
+else()
+ ADD_LIBRARY( openddl_parser SHARED
+ ${openddl_parser_src}
+ )
+endif()
+
+SET ( GTEST_PATH contrib/gtest-1.7.0 )
+
+SET ( gtest_src
+ ${GTEST_PATH}/src/gtest-death-test.cc
+ ${GTEST_PATH}/src/gtest-filepath.cc
+ ${GTEST_PATH}/src/gtest-internal-inl.h
+ ${GTEST_PATH}/src/gtest-port.cc
+ ${GTEST_PATH}/src/gtest-printers.cc
+ ${GTEST_PATH}/src/gtest-test-part.cc
+ ${GTEST_PATH}/src/gtest-typed-test.cc
+ ${GTEST_PATH}/src/gtest.cc
+ ${GTEST_PATH}/src/gtest_main.cc
+)
+
+SET( openddl_parser_unittest_src
+ test/UnitTestCommon.h
+ test/DDLNodeTest.cpp
+ test/OpenDDLCommonTest.cpp
+ test/OpenDDLExportTest.cpp
+ test/OpenDDLParserTest.cpp
+ test/OpenDDLParserUtilsTest.cpp
+ test/OpenDDLStreamTest.cpp
+ test/OpenDDLIntegrationTest.cpp
+ test/ValueTest.cpp
+ test/OpenDDLDefectsTest.cpp
+)
+
+SOURCE_GROUP( code FILES ${openddl_parser_unittest_src} )
+SOURCE_GROUP( gtest FILES ${gtest_src} )
+
+ADD_EXECUTABLE( openddl_parser_unittest
+ ${gtest_src}
+ ${openddl_parser_unittest_src}
+)
+
+target_link_libraries( openddl_parser_unittest openddl_parser ${CMAKE_THREAD_LIBS_INIT} )
+
+SET( openddl_parser_demo_src
+ demo/main.cpp
)
+
+if (COVERALLS)
+ set(COVERAGE_SRCS ${gtest_src} ${openddl_parser_unittest_src} )
+
+ # Create the coveralls target.
+ coveralls_setup(
+ "${COVERAGE_SRCS}" # The source files.
+ ON # If we should upload.
+ "${PROJECT_SOURCE_DIR}/cmake/") # (Optional) Alternate project cmake module path.
+endif()
+
+ADD_EXECUTABLE( openddl_parser_demo
+ ${openddl_parser_demo_src}
+)
+
+target_link_libraries( openddl_parser_demo openddl_parser )
- Henry Read ( henrya2 ):
Static build option, Interface improvements
+- (wise86-android)
+fix several mem-leaks
+
- Paul Holland ( pkholland ):
Bugfixes.
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/5606/badge.svg"/>
</a>
-
+Current test coverage:[![Coverage Status](https://coveralls.io/repos/github/kimkulling/openddl-parser/badge.svg?branch=master)](https://coveralls.io/github/kimkulling/openddl-parser?branch=cpp_coveralls)
Get the source code
===================
You can get the code from our git repository, which is located at GitHub. You can clone the repository with the following command:
> cmake CMakeLists.txt
-This command will generate a build environment for your installed build enrironment ( for Visual-Studio-users the project files will be generated, for gcc-users the makefiles will be generated ).
+This command will generate a build environment for your preferred build tool ( for Visual-Studio-users the project files will be generated, for gcc-users the makefiles will be generated ).
When using an IDE open the IDE and run the build. When using GNU-make type in your console:
> make
return m_references;
}
+void DDLNode::dump(IOStreamBase &stream) {
+ // Todo!
+}
+
DDLNode *DDLNode::create( const std::string &type, const std::string &name, DDLNode *parent ) {
const size_t idx( s_allocatedNodes.size() );
DDLNode *node = new DDLNode( type, name, idx, parent );
BEGIN_ODDLPARSER_NS
-StreamFormatterBase::StreamFormatterBase() {
-
-}
-
-StreamFormatterBase::~StreamFormatterBase() {
-
-}
-
-std::string StreamFormatterBase::format( const std::string &statement ) {
- std::string tmp( statement );
- return tmp;
-}
-
-IOStreamBase::IOStreamBase( StreamFormatterBase *formatter )
-: m_formatter( formatter )
-, m_file( ddl_nullptr ) {
- if (ddl_nullptr == m_formatter) {
- m_formatter = new StreamFormatterBase;
- }
-}
-
-IOStreamBase::~IOStreamBase() {
- delete m_formatter;
- m_formatter = ddl_nullptr;
-}
-
-bool IOStreamBase::open( const std::string &name ) {
- m_file = ::fopen( name.c_str(), "a" );
- if (m_file == ddl_nullptr) {
- return false;
- }
-
- return true;
-}
-
-bool IOStreamBase::close() {
- if (ddl_nullptr == m_file) {
- return false;
- }
-
- ::fclose( m_file );
- m_file = ddl_nullptr;
-
- return true;
-}
-
-size_t IOStreamBase::write( const std::string &statement ) {
- if (ddl_nullptr == m_file) {
- return 0;
- }
- std::string formatStatement = m_formatter->format( statement );
- return ::fwrite( formatStatement.c_str(), sizeof( char ), formatStatement.size(), m_file );
-}
-
struct DDLNodeIterator {
const DDLNode::DllNodeList &m_childs;
size_t m_idx;
bool error( false );
in = lookForNextToken( in, end );
- if( *in == '{' ) {
+ if( *in == *Grammar::OpenBracketToken) {
// loop over all children ( data and nodes )
do {
in = parseStructureBody( in, end, error );
if(in == ddl_nullptr){
return ddl_nullptr;
}
- } while ( *in != '}' );
+ } while ( *in != *Grammar::CloseBracketToken);
++in;
} else {
++in;
// get size of id
size_t idLen( 0 );
char *start( in );
- while( !isSeparator( *in ) && !isNewLine( *in ) && ( in != end ) && *in != Grammar::OpenPropertyToken[ 0 ] && *in != Grammar::ClosePropertyToken[ 0 ] && *in != '$' ) {
+ while( !isSeparator( *in ) &&
+ !isNewLine( *in ) && ( in != end ) &&
+ *in != Grammar::OpenPropertyToken[ 0 ] &&
+ *in != Grammar::ClosePropertyToken[ 0 ] &&
+ *in != '$' ) {
++in;
++idLen;
}
for( unsigned int i = 0; i < Value::ddl_types_max; i++ ) {
prim_len = strlen( Grammar::PrimitiveTypeToken[ i ] );
if( 0 == strncmp( in, Grammar::PrimitiveTypeToken[ i ], prim_len ) ) {
- type = ( Value::ValueType ) i;
+ type = static_cast<Value::ValueType>( i );
break;
}
}
--- /dev/null
+/*-----------------------------------------------------------------------------------------------
+The MIT License (MIT)
+
+Copyright (c) 2014-2015 Kim Kulling
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-----------------------------------------------------------------------------------------------*/
+#include <openddlparser/OpenDDLStream.h>
+
+BEGIN_ODDLPARSER_NS
+
+StreamFormatterBase::StreamFormatterBase() {
+ // empty
+}
+
+StreamFormatterBase::~StreamFormatterBase() {
+ // empty
+}
+
+std::string StreamFormatterBase::format(const std::string &statement) {
+ std::string tmp(statement);
+ return tmp;
+}
+
+IOStreamBase::IOStreamBase(StreamFormatterBase *formatter)
+ : m_formatter(formatter)
+ , m_file(ddl_nullptr) {
+ if (ddl_nullptr == m_formatter) {
+ m_formatter = new StreamFormatterBase;
+ }
+}
+
+IOStreamBase::~IOStreamBase() {
+ delete m_formatter;
+ m_formatter = ddl_nullptr;
+}
+
+bool IOStreamBase::open(const std::string &name) {
+ m_file = ::fopen(name.c_str(), "a");
+ if (m_file == ddl_nullptr) {
+ return false;
+ }
+
+ return true;
+}
+
+bool IOStreamBase::close() {
+ if (ddl_nullptr == m_file) {
+ return false;
+ }
+
+ ::fclose(m_file);
+ m_file = ddl_nullptr;
+
+ return true;
+}
+
+bool IOStreamBase::isOpen() const {
+ return ( ddl_nullptr != m_file );
+}
+
+size_t IOStreamBase::read( size_t sizeToRead, std::string &statement ) {
+ if (ddl_nullptr == m_file) {
+ return 0;
+ }
+
+ statement.resize(sizeToRead);
+ const size_t readBytes = ::fread( &statement[0], 1, sizeToRead, m_file );
+
+ return readBytes;
+}
+
+size_t IOStreamBase::write(const std::string &statement) {
+ if (ddl_nullptr == m_file) {
+ return 0;
+ }
+ std::string formatStatement = m_formatter->format(statement);
+ return ::fwrite(formatStatement.c_str(), sizeof(char), formatStatement.size(), m_file);
+}
+
+END_ODDLPARSER_NS
return (Reference*) m_data;
}
-void Value::dump() {
+void Value::dump( IOStreamBase &stream ) {
switch( m_type ) {
case ddl_none:
std::cout << "None" << std::endl;
return m_next;
}
-size_t Value::size(){
+size_t Value::size() const{
size_t result=1;
Value *n=m_next;
while( n!=ddl_nullptr) {
BEGIN_ODDLPARSER_NS
+// Forward declarations
+class IOStreamBase;
class Value;
class OpenDDLParser;
const std::string &getType() const;
/// Set the name of the DDLNode instance.
- /// @param type [in] The name.
+ /// @param name [in] The name.
void setName( const std::string &name );
/// @brief Returns the name of the DDLNode instance.
const std::string &getName() const;
/// @brief Set a new property set.
- /// @param prop [in] The first element of the property set.
+ /// @param prop [in] The first element of the property set.
void setProperties( Property *prop );
/// @brief Returns the first element of the assigned property set.
Property *getProperties() const;
/// @brief Looks for a given property.
- /// @param name [in] The name for the property to look for.
+ /// @param name [in] The name for the property to look for.
/// @return true, if a corresponding property is assigned to the node, false if not.
bool hasProperty( const std::string &name );
bool hasProperties() const;
/// @brief Search for a given property and returns it. Will return ddl_nullptr if no property was found.
- /// @param name [in] The name for the property to look for.
+ /// @param name [in] The name for the property to look for.
/// @return The property or ddl_nullptr if no property was found.
Property *findPropertyByName( const std::string &name );
/// @brief Set a new value set.
- /// @param val [in] The first value instance of the value set.
+ /// @param val [in] The first value instance of the value set.
void setValue( Value *val );
/// @brief Returns the first element of the assigned value set.
Value *getValue() const;
/// @brief Set a new DataArrayList.
- /// @param val [in] The DataArrayList instance.
+ /// @param dtArrayList [in] The DataArrayList instance.
void setDataArrayList( DataArrayList *dtArrayList );
/// @brief Returns the DataArrayList.
DataArrayList *getDataArrayList() const;
/// @brief Set a new Reference set.
- /// @param val [in] The first value instance of the Reference set.
+ /// @param refs [in] The first value instance of the Reference set.
void setReferences( Reference *refs );
/// @brief Returns the first element of the assigned Reference set.
/// @return The first property of the assigned Reference set.
Reference *getReferences() const;
+ /// @brief Will dump the node into the stream.
+ /// @param stream [in] The stream to write to.
+ void dump(IOStreamBase &stream);
+
/// @brief The creation method.
- /// @param type [in] The DDLNode type.
- /// @param name [in] The name for the new DDLNode instance.
- /// @param parent [in] The parent node instance or ddl_nullptr if no parent node is there.
+ /// @param type [in] The DDLNode type.
+ /// @param name [in] The name for the new DDLNode instance.
+ /// @param parent [in] The parent node instance or ddl_nullptr if no parent node is there.
/// @return The new created node instance.
static DDLNode *create( const std::string &type, const std::string &name, DDLNode *parent = ddl_nullptr );
#pragma once
#include <openddlparser/OpenDDLCommon.h>
+#include <openddlparser/OpenDDLStream.h>
#include <openddlparser/Value.h>
BEGIN_ODDLPARSER_NS
-//-------------------------------------------------------------------------------------------------
-/// @ingroup IOStreamBase
-/// @brief This class represents the stream to write out.
-//-------------------------------------------------------------------------------------------------
-class DLL_ODDLPARSER_EXPORT StreamFormatterBase {
-public:
- StreamFormatterBase();
- virtual ~StreamFormatterBase();
- virtual std::string format( const std::string &statement );
-};
-
-//-------------------------------------------------------------------------------------------------
-/// @ingroup IOStreamBase
-/// @brief This class represents the stream to write out.
-//-------------------------------------------------------------------------------------------------
-class DLL_ODDLPARSER_EXPORT IOStreamBase {
-public:
- IOStreamBase( StreamFormatterBase *formatter = ddl_nullptr );
- virtual ~IOStreamBase();
- virtual bool open( const std::string &anme );
- virtual bool close();
- virtual size_t write( const std::string &statement );
-
-private:
- StreamFormatterBase *m_formatter;
- FILE *m_file;
-};
+// Forward declarations
+class IOStreamBase;
//-------------------------------------------------------------------------------------------------
///
struct Reference;
struct Property;
+template<class T>
+inline
+bool isEmbeddedCommentOpenTag( T *in, T *end ) {
+ if ( in == '/' && in+1 == '*' ) {
+ return true;
+ }
+
+ return false;
+}
+
/// @brief Utility function to search for the next token or the end of the buffer.
/// @param in [in] The start position in the buffer.
/// @param end [in] The end position in the buffer.
--- /dev/null
+/*-----------------------------------------------------------------------------------------------
+The MIT License (MIT)
+
+Copyright (c) 2014-2015 Kim Kulling
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-----------------------------------------------------------------------------------------------*/
+#pragma once
+
+#include <openddlparser/OpenDDLCommon.h>
+
+BEGIN_ODDLPARSER_NS
+
+//-------------------------------------------------------------------------------------------------
+/// @ingroup IOStreamBase
+/// @brief This class represents the stream to write out.
+//-------------------------------------------------------------------------------------------------
+class DLL_ODDLPARSER_EXPORT StreamFormatterBase {
+public:
+ /// @brief The class constructor.
+ StreamFormatterBase();
+
+ /// @brief The class destructor, virtual.
+ virtual ~StreamFormatterBase();
+
+ /// @brief Will format the sring and return the new formatted result.
+ /// @param statement [in] The string to reformat.
+ /// @return The reformatted result.
+ virtual std::string format(const std::string &statement);
+};
+
+//-------------------------------------------------------------------------------------------------
+/// @ingroup IOStreamBase
+/// @brief This class represents the stream to write out.
+//-------------------------------------------------------------------------------------------------
+class DLL_ODDLPARSER_EXPORT IOStreamBase {
+public:
+ /// @brief The class constructor with the formatter.
+ /// @param formatter [in] The formatter to use.
+ explicit IOStreamBase(StreamFormatterBase *formatter = ddl_nullptr);
+
+ /// @brief The class destructor, virtual.
+ virtual ~IOStreamBase();
+
+ /// @brief Will open the stream.
+ /// @param name [in] The name for the stream.
+ /// @return true, if the stream was opened successfully, false if not.
+ virtual bool open(const std::string &name);
+
+ /// @brief Will close the stream.
+ /// @return true, if the stream was closed successfully, false if not.
+ virtual bool close();
+
+ /// @brief Returns true, if the stream is open.
+ /// @return true, if the stream is open, false if not.
+ virtual bool isOpen() const;
+
+ /// @brief Will read a string from the stream.
+ /// @param sizeToRead [in] The size to read in bytes.
+ /// @param statement [out] The read statements.
+ /// @return The bytes read from the stream.
+ virtual size_t read( size_t sizeToRead, std::string &statement );
+
+ /// @brief Will write a string into the stream.
+ /// @param statement [in] The string to write.
+ /// @return The bytes written into the stream.
+ virtual size_t write(const std::string &statement);
+
+private:
+ StreamFormatterBase *m_formatter;
+ FILE *m_file;
+};
+
+END_ODDLPARSER_NS
BEGIN_ODDLPARSER_NS
+// Forward declarations
struct ValueAllocator;
+class IOStreamBase;
+
///------------------------------------------------------------------------------------------------
/// @brief This class implements a value.
///
double getDouble() const;
/// @brief Assigns a std::string to the value.
- /// @param value [in] The value.
+ /// @param str [in] The value.
void setString( const std::string &str );
/// @brief Returns the std::string value.
Reference *getRef() const;
/// @brief Dumps the value.
- void dump();
+ /// @param stream [in] The stream to write in.
+ void dump( IOStreamBase &stream );
/// @brief Assigns the next value.
/// @param next [n] The next value.
/// @brief Gets the length of the array.
/// @return The number of items in the array.
- size_t size();
+ size_t size() const;
ValueType m_type;
size_t m_size;