| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // Filename: parameterRemap.h
- // Created by: drose (01Aug00)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // 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."
- //
- ////////////////////////////////////////////////////////////////////
- #ifndef PARAMETERREMAP_H
- #define PARAMETERREMAP_H
- #include "dtoolbase.h"
- #include "interrogate_interface.h"
- class CPPType;
- class CPPExpression;
- ////////////////////////////////////////////////////////////////////
- // Class : ParameterRemap
- // Description : An abstract base class for a number of different
- // kinds of ways to remap parameters for passing to
- // wrapper functions.
- //
- // Certain kinds of function parameters that are legal
- // in C++ (for instance, passing by reference, or
- // passing structures as concrete values) are not legal
- // for a typical scripting language. We map these types
- // of parameters to something equivalent (for instance,
- // a reference becomes a pointer).
- //
- // For each kind of possible remapping, we define a
- // class derived from ParameterRemap that defines the
- // exact nature of the remap.
- ////////////////////////////////////////////////////////////////////
- class ParameterRemap {
- public:
- INLINE ParameterRemap(CPPType *orig_type);
- virtual ~ParameterRemap();
- INLINE bool is_valid() const;
- INLINE CPPType *get_orig_type() const;
- INLINE CPPType *get_new_type() const;
- INLINE CPPType *get_temporary_type() const;
- INLINE bool has_default_value() const;
- INLINE CPPExpression *get_default_value() const;
- INLINE void set_default_value(CPPExpression *expr);
- virtual void pass_parameter(ostream &out, const string &variable_name);
- virtual string prepare_return_expr(ostream &out, int indent_level,
- const string &expression);
- virtual string get_return_expr(const string &expression);
- virtual string temporary_to_return(const string &temporary);
- virtual bool return_value_needs_management();
- virtual FunctionIndex get_return_value_destructor();
- virtual bool return_value_should_be_simple();
- virtual bool new_type_is_atomic_string();
- virtual bool is_this();
- protected:
- bool _is_valid;
- CPPType *_orig_type;
- CPPType *_new_type;
- CPPType *_temporary_type;
- CPPExpression *_default_value;
- };
- #include "parameterRemap.I"
- #endif
|