/usr/include/tango/classattribute.h is in libtango8-dev 8.1.2c+dfsg-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | //=============================================================================
//
// file : ClassAttribute.h
//
// description : Include file for the Tango attribute.
// Three classes are declared in this file :
//
// AttrProperty : A helper class. This class stored a couple
// property name, property value as strings
// ClassAttribute : A class for each attribute with all
// its properties defined at the class
// level. The properties are still stored
// as string
// MultiClassAttribute : A class to manage all the class
// level definition of attributes.
// There is one instance of this class
// for each tango device pattern
//
// project : TANGO
//
// author(s) : E.Taurel
//
// Copyright (C) : 2004,2005,2006,2007,2008,2009,2010,2011,2012,2013
// European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
// This file is part of Tango.
//
// Tango is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Tango is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with Tango. If not, see <http://www.gnu.org/licenses/>.
//
// $Revision: 22213 $
//
//=============================================================================
#ifndef _CLASS_ATTRIBUTE_H
#define _CLASS_ATTRIBUTE_H
#include <tango.h>
//#include <attrdesc.h>
#include <functional>
namespace Tango
{
//=============================================================================
//
// The AttrProperty class
//
//
// description : This class is used to store a pair of attribute name,
// attribute value. Both name and value are stored as
// string
//
//=============================================================================
class AttrProperty
{
public:
AttrProperty(const char *name,const char *value);
AttrProperty(string &name,string &value);
AttrProperty(const char *name,long value);
AttrProperty(const char *name,string &value);
~AttrProperty() {};
string &get_value() {return attr_value;}
long get_lg_value() {return attr_lg;}
string &get_name() {return attr_name;}
void convert();
#ifndef TANGO_HAS_LOG4TANGO
friend ostream &operator<<(ostream &,const AttrProperty &);
#endif
private:
string attr_name;
string attr_value;
long attr_lg;
};
//=============================================================================
//
// The MultiClassAttribute class
//
//
// description : This class is a holder for all the ClassAttribute
// instance. There is one instance of this class for each
// Tango device pattern implementation. This instance is
// stored in the DeviceClass object of the pattern
//
//=============================================================================
class MultiClassAttribute
{
public:
MultiClassAttribute();
~MultiClassAttribute();
void init_class_attribute(string &class_name,long base = 0);
vector<Tango::Attr *> &get_attr_list() {return attr_list;}
Attr &get_attr(string &attr_name);
void remove_attr(string &,const string &);
protected:
vector<Tango::Attr *> attr_list;
};
//=============================================================================
//
// A binary function object
//
//
// description : This binary function object is used by the find_if
// std C++ find_if algorithm. It checks if the
// ClassAttribute object passed as argument (A1) stored
// all the properties for the atribute name passed as
// second argument (A2).
// This function object is a predicate and therefore
// returns a boolean (R)
//
//=============================================================================
template <class A1, class A2, class R>
struct WantedClassAttr : public binary_function<A1,A2,R>
{
R operator() (A1 att,A2 name_str) const
{
return att->get_name() == name_str;
}
};
} // End of Tango namespace
#endif // _CLASS_ATTRIBUTE_H
|