✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.84
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python35/include/CXX/Python3//ExtensionTypeBase.hxx
//-----------------------------------------------------------------------------
//
// Copyright (c) 1998 - 2007, The Regents of the University of California
// Produced at the Lawrence Livermore National Laboratory
// All rights reserved.
//
// This file is part of PyCXX. For details,see http://cxx.sourceforge.net/. The
// full copyright notice is contained in the file COPYRIGHT located at the root
// of the PyCXX distribution.
//
// Redistribution  and  use  in  source  and  binary  forms,  with  or  without
// modification, are permitted provided that the following conditions are met:
//
//  - Redistributions of  source code must  retain the above  copyright notice,
//    this list of conditions and the disclaimer below.
//  - Redistributions in binary form must reproduce the above copyright notice,
//    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
//    documentation and/or materials provided with the distribution.
//  - Neither the name of the UC/LLNL nor  the names of its contributors may be
//    used to  endorse or  promote products derived from  this software without
//    specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
// ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
// CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
// ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
// SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
// CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
// LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
// OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
// DAMAGE.
//
//-----------------------------------------------------------------------------

#ifndef __CXX_ExtensionTypeBase__h
#define __CXX_ExtensionTypeBase__h

namespace Py
{
    // Class PythonExtension is what you inherit from to create
    // a new Python extension type. You give your class itself
    // as the template paramter.

    // There are two ways that extension objects can get destroyed.
    // 1. Their reference count goes to zero
    // 2. Someone does an explicit delete on a pointer.
    // In(1) the problem is to get the destructor called 
    //      We register a special deallocator in the Python type object
    //      (see behaviors()) to do this.
    // In(2) there is no problem, the dtor gets called.

    // PythonExtension does not use the usual Python heap allocator, 
    // instead using new/delete. We do the setting of the type object
    // and reference count, usually done by PyObject_New, in the 
    // base class ctor.

    // This special deallocator does a delete on the pointer.

    class PythonExtensionBase : public PyObject
    {
    public:
        PythonExtensionBase();
        virtual ~PythonExtensionBase();

    public:
        // object 
        virtual void reinit( Tuple &args, Dict &kwds );

        // object basics
#ifdef PYCXX_PYTHON_2TO3
        virtual int print( FILE *, int );
#endif
        virtual Object getattr( const char * );
        virtual int setattr( const char *, const Object & );
        virtual Object getattro( const String & );
        Object genericGetAttro( const String & );
        virtual int setattro( const String &, const Object & );
        int genericSetAttro( const String &, const Object & );
        virtual int compare( const Object & );
        virtual Object rich_compare( const Object &, int );
        virtual Object repr();
        virtual Object str();
        virtual long hash();
        virtual Object call( const Object &, const Object & );
        virtual Object iter();
        virtual PyObject *iternext();

        // Sequence methods
        virtual int sequence_length();
        virtual Object sequence_concat( const Object & );
        virtual Object sequence_repeat( Py_ssize_t );
        virtual Object sequence_item( Py_ssize_t );
        virtual int sequence_ass_item( Py_ssize_t, const Object & );

        // Mapping
        virtual int mapping_length();
        virtual Object mapping_subscript( const Object & );
        virtual int mapping_ass_subscript( const Object &, const Object & );

        // Number
        virtual Object number_negative();
        virtual Object number_positive();
        virtual Object number_absolute();
        virtual Object number_invert();
        virtual Object number_int();
        virtual Object number_float();
        virtual Object number_long();
        virtual Object number_add( const Object & );
        virtual Object number_subtract( const Object & );
        virtual Object number_multiply( const Object & );
        virtual Object number_remainder( const Object & );
        virtual Object number_divmod( const Object & );
        virtual Object number_lshift( const Object & );
        virtual Object number_rshift( const Object & );
        virtual Object number_and( const Object & );
        virtual Object number_xor( const Object & );
        virtual Object number_or( const Object & );
        virtual Object number_power( const Object &, const Object & );

        // Buffer
        virtual int buffer_get( Py_buffer *, int flags );
        virtual int buffer_release( Py_buffer *buf );

    public:
        // helper functions to call function fn_name with 0 to 9 args
        Object callOnSelf( const std::string &fn_name );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3,
                                const Object &arg4 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3,
                                const Object &arg4, const Object &arg5 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3,
                                const Object &arg4, const Object &arg5, const Object &arg6 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3,
                                const Object &arg4, const Object &arg5, const Object &arg6,
                                const Object &arg7 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3,
                                const Object &arg4, const Object &arg5, const Object &arg6,
                                const Object &arg7, const Object &arg8 );
        Object callOnSelf( const std::string &fn_name,
                                const Object &arg1, const Object &arg2, const Object &arg3,
                                const Object &arg4, const Object &arg5, const Object &arg6,
                                const Object &arg7, const Object &arg8, const Object &arg9 );

    public:
        virtual PyObject *selfPtr() = 0;
        virtual Object self() = 0;

    private:
        void missing_method( void );
        static PyObject *method_call_handler( PyObject *self, PyObject *args );
    };

} // Namespace Py

// End of __CXX_ExtensionTypeBase__h
#endif


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
25 Jul 2024 8.44 AM
root / linksafe
0755
Config.hxx
3.97 KB
14 Jan 2012 12.16 PM
root / linksafe
0644
CxxDebug.hxx
0.252 KB
17 Feb 2009 8.15 PM
root / linksafe
0644
Exception.hxx
7.12 KB
30 May 2010 9.32 AM
root / linksafe
0644
ExtensionModule.hxx
8.495 KB
30 Jul 2011 8.23 PM
root / linksafe
0644
ExtensionOldType.hxx
12.895 KB
30 Jul 2011 8.23 PM
root / linksafe
0644
ExtensionType.hxx
13.574 KB
5 May 2016 12.44 PM
root / linksafe
0644
ExtensionTypeBase.hxx
7.854 KB
18 Jun 2013 6.40 PM
root / linksafe
0644
Extensions.hxx
6.916 KB
19 Jul 2009 2.31 PM
root / linksafe
0644
IndirectPythonInterface.hxx
5.366 KB
21 Mar 2011 8.49 PM
root / linksafe
0644
Objects.hxx
90.962 KB
10 May 2016 12.02 PM
root / linksafe
0644
PythonType.hxx
4.49 KB
17 Feb 2009 8.15 PM
root / linksafe
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF