summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvalmat <ufabiz@gmail.com>2014-04-09 12:00:33 +0600
committervalmat <ufabiz@gmail.com>2014-04-09 12:00:33 +0600
commit21ba3f0aae94206457327552666d75dd2cf0a8f2 (patch)
tree266b24a9d549189d4a20f1db45d8edc771e32fca
parent6c7c846edd5b74450b76532da33c25e6cc6a10a4 (diff)
Made compatible. Now works in the new structure of the library.
-rw-r--r--include/namespace.h17
-rw-r--r--zend/extensionimpl.cpp13
-rw-r--r--zend/ini.cpp (renamed from src/ini.cpp)0
-rw-r--r--zend/namespace.cpp15
4 files changed, 36 insertions, 9 deletions
diff --git a/include/namespace.h b/include/namespace.h
index 25d4e5e..645eace 100644
--- a/include/namespace.h
+++ b/include/namespace.h
@@ -207,6 +207,15 @@ public:
// done
return result;
}
+
+ /**
+ * The total number of ini entries
+ * @return size_t
+ */
+ size_t ini_size()
+ {
+ return _ini_entries.size();
+ }
/**
* Apply a callback to each registered function
@@ -227,6 +236,14 @@ public:
* @param callback
*/
void apply(const std::function<void(const std::string &ns, ClassBase &clss)> &callback);
+
+ /**
+ * Filling ini entries into external zend_ini_entry array
+ * @param zend_ini_entry*
+ */
+ void fill_ini(_zend_ini_entry *ini_entries, int module_number);
+
+
};
diff --git a/zend/extensionimpl.cpp b/zend/extensionimpl.cpp
index 3534cdb..545b590 100644
--- a/zend/extensionimpl.cpp
+++ b/zend/extensionimpl.cpp
@@ -116,17 +116,12 @@ int ExtensionImpl::processStartup(int type, int module_number TSRMLS_DC)
auto *extension = find(module_number TSRMLS_CC);
// array contains ini settings
- static zend_ini_entry *ini_entries = new zend_ini_entry[ extension->_ini_entries.size()+1 ];
+ static zend_ini_entry *ini_entries = new zend_ini_entry[ extension->_data->ini_size()+1 ];
- // Filling ini_entries
- unsigned int Ind = 0;
- for (auto &ini : extension->_ini_entries) ini->fill(&ini_entries[Ind++], module_number);
-
- // add last empty ini entry (Zend, for some reason, it requires)
- zend_ini_entry empty_entry { 0, 0, nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr, 0, 0, 0, nullptr };
- ini_entries[Ind] = empty_entry;
+ // Filling ini entries
+ extension->_data->fill_ini(ini_entries, module_number);
- // register
+ // register ini entries in Zend core
REGISTER_INI_ENTRIES();
// initialize the extension
diff --git a/src/ini.cpp b/zend/ini.cpp
index e6a9888..e6a9888 100644
--- a/src/ini.cpp
+++ b/zend/ini.cpp
diff --git a/zend/namespace.cpp b/zend/namespace.cpp
index bea31a1..e9ec631 100644
--- a/zend/namespace.cpp
+++ b/zend/namespace.cpp
@@ -128,6 +128,21 @@ void Namespace::apply(const std::function<void(const std::string &ns, ClassBase
}
/**
+ * Filling ini entries into external zend_ini_entry array
+ * @param zend_ini_entry*
+ */
+void Namespace::fill_ini(zend_ini_entry *ini_entries, int module_number)
+{
+ // loop through the ini entries
+ unsigned int Ind = 0;
+ for (auto &ini : _ini_entries) ini->fill(&ini_entries[Ind++], module_number);
+
+ // add last empty ini entry (Zend, for some reason, it requires)
+ zend_ini_entry empty_entry { 0, 0, nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr, 0, 0, 0, nullptr };
+ ini_entries[Ind] = empty_entry;
+}
+
+/**
* End namespace
*/
}