cvs: php4 /ext/qtdom qtdom_qt.cpp qtdom_qt.h

From: Date: Wed, 15 Nov 2000 19:01:46 +0000
Subject: cvs: php4 /ext/qtdom qtdom_qt.cpp qtdom_qt.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-2622@lists.php.net to get a copy of this message
amos Wed Nov 15 11:01:46 2000 EDT Added files: /php4/ext/qtdom qtdom_qt.cpp qtdom_qt.h Log: Initial import, since PHP cannot be compiled with a C++ compiler all C++ specific calls had to be moved to a separate file without any php includes. It has several C functions which are used for initiating a QDomDocument and traversing it. Index: php4/ext/qtdom/qtdom_qt.cpp +++ php4/ext/qtdom/qtdom_qt.cpp // // $Id: qtdom_qt.cpp,v 1.1 2000/11/15 19:01:43 amos Exp $ // // Implementation of ||| class // // Jan Borsodi <jb@ez.no> // Created on: <09-Nov-2000 11:18:46 root> // // Copyright (C) 1999-2000 eZ Systems. All rights reserved. // extern "C" { //#include "php.h" //#include "php_ini.h" //#include "php_qtdom.h" #include "qtdom_qt.h" } //#if HAVE_QTDOM // #include "ezxmlparser.hpp" #include <qdom.h> #include <qstring.h> #include <qglobal.h> struct qdom_node *qdom_to_node( QDomNode *node ); extern "C" void qdom_do_version( char **ver ) { strcpy( *ver, QT_VERSION_STR ); } extern "C" struct qdom_node *qdom_do_next_node( struct qdom_node *node ) { QDomNode *q_node = (QDomNode *)node->Q_Node; if ( !q_node ) return 0; if ( q_node->isNull() ) return 0; *q_node = q_node->nextSibling(); if ( q_node->isNull() ) return 0; node->Type = q_node->nodeType(); const char *name = q_node->nodeName().latin1(); node->Name = new char[q_node->nodeName().length()+1]; strcpy( node->Name, name ); const char *content = q_node->nodeValue().latin1(); node->Content = new char[q_node->nodeValue().length()+1]; strcpy( node->Content, content ); return node; } extern "C" struct qdom_node *qdom_do_first_child( struct qdom_node *node ) { QDomNode *q_node = (QDomNode *)node->Q_Node; if ( !q_node ) return 0; if ( q_node->isNull() ) return 0; *q_node = q_node->firstChild(); if ( q_node->isNull() ) return 0; node->Type = q_node->nodeType(); const char *name = q_node->nodeName().latin1(); node->Name = new char[q_node->nodeName().length()+1]; strcpy( node->Name, name ); const char *content = q_node->nodeValue().latin1(); node->Content = new char[q_node->nodeValue().length()+1]; strcpy( node->Content, content ); return node; } extern "C" int qdom_do_node_children_count( struct qdom_node *node ) { if ( !node ) return 0; QDomNode *q_node = (QDomNode *)node->Q_Node; if ( !q_node ) return 0; return q_node->childNodes().count(); } extern "C" int qdom_do_node_attribute_count( struct qdom_node *node ) { if ( !node ) return 0; QDomNode *q_node = (QDomNode *)node->Q_Node; if ( !q_node ) return 0; return q_node->attributes().length(); } extern "C" struct qdom_attribute *qdom_do_node_attributes( struct qdom_node *node ) { struct qdom_attribute *attr = new struct qdom_attribute; QDomNode *q_node = (QDomNode *)node->Q_Node; QDomNamedNodeMap *map = new QDomNamedNodeMap( q_node->attributes() ); attr->Q_Node = map; attr->Count = map->length(); return attr; } extern "C" struct qdom_node *qdom_do_attribute_at( struct qdom_attribute *attr, int index ) { if ( !attr ) return 0; QDomNamedNodeMap *map = (QDomNamedNodeMap *)attr->Q_Node; if ( index < 0 || index >= map->length() ) return 0; QDomNode node = map->item( index ); return qdom_to_node( &node ); } extern "C" void qdom_do_attributes_free( struct qdom_attribute *attr ) { if ( !attr ) return; QDomNamedNodeMap *map = (QDomNamedNodeMap *)attr->Q_Node; delete map; delete attr; } extern "C" struct qdom_node *qdom_do_copy_node( struct qdom_node *node ) { if ( !node ) return 0; struct qdom_node *tmp = new struct qdom_node; if ( node->Name ) { tmp->Name = new char[strlen(node->Name)+1]; strcpy( tmp->Name, node->Name ); } else tmp->Name = 0; if ( node->Content ) { tmp->Content = new char[strlen(node->Content)+1]; strcpy( tmp->Content, node->Content ); } else tmp->Content = 0; if ( node->Q_Node ) { QDomNode *q_node = (QDomNode *)node->Q_Node; tmp->Q_Node = new QDomNode( *q_node ); } else tmp->Q_Node = 0; tmp->Type = node->Type; return tmp; } extern "C" void qdom_do_node_free( struct qdom_node *node ) { if ( !node ) return; delete []node->Name; delete []node->Content; QDomNode *q_node = (QDomNode *)node->Q_Node; delete q_node; delete node; } struct qdom_node *qdom_to_node( QDomNode *node ) { if ( !node ) return 0; qdom_node *q_node = new struct qdom_node; q_node->Type = node->nodeType(); const char *name = node->nodeName().latin1(); q_node->Name = new char[node->nodeName().length()+1]; strcpy( q_node->Name, name ); const char *content = node->nodeValue().latin1(); q_node->Content = new char[node->nodeValue().length()+1]; strcpy( q_node->Content, content ); q_node->Q_Node = new QDomNode( *node ); return q_node; } extern "C" void qdom_do_doc_type( struct qdom_doc *doc, char **name ) { if ( !doc ) { *name = 0; return; } QDomDocument *document = (QDomDocument *)doc->Document; QString str = document->doctype().name(); const char *q_name = str.latin1(); if ( q_name ) { *name = new char[strlen(q_name)+1]; strcpy( *name, q_name ); } else { *name = 0; } } extern "C" struct qdom_doc *qdom_do_init( const char *arg ) { struct qdom_doc *doc = new struct qdom_doc; QDomDocument *document = new QDomDocument(); document->setContent( QString( arg ) ); QDomNode *node = new QDomNode; *node = document->documentElement(); doc->Document = document; doc->CurrentNode = node; doc->Children = qdom_to_node( node ); return doc; } extern "C" void qdom_do_free( struct qdom_doc *doc ) { QDomNode *node = (QDomNode *)doc->CurrentNode; QDomDocument *document = (QDomDocument *)doc->Document; delete document; delete node; delete doc->Children; delete doc; } //#endif // HAVE_QTDOM Index: php4/ext/qtdom/qtdom_qt.h +++ php4/ext/qtdom/qtdom_qt.h // -*- Mode: C++ -*- // // $Id: qtdom_qt.h,v 1.1 2000/11/15 19:01:43 amos Exp $ // // Definition of ||| class // // <real-name> <<mail-name>> // Created on: <09-Nov-2000 12:00:24 root> // // Copyright (C) 1999-2000 eZ Systems. All rights reserved. // // IMPORTANT NOTE: You may NOT copy this file or any part of it into // your own programs or libraries. // #ifndef QDOM_QT_H #define QDOM_QT_H struct qdom_node { int Type; char *Name; char *Content; void *Q_Node; }; struct qdom_attribute { int Count; void *Q_Node; }; struct qdom_doc { void *Document; void *CurrentNode; struct qdom_node *Children; }; void qdom_do_version( char **ver ); struct qdom_node *qdom_do_next_node( struct qdom_node *node ); struct qdom_node *qdom_do_first_child( struct qdom_node *node ); struct qdom_attribute *qdom_do_node_attributes( struct qdom_node *node ); struct qdom_node *qdom_do_attribute_at( struct qdom_attribute *attr, int index ); void qdom_do_attributes_free( struct qdom_attribute *node ); int qdom_do_node_children_count( struct qdom_node *node ); int qdom_do_node_attribute_count( struct qdom_node *node ); struct qdom_node *qdom_do_copy_node( struct qdom_node *node ); void qdom_do_node_free( struct qdom_node *node ); void qdom_do_doc_type( struct qdom_doc *doc, char **name ); struct qdom_doc *qdom_do_init( const char *arg ); void qdom_do_free( struct qdom_doc *doc ); #endif // QDOM_QT_H

« previous php.cvs (#2622) next »