onphp_core.c

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2006-2007 by Konstantin V. Arkhipov                     *
00003  *                                                                         *
00004  *   This program is free software; you can redistribute it and/or modify  *
00005  *   it under the terms of the GNU Lesser General Public License as        *
00006  *   published by the Free Software Foundation; either version 3 of the    *
00007  *   License, or (at your option) any later version.                       *
00008  *                                                                         *
00009  ***************************************************************************/
00010 /* $Id: onphp_core.c 4687 2007-12-09 18:57:18Z voxus $ */
00011 
00012 // for Serializable
00013 #include "Zend/zend_interfaces.h"
00014 
00015 #include "ext/spl/spl_functions.h"
00016 
00017 #include "onphp_core.h"
00018 #include "onphp_util.h"
00019 
00020 #include "core/Base/Enumeration.h"
00021 #include "core/Base/Identifier.h"
00022 #include "core/Base/Identifiable.h"
00023 #include "core/Base/IdentifiableObject.h"
00024 #include "core/Base/Singleton.h"
00025 #include "core/Base/StaticFactory.h"
00026 #include "core/Base/Stringable.h"
00027 #include "core/Base/Named.h"
00028 #include "core/Base/NamedObject.h"
00029 #include "core/Base/Prototyped.h"
00030 #include "core/Base/Instantiatable.h"
00031 
00032 #include "core/DB/Dialect.h"
00033 #include "core/DB/ImaginaryDialect.h"
00034 
00035 #include "core/OSQL/Castable.h"
00036 #include "core/OSQL/DBValue.h"
00037 #include "core/OSQL/DialectString.h"
00038 #include "core/OSQL/FieldTable.h"
00039 #include "core/OSQL/SQLTableName.h"
00040 #include "core/OSQL/Query.h"
00041 #include "core/OSQL/QueryIdentification.h"
00042 
00043 #include "core/Exceptions.h"
00044 
00045 PHP_RINIT_FUNCTION(onphp_core)
00046 {
00047     return PHP_RINIT(Singleton)(INIT_FUNC_ARGS_PASSTHRU);
00048 }
00049 
00050 PHP_RSHUTDOWN_FUNCTION(onphp_core)
00051 {
00052     return PHP_RSHUTDOWN(Singleton)(INIT_FUNC_ARGS_PASSTHRU);
00053 }
00054 
00055 PHP_MINIT_FUNCTION(onphp_core)
00056 {
00057     REGISTER_ONPHP_INTERFACE(Stringable);
00058     REGISTER_ONPHP_INTERFACE(Identifiable);
00059     REGISTER_ONPHP_INTERFACE(Instantiatable);
00060     REGISTER_ONPHP_INTERFACE(Prototyped);
00061     
00062     REGISTER_ONPHP_INTERFACE(Named);
00063     REGISTER_ONPHP_IMPLEMENTS(Named, Identifiable);
00064     
00065     REGISTER_ONPHP_INTERFACE(DialectString);
00066     REGISTER_ONPHP_INTERFACE(SQLTableName);
00067     REGISTER_ONPHP_IMPLEMENTS(SQLTableName, DialectString);
00068     
00069     REGISTER_ONPHP_INTERFACE(Query);
00070     REGISTER_ONPHP_IMPLEMENTS(Query, DialectString);
00071     REGISTER_ONPHP_IMPLEMENTS(Query, Identifiable);
00072     REGISTER_ONPHP_IMPLEMENTS(Query, Stringable);
00073     
00074     REGISTER_ONPHP_STD_CLASS_EX(Identifier);
00075     REGISTER_ONPHP_PROPERTY(Identifier, "id", ZEND_ACC_PRIVATE);
00076     REGISTER_ONPHP_PROPERTY_BOOL(Identifier, "final", 0, ZEND_ACC_PRIVATE);
00077     onphp_ce_Identifier->ce_flags |= ZEND_ACC_FINAL_CLASS;
00078     
00079     REGISTER_ONPHP_STD_CLASS_EX(IdentifiableObject);
00080     REGISTER_ONPHP_PROPERTY(IdentifiableObject, "id", ZEND_ACC_PROTECTED);
00081     
00082     REGISTER_ONPHP_IMPLEMENTS(Identifier, Identifiable);
00083     REGISTER_ONPHP_IMPLEMENTS(IdentifiableObject, Identifiable);
00084 
00085     REGISTER_ONPHP_SUB_CLASS_EX(NamedObject, IdentifiableObject);
00086     REGISTER_ONPHP_PROPERTY(NamedObject, "name", ZEND_ACC_PROTECTED);
00087     REGISTER_ONPHP_IMPLEMENTS(NamedObject, Named);
00088     onphp_ce_NamedObject->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00089 
00090     REGISTER_ONPHP_SUB_CLASS_EX(Enumeration, NamedObject);
00091     REGISTER_ONPHP_PROPERTY(Enumeration, "names", ZEND_ACC_PROTECTED);
00092     onphp_ce_Enumeration->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00093     
00094     // skipping REGISTER_ONPHP_IMPLEMENTS
00095     zend_class_implements(onphp_ce_Enumeration TSRMLS_CC, 1, zend_ce_serializable);
00096 
00097     REGISTER_ONPHP_STD_CLASS_EX(Singleton);
00098     onphp_ce_Singleton->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00099     
00100     REGISTER_ONPHP_STD_CLASS_EX(StaticFactory);
00101     onphp_ce_StaticFactory->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00102     
00103     REGISTER_ONPHP_SUB_CLASS_EX(Dialect, Singleton);
00104     REGISTER_ONPHP_IMPLEMENTS(Dialect, Instantiatable);
00105     onphp_ce_Dialect->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00106     
00107     REGISTER_ONPHP_SUB_CLASS_EX(ImaginaryDialect, Dialect);
00108     onphp_ce_ImaginaryDialect->ce_flags |= ZEND_ACC_FINAL_CLASS;
00109     
00110     REGISTER_ONPHP_STD_CLASS_EX(Castable);
00111     REGISTER_ONPHP_PROPERTY(Castable, "cast", ZEND_ACC_PROTECTED);
00112     onphp_ce_Castable->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00113     
00114     REGISTER_ONPHP_SUB_CLASS_EX(FieldTable, Castable);
00115     REGISTER_ONPHP_PROPERTY(FieldTable, "field", ZEND_ACC_PROTECTED);
00116     REGISTER_ONPHP_IMPLEMENTS(FieldTable, DialectString);
00117     onphp_ce_FieldTable->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00118     
00119     REGISTER_ONPHP_SUB_CLASS_EX(DBValue, Castable);
00120     REGISTER_ONPHP_PROPERTY(DBValue, "value", ZEND_ACC_PRIVATE);
00121     REGISTER_ONPHP_IMPLEMENTS(DBValue, DialectString);
00122     onphp_ce_DBValue->ce_flags |= ZEND_ACC_FINAL_CLASS;
00123     
00124     REGISTER_ONPHP_STD_CLASS_EX(QueryIdentification);
00125     REGISTER_ONPHP_IMPLEMENTS(QueryIdentification, Query);
00126     onphp_ce_QueryIdentification->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00127 
00128     return PHP_MINIT(Exceptions)(INIT_FUNC_ARGS_PASSTHRU);
00129 }

Generated on Sun Dec 9 21:56:23 2007 for onPHP by  doxygen 1.5.4