LightJason - AgentSpeak(L++)
CValueAnnotation.java
Go to the documentation of this file.
1 /*
2  * @cond LICENSE
3  * ######################################################################################
4  * # LGPL License #
5  * # #
6  * # This file is part of the LightJason AgentSpeak(L++) #
7  * # Copyright (c) 2015-19, LightJason (info@lightjason.org) #
8  * # This program is free software: you can redistribute it and/or modify #
9  * # it under the terms of the GNU Lesser General Public License as #
10  * # published by the Free Software Foundation, either version 3 of the #
11  * # License, or (at your option) any later version. #
12  * # #
13  * # This program is distributed in the hope that it will be useful, #
14  * # but WITHOUT ANY WARRANTY; without even the implied warranty of #
15  * # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
16  * # GNU Lesser General Public License for more details. #
17  * # #
18  * # You should have received a copy of the GNU Lesser General Public License #
19  * # along with this program. If not, see http://www.gnu.org/licenses/ #
20  * ######################################################################################
21  * @endcond
22  */
23 
24 package org.lightjason.agentspeak.language.instantiable.plan.annotation;
25 
28 
29 import javax.annotation.Nonnull;
30 import java.text.MessageFormat;
31 import java.util.stream.Stream;
32 
33 
37 public final class CValueAnnotation<T> extends IBaseAnnotation<T>
38 {
42  private final String m_name;
43 
51  public CValueAnnotation( @Nonnull final EType p_type, @Nonnull final String p_name, final T p_data )
52  {
53  super( p_type, p_data );
54  m_name = p_name;
55  }
56 
57  @Override
58  public final String toString()
59  {
60  return MessageFormat.format( "{0}({1}, {1})", m_type, m_name, m_value );
61  }
62 
63  @Override
64  public final int hashCode()
65  {
66  return m_type.hashCode() ^ m_name.hashCode();
67  }
68 
69  @Override
70  public final boolean equals( final Object p_object )
71  {
72  return ( p_object instanceof IAnnotation<?> ) && ( this.hashCode() == p_object.hashCode() );
73  }
74 
75  @Nonnull
76  @Override
77  public final Stream<IVariable<?>> variables()
78  {
79  return Stream.of( new CConstant<>( m_name, m_value ) );
80  }
81 }
final Stream< IVariable<?> > variables()
returns a stream of variables
CValueAnnotation( @Nonnull final EType p_type, @Nonnull final String p_name, final T p_data)
ctor