/** * PANDA 3D SOFTWARE * Copyright (c) Carnegie Mellon University. All rights reserved. * * All use of this software is subject to the terms of the revised BSD * license. You should have received a copy of this license along * with this source code in a file named "LICENSE." * * @file cppMakeProperty.h * @author rdb * @date 2014-09-18 */ #ifndef CPPMAKEPROPERTY_H #define CPPMAKEPROPERTY_H #include "dtoolbase.h" #include "cppDeclaration.h" #include "cppIdentifier.h" /** * This is a MAKE_PROPERTY() declaration appearing within a class body. It * means to generate a property within Python, replacing (for instance) * get_something()/set_something() with a synthetic 'something' attribute. */ class CPPMakeProperty : public CPPDeclaration { public: CPPMakeProperty(CPPIdentifier *ident, CPPFunctionGroup *getter, CPPFunctionGroup *setter, CPPScope *current_scope, const CPPFile &file); CPPMakeProperty(CPPIdentifier *ident, CPPFunctionGroup *hasser, CPPFunctionGroup *getter, CPPFunctionGroup *setter, CPPFunctionGroup *clearer, CPPScope *current_scope, const CPPFile &file); virtual string get_simple_name() const; virtual string get_local_name(CPPScope *scope = NULL) const; virtual string get_fully_scoped_name() const; virtual void output(ostream &out, int indent_level, CPPScope *scope, bool complete) const; virtual SubType get_subtype() const; virtual CPPMakeProperty *as_make_property(); CPPIdentifier *_ident; // If length_function is not NULL, this is actually a sequence property, // and the other functions take an additional index argument. CPPFunctionGroup *_length_function; CPPFunctionGroup *_has_function; CPPFunctionGroup *_get_function; CPPFunctionGroup *_set_function; CPPFunctionGroup *_clear_function; CPPFunctionGroup *_del_function; }; #endif