#pragma once class Delegate : public Procedure , public Jenga::Common::ObjectInHashmap { // importされている名前空間 NamespaceScopesCollection importedNamespaces; std::string paramStr; std::string returnTypeName; int sourceIndex; Parameters dynamicParams; // XMLシリアライズ用 private: friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - Delegate" ); ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( Procedure ); ar & BOOST_SERIALIZATION_NVP( importedNamespaces ); ar & BOOST_SERIALIZATION_NVP( dynamicParams ); } public: Delegate( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const std::string &name, Procedure::Kind procKind, const char *paramStr, const std::string &returnTypeName, int sourceIndex ) : Procedure( namespaceScopes, name, procKind, false ) , importedNamespaces( importedNamespaces ) , paramStr( paramStr ) , returnTypeName( returnTypeName ) , sourceIndex( sourceIndex ) { } Delegate() { } const NamespaceScopesCollection &GetImportedNamespaces() const { return importedNamespaces; } const std::string &GetParamStr() const { return paramStr; } const std::string &GetReturnTypeName() const { return returnTypeName; } void SetReturnType( const Type &returnType ) { this->returnType = returnType; } void SetSourceIndex( int sourceIndex ) { this->sourceIndex = sourceIndex; } virtual const std::string &GetKeyName() const { return GetName(); } const Parameters &GetDynamicParams() const { return dynamicParams; } Parameters &GetDynamicParams() { return dynamicParams; } /*! @brief オーバーライド用にデリゲート同士が等しいかどうかをチェックする @param dgt 照らし合わせるデリゲート */ bool IsSimilar( const Delegate &dgt ) const; }; typedef Jenga::Common::Hashmap Delegates;