You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/filters/kword/libexport/TagProcessing.h

168 lines
5.1 KiB

/*
This file is part of the KDE project
Copyright (C) 2001, 2002, 2004 Nicolas GOUTTE <goutte@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
/*
This file is based on the old file:
/home/kde/koffice/filters/kword/ascii/asciiexport.cc
The old file was copyrighted by
Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org>
Copyright (c) 2000 ID-PRO Deutschland GmbH. All rights reserved.
Contact: Wolf-Michael Bolle <Bolle@ID-PRO.de>
The old file was licensed under the terms of the GNU Library General Public
License version 2.
*/
#ifndef EXPORTTAGPROCESSING_H
#define EXPORTTAGPROCESSING_H
#include <tqdom.h>
#include <tqvaluelist.h>
#include <kdemacros.h>
#include <kdebug.h>
class KWEFKWordLeader;
/**
* The class TagProcessing and the two functions ProcessSubtags () and
* AllowNoSubtags () allow for easing parsing of subtags in the
* current tag. If don't expect any subtags you call AllowNoSubtags ().
* Otherwise you create a list of TagProcessing elements and pass that
* to ProcessSubtags () which will go through all subtags it can find,
* call the corresponding processing function, and do all the
* necessary error handling.
*/
class TagProcessing
{
public:
TagProcessing ()
{}
TagProcessing (const TQString& n,
void (*p)(TQDomNode, void *, KWEFKWordLeader*),
void *d) : name (n), processor (p), data (d)
{}
/**
* @brief No-op constructor
*
* Avoids a warning that a tag is unknown.
*/
TagProcessing (const TQString& _name) : name(_name), processor(0), data(0)
{}
TQString name;
void (*processor)(TQDomNode, void *, KWEFKWordLeader*);
void *data;
};
void ProcessSubtags ( const TQDomNode &parentNode,
TQValueList<TagProcessing> &tagProcessingList,
KWEFKWordLeader *leader);
void AllowNoSubtags ( const TQDomNode& myNode, KWEFKWordLeader *leader );
/**
* The class AttrProcessing and the two functions ProcessAttributes ()
* and AllowNoSubtags () allow for easing parsing of the current tag's
* attributes. If don't expect any attributes you call AllowNoAttributes ().
* Otherwise you create a list of AttrProcessing elements and pass
* that to ProcessAttributes () which will go through all attributes
* it can find, retrieve the value in the datatype defined, and do all
* the necessary error handling.
*/
class AttrProcessing
{
public:
enum AttrType
{ AttrNull = 0, AttrInt, AttrDouble, AttrBool, AttrTQString };
/**
* @brief Default constructor
*/
AttrProcessing () : type( AttrNull ), data(0) {}
/**
* @brief Old constructor (without type checking)
* @deprecated do not use for new code
*/
AttrProcessing ( const TQString& n, const TQString& t, void *d ) KDE_DEPRECATED;
/**
* @brief No-op constructor
*
* This just avoids that a warning is triggered that an attribute is not known
*/
AttrProcessing ( const TQString& _name )
: name( _name ), type( AttrNull ), data( 0 ) {}
/**
* @brief Integer constructor
*
* Get the attribute value as an integer
*/
AttrProcessing ( const TQString& _name, int& i )
: name( _name ), type( AttrInt ), data( &i ) {}
/**
* @brief Double constructor
*
* Get the attribute value as a double
*/
AttrProcessing ( const TQString& _name, double& d )
: name( _name ), type( AttrDouble ), data( &d ) {}
/**
* @brief Boolean constructor
*
* Get the attribute value as a bool
* (The values "yes,", "no", "true", "false", "0" and "1" are supported)
*/
AttrProcessing ( const TQString& _name, bool& flag )
: name( _name ), type( AttrBool ), data( &flag ) {}
/**
* @brief String constructor
*
* Get the attribute value as a TQString
*/
AttrProcessing ( const TQString& _name, TQString& str )
: name( _name ), type( AttrTQString ), data( &str ) {}
public:
TQString name;
AttrType type;
void *data;
};
void ProcessAttributes ( const TQDomNode &myNode,
TQValueList<AttrProcessing> &attrProcessingList );
void AllowNoAttributes ( const TQDomNode& myNode );
#endif