#pragma once class Parameter : public Type { std::string varName; bool isRef; bool isArray; Subscripts subscripts; std::string initValue; // XMLシリアライズ用 private: friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - Parameter" ); ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP( Type ); ar & BOOST_SERIALIZATION_NVP( varName ); ar & BOOST_SERIALIZATION_NVP( isRef ); ar & BOOST_SERIALIZATION_NVP( isArray ); ar & BOOST_SERIALIZATION_NVP( subscripts ); ar & BOOST_SERIALIZATION_NVP( initValue ); } public: Parameter( const std::string &varName, const Type &type, bool isRef = false, const std::string initValue = "" ); Parameter( const Parameter ¶m, const Type &type ); Parameter( const Parameter ¶m ); Parameter(); ~Parameter(); void SetArray( const Subscripts &subscripts ){ isArray = true; this->subscripts = subscripts; } const std::string &GetVarName() const { return varName; } bool IsRef() const { return isRef; } bool IsArray(){ return isArray; } const Subscripts &GetSubscripts() const { return subscripts; } const std::string &GetInitValue() const { return initValue; } bool Equals( const Parameter ¶m, bool isContravariant ) const; bool Equals( const Types &actualTypeParametersForThisProc, const Parameter ¶m, bool isContravariant ) const; }; class Parameters : public std::vector { // XMLシリアライズ用 private: friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - Parameters" ); ar & boost::serialization::make_nvp("vector_Parameter", boost::serialization::base_object>(*this)); } public: bool Equals( const Parameters ¶ms, bool isContravariant = false ) const; bool Equals( const Types &actualTypeParametersForThisProc, const Parameters ¶ms, bool isContravariant = false ) const; int GetMemorySize() const { return (int)this->size() * PTR_SIZE; } };