diff options
Diffstat (limited to 'swig')
| -rw-r--r-- | swig/CMakeLists.txt | 24 | ||||
| -rw-r--r-- | swig/__init__.py | 3 | ||||
| -rw-r--r-- | swig/plist.i | 284 | 
3 files changed, 0 insertions, 311 deletions
| diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt deleted file mode 100644 index 379cb95..0000000 --- a/swig/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -INCLUDE( ${SWIG_USE_FILE} ) - -SET(CMAKE_SWIG_FLAGS -Werror -Wall -modern) - -INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} ) - -SET_SOURCE_FILES_PROPERTIES(plist.i PROPERTIES CPLUSPLUS ON) -SWIG_ADD_MODULE( plist python plist.i ) -SWIG_LINK_LIBRARIES( plist plist plist++ ${PYTHON_LIBRARIES} ) - -EXEC_PROGRAM("${PYTHON_EXECUTABLE}" -    ARGS "-c 'try:\n import distutils.sysconfig; print distutils.sysconfig.get_python_lib(plat_specific=1)\nexcept: pass\n'" -    OUTPUT_VARIABLE DISTUTILS_PYTHON_ILIBRARY_PATH -    ) - -INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/_plist${CMAKE_SHARED_MODULE_SUFFIX} -   DESTINATION ${DISTUTILS_PYTHON_ILIBRARY_PATH}/plist/ ) -INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/plist.py -   DESTINATION ${DISTUTILS_PYTHON_ILIBRARY_PATH}/plist/ ) -INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/__init__.py -   DESTINATION ${DISTUTILS_PYTHON_ILIBRARY_PATH}/plist/ ) -INSTALL( FILES ${CMAKE_CURRENT_SOURCE_DIR}/plist.i -   DESTINATION include/plist/swig COMPONENT dev) - diff --git a/swig/__init__.py b/swig/__init__.py deleted file mode 100644 index f4c0dbb..0000000 --- a/swig/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# -*- coding: utf-8 -*- - -from plist import * diff --git a/swig/plist.i b/swig/plist.i deleted file mode 100644 index 3ae3d02..0000000 --- a/swig/plist.i +++ /dev/null @@ -1,284 +0,0 @@ - /* swig.i */ - %module plist - %feature("autodoc", "1"); - %{ - /* Includes the header in the wrapper code */ - #include <plist/plist++.h> - #include <cstddef> - %} - -%include "std_string.i" -%include "stdint.i" - -%typemap(out) std::vector<char> { -   $result = SWIG_FromCharPtrAndSize((const char*)&($1[0]),(size_t)($1.size())); -} - -%typemap(in) (const std::vector<char>&) -{ -    char* buffer = NULL; -    size_t length = 0; -    SWIG_AsCharPtrAndSize($input, &buffer, &length, NULL); -    $1 = new std::vector<char>(buffer, buffer + length - 1); -} - -#if SWIGPYTHON -//for datetime in python -%{ -#include <ctime> -#include <datetime.h> -%} - -%typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) timeval { -    PyDateTime_IMPORT; -    $1 = PyDateTime_Check($input) ? 1 : 0; -} - -%typemap(out) timeval { -    struct tm* t = gmtime ( &$1.tv_sec ); -    if (t) -    { -	PyDateTime_IMPORT; -	$result = PyDateTime_FromDateAndTime(t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, $1.tv_usec); -    } -} - -%typemap(in) (timeval t) -{ -    PyDateTime_IMPORT; -    if (!PyDateTime_Check($input)) { -	PyErr_SetString(PyExc_ValueError,"Expected a datetime"); -	return NULL; -    } -    struct tm t = { -	PyDateTime_DATE_GET_SECOND($input), -	PyDateTime_DATE_GET_MINUTE($input), -	PyDateTime_DATE_GET_HOUR($input), -	PyDateTime_GET_DAY($input), -	PyDateTime_GET_MONTH($input)-1, -	PyDateTime_GET_YEAR($input)-1900, -	0,0,0 -    }; -    timeval ret = {(int)mktime(&t), PyDateTime_DATE_GET_MICROSECOND($input)}; -    $1 = ret; -} -#endif - -%apply SWIGTYPE *DYNAMIC { PList::Node* }; -%apply SWIGTYPE *DYNAMIC { PList::Structure* }; - -%{ -static swig_type_info *Node_dynamic(void **ptr) -{ -    PList::Node* node = dynamic_cast<PList::Node *>((PList::Node *) *ptr); -    if (node) -    { -	plist_type type = node->GetType(); -	switch(type) -	{ -	    case PLIST_DICT: -		*ptr = dynamic_cast<PList::Dictionary *>(node); -		return SWIGTYPE_p_PList__Dictionary; -	    case PLIST_ARRAY: -		*ptr = dynamic_cast<PList::Array *>(node); -		return SWIGTYPE_p_PList__Array; -	    case PLIST_BOOLEAN: -		*ptr = dynamic_cast<PList::Boolean *>(node); -		return SWIGTYPE_p_PList__Boolean; -	    case PLIST_UINT: -		*ptr = dynamic_cast<PList::Integer *>(node); -		return SWIGTYPE_p_PList__Integer; -	    case PLIST_REAL: -		*ptr = dynamic_cast<PList::Real *>(node); -		return SWIGTYPE_p_PList__Real; -	    case PLIST_KEY: -		*ptr = dynamic_cast<PList::Key *>(node); -		return SWIGTYPE_p_PList__Key; -	    case PLIST_UID: -		*ptr = dynamic_cast<PList::Uid *>(node); -		return SWIGTYPE_p_PList__Uid;	 -	    case PLIST_STRING: -		*ptr = dynamic_cast<PList::String *>(node); -		return SWIGTYPE_p_PList__String; -	    case PLIST_DATE: -		*ptr = dynamic_cast<PList::Date *>(node); -		return SWIGTYPE_p_PList__Date; -	    case PLIST_DATA: -		*ptr = dynamic_cast<PList::Data *>(node); -		return SWIGTYPE_p_PList__Data; -	    default: -		break; -	} -    } -    return 0; -} -%} - -// Register the above casting function -DYNAMIC_CAST(SWIGTYPE_p_PList__Node, Node_dynamic); -DYNAMIC_CAST(SWIGTYPE_p_PList__Structure, Node_dynamic); - -%include "std_map.i" -// Instantiate templates used by example -namespace std { -    %template(PairStringNodePtr) std::pair<string, PList::Node*>; -    %template(MapStringNodePtr) map<string,PList::Node*>; -} - -#if SWIGPYTHON -%rename(__assign__) *::operator=; -%rename(__getitem__) *::operator[]; -%rename(__delitem__) *::Remove; -%rename(__setitem__) PList::Dictionary::Insert; -%rename(__deepcopy__) *::Clone; -%rename(__len__) *::GetSize; -%rename(get_type) *::GetType; -%rename(set_value) *::SetValue; -%rename(get_value) *::GetValue; -%rename(to_xml) *::ToXml; -%rename(to_bin) *::ToBin; -%rename(from_xml) *::FromXml; -%rename(from_bin) *::FromBin; -%rename(append) *::Append; -%rename(insert) PList::Array::Insert; -#endif - -%ignore GetPlist(); -%ignore Boolean(plist_t); -%ignore Integer(plist_t); -%ignore Real(plist_t); -%ignore Key(plist_t); -%ignore Uid(plist_t); -%ignore String(plist_t); -%ignore Data(plist_t); -%ignore Date(plist_t); -%ignore Array(plist_t); -%ignore Dictionary(plist_t); -%ignore Begin(); -%ignore End(); -%ignore Find(); - -%include <plist/Node.h> -%include <plist/Boolean.h> -%include <plist/Integer.h> -%include <plist/Real.h> -%include <plist/Key.h> -%include <plist/Uid.h> -%include <plist/String.h> -%include <plist/Data.h> -%include <plist/Date.h> -%include <plist/Structure.h> -%include <plist/Array.h> -%include <plist/Dictionary.h> - -typedef enum { -	PLIST_BOOLEAN, -	PLIST_UINT, -	PLIST_REAL, -	PLIST_STRING, -	PLIST_ARRAY, -	PLIST_DICT, -	PLIST_DATE, -	PLIST_DATA, -	PLIST_KEY, -	PLIST_UID, -	PLIST_NONE -} plist_type; - -#if SWIGPYTHON - -#if SWIG_VERSION <= 0x010336 -#define SwigPyIterator PySwigIterator -#endif - -%extend PList::Dictionary { - -    %newobject key_iterator(PyObject **PYTHON_SELF); -    swig::SwigPyIterator* key_iterator(PyObject **PYTHON_SELF) { -	return swig::make_output_key_iterator(self->Begin(), self->Begin(), self->End(), *PYTHON_SELF); -    } - -    %newobject value_iterator(PyObject **PYTHON_SELF); -    swig::SwigPyIterator* value_iterator(PyObject **PYTHON_SELF) { -	return swig::make_output_value_iterator(self->Begin(), self->Begin(), self->End(), *PYTHON_SELF); -    } - -    iterator iteritems() -    { -	return self->Begin(); -    } - -    bool has_key(const std::string& key) const { -	PList::Dictionary* dict = const_cast<PList::Dictionary*>(self); -	PList::Dictionary::iterator i = dict->Find(key); -	return i != dict->End(); -    } - -    PyObject* keys() { -	uint32_t size = self->GetSize(); -	int pysize = (size <= (uint32_t) INT_MAX) ? (int) size : -1; -	if (pysize < 0) { -	    SWIG_PYTHON_THREAD_BEGIN_BLOCK; -	    PyErr_SetString(PyExc_OverflowError, -			    "map size not valid in python"); -			    SWIG_PYTHON_THREAD_END_BLOCK; -			    return NULL; -	} -	PyObject* keyList = PyList_New(pysize); -	PList::Dictionary::iterator i = self->Begin(); -	for (int j = 0; j < pysize; ++i, ++j) { -	    PyList_SET_ITEM(keyList, j, swig::from(i->first)); -	} -	return keyList; -    } - -    PyObject* values() { -	uint32_t size = self->GetSize(); -	int pysize = (size <= (uint32_t) INT_MAX) ? (int) size : -1; -	if (pysize < 0) { -	    SWIG_PYTHON_THREAD_BEGIN_BLOCK; -	    PyErr_SetString(PyExc_OverflowError, -			    "map size not valid in python"); -			    SWIG_PYTHON_THREAD_END_BLOCK; -			    return NULL; -	} -	PyObject* valList = PyList_New(pysize); -	PList::Dictionary::iterator i = self->Begin(); -	for (int j = 0; j < pysize; ++i, ++j) { -	    PList::Node *second = i->second; -	    PyObject *down = SWIG_NewPointerObj(SWIG_as_voidptr(second), SWIG_TypeDynamicCast(SWIGTYPE_p_PList__Node, SWIG_as_voidptrptr(&second)), 0 |  0 ); -	    PyList_SET_ITEM(valList, j, down); -	} -	return valList; -    } - -    PyObject* items() { -	uint32_t size = self->GetSize(); -	int pysize = (size <= (uint32_t) INT_MAX) ? (int) size : -1; -	if (pysize < 0) { -	    SWIG_PYTHON_THREAD_BEGIN_BLOCK; -	    PyErr_SetString(PyExc_OverflowError, -			    "map size not valid in python"); -			    SWIG_PYTHON_THREAD_END_BLOCK; -			    return NULL; -	} -	PyObject* itemList = PyList_New(pysize); -	PList::Dictionary::iterator i = self->Begin(); -	for (int j = 0; j < pysize; ++i, ++j) { -	    PyObject *item = PyTuple_New(2); -	    PList::Node *second = i->second; -	    PyObject *down = SWIG_NewPointerObj(SWIG_as_voidptr(second), SWIG_TypeDynamicCast(SWIGTYPE_p_PList__Node, SWIG_as_voidptrptr(&second)), 0 |  0 ); -	    PyTuple_SetItem(item, 0, swig::from(i->first)); -	    PyTuple_SetItem(item, 1, down); -	    PyList_SET_ITEM(itemList, j, item); -	} -	return itemList; -    } - -    %pythoncode {def __iter__(self): return self.key_iterator()} -    %pythoncode {def iterkeys(self): return self.key_iterator()} -    %pythoncode {def itervalues(self): return self.value_iterator()} -} - -#undef SwigPyIterator -#endif | 
