00001 /* 00002 Python wrappers for DCERPC/SMB client routines. 00003 00004 Copyright (C) Tim Potter, 2002 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 2 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program; if not, write to the Free Software 00018 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00019 */ 00020 00021 #ifndef _PY_CONV_H 00022 #define _PY_CONV_H 00023 00024 #include "python/py_common.h" 00025 00026 enum pyconv_types { PY_UNISTR, PY_UNISTR2, PY_UINT32, PY_UINT16, PY_STRING, 00027 PY_UID, PY_GID }; 00028 00029 struct pyconv { 00030 char *name; /* Name of member */ 00031 enum pyconv_types type; /* Type */ 00032 size_t offset; /* Offset into structure */ 00033 }; 00034 00035 PyObject *from_struct(void *s, struct pyconv *conv); 00036 BOOL to_struct(void *s, PyObject *dict, struct pyconv *conv); 00037 PyObject *from_unistr_list(uint16 *dependentfiles); 00038 00039 /* Another version of offsetof (-: */ 00040 00041 #undef offsetof 00042 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 00043 00044 #endif /* _PY_CONV_H */