#pragma once #include #include #include #include #include #include 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 = "" ): Type( type ), varName( varName ), isRef( isRef ), isArray( false ), initValue( initValue ) { } Parameter( const Parameter ¶m ): Type( param ), varName( param.varName ), isRef( param.isRef ), isArray( param.isArray ), subscripts( param.subscripts ), initValue( param.initValue ) { } 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 ) const; bool Equals( const Types &actualTypeParametersForThisProc, const Parameter ¶m ) 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 ) const; bool Equals( const Types &actualTypeParametersForThisProc, const Parameters ¶ms ) const; int GetMemorySize() const { return (int)this->size() * PTR_SIZE; } bool Analyze( const char *sourceOfParams, int nowLine ); std::string GetString() const; };