diff --git a/documentation/copyandmonitor.html b/documentation/copyandmonitor.html index e4901a0..bf3afd2 100644 --- a/documentation/copyandmonitor.html +++ b/documentation/copyandmonitor.html @@ -113,8 +113,8 @@ then passes it to pvCopy. class CreateRequest { ... static CreateRequestPtr create(); - virtual PVStructurePtr createRequest(String const &request); - String getMessage(); + virtual PVStructurePtr createRequest(std::string const &request); + std::string getMessage(); };

An example of how it is used is:

@@ -122,7 +122,7 @@ class CreateRequest { CreateRequestPtr createRequest = CreateRequest::create(); PVStructurePtr pvRequest = createRequest->createRequest(request); if(pvRequest==NULL) { - String error = createRequest->getMessage(); + std::string error = createRequest->getMessage(); // take some action } else { //success do something @@ -143,7 +143,7 @@ class class epicsShareClass PVCopy static PVCopyPtr create( PVStructurePtr const &pvMaster, PVStructurePtr const &pvRequest, - String const & structureName); + std::string const & structureName); PVStructurePtr getPVMaster(); void traverseMaster(PVCopyTraverseMasterCallbackPtr const & callback); StructureConstPtr getStructure(); @@ -216,7 +216,7 @@ where
getCopyOffset
Given a field in pvMaster. return the offset in copy for the same field. - A value of String::npos means that the copy does not have this field. + A value of std::string::npos means that the copy does not have this field. Two overloaded methods are provided. The first is called if the field of master is not a structure. The second is for subfields of a structure. @@ -387,7 +387,7 @@ It has the methods:

 class MonitorPlugin
 {
-    virtual String const & getName() = 0;
+    virtual std::string const & getName() = 0;
     virtual bool causeMonitor(
         PVFieldPtr const &pvField,
         PVStructurePtr const &pvTop,
@@ -406,16 +406,16 @@ class MonitorPluginCreator
         FieldConstPtr const &field,
         StructureConstPtr const &top,
         PVStructurePtr const &pvFieldOptions) = 0;
-     virtual String const & getName() = 0;
+     virtual std::string const & getName() = 0;
 }
 
 class MonitorPluginManager
 {
     static MonitorPluginManagerPtr get();
     bool addPlugin(
-         String const &pluginName,
+         std::string const &pluginName,
          MonitorPluginCreatorPtr const &creator);
-    MonitorPluginCreatorPtr findPlugin(String const &pluginName);
+    MonitorPluginCreatorPtr findPlugin(std::string const &pluginName);
     void showNames();
 };
 
@@ -587,7 +587,7 @@ will be passed to the client.
 Assume that the client has already connected to the channel.
 The client can then issue the commands:

-String request("field(alarm[plugin=onChange]");
+std::string request("field(alarm[plugin=onChange]");
 request += ",timeStamp[plugin=onChange,raiseMonitor=false]";
 request += ",power.value[plugin=onChange";
 request += ",voltage.value[plugin=onChange";
@@ -623,13 +623,13 @@ public:
             PVStringPtr pvString =
                 pvFieldOptions->getSubField<PVString>("raiseMonitor");
                 if(pvString!=NULL) {
-                    String value = pvString->get();
+                    std::string value = pvString->get();
                     if(value.compare("false")==0) raiseMonitor = false;
                 }
         }
         return true;
    }
-   virtual String &getName(){return pluginName;}
+   virtual std::string &getName(){return pluginName;}
    virtual bool causeMonitor(
         PVFieldPtr const &pvNew,
         PVStructurePtr const &pvTop,
@@ -647,7 +647,7 @@ private:
 class OnChangePluginCreator : public MonitorPluginCreator
 {
 public:
-    virtual String &getName(){return pluginName;}
+    virtual std::string &getName(){return pluginName;}
     virtual MonitorPluginPtr create(
         FieldConstPtr const &field,
         StructureConstPtr const &top,
diff --git a/documentation/pvArray.html b/documentation/pvArray.html
index f971287..9f7c031 100644
--- a/documentation/pvArray.html
+++ b/documentation/pvArray.html
@@ -170,7 +170,7 @@ the  dumpValue method is replaced by the stream operator<<.
 

Java

interface PVField extends Requester, Serializable {
-    String getFieldName();
+    std::string getFieldName();
     void setRequester(Requester requester);
     int getFieldOffset();
     int getNextFieldOffset();
@@ -180,12 +180,12 @@ the  dumpValue method is replaced by the stream operator<<.
     void setImmutable();
     Field getField();
     PVStructure getParent();
-    void renameField(String newName);
+    void renameField(std::string newName);
     void postPut(); // calls PVRecordField.postPut if this is a field of a record
     void setPostHandler(PostHandler postHandler);
     void toString(StringBuilder buf);
     void toString(StringBuilder buf,int indentLevel);
-    String toString();
+    std::string toString();
 }

pvDataCPP

class PVField
@@ -195,8 +195,8 @@ the  dumpValue method is replaced by the stream operator<<.
 public:
    POINTER_DEFINITIONS(PVField);
    virtual ~PVField();
-   virtual void message(String message,MessageType messageType);
-   String getFieldName() const ;
+   virtual void message(std::string message,MessageType messageType);
+   std::string getFieldName() const ;
    virtual void setRequester(RequesterPtr const &prequester);
    std::size_t getFieldOffset() const;
    std::size_t getNextFieldOffset() const;
@@ -207,7 +207,7 @@ public:
    const FieldConstPtr & getField() const ;
    PVStructure * getParent() const
    void replacePVField(const PVFieldPtr&  newPVField);
-   void renameField(String const &newName);
+   void renameField(std::string const &newName);
    void postPut() ;
    void setPostHandler(PostHandlerPtr const &postHandler);
    virtual bool equals(PVField &pv);
@@ -227,8 +227,8 @@ std::ostream& operator<<(std::ostream& o, const PVFieldPtr & f
 public:
    POINTER_DEFINITIONS(PVField);
    virtual ~PVField();
-   virtual void message(String message,MessageType messageType);
-   String getFieldName() const ;
+   virtual void message(std::string message,MessageType messageType);
+   std::string getFieldName() const ;
    virtual void setRequester(RequesterPtr const &prequester);
    std::size_t getFieldOffset() const;
    std::size_t getNextFieldOffset() const;
@@ -239,7 +239,7 @@ public:
    const FieldConstPtr & getField() const ;
    PVStructure * getParent() const
    void replacePVField(const PVFieldPtr&  newPVField);
-   void renameField(String const &newName);
+   void renameField(std::string const &newName);
    void postPut() ;
    void setPostHandler(PostHandlerPtr const &postHandler);
    virtual bool equals(PVField &pv);
@@ -247,7 +247,7 @@ public:
    virtual void toString(StringBuilder buf,int indentLevel);
    std::ostream& dumpValue(std::ostream& o) const;
    // not in pvDataCPP
-   String getFullName() const;
+   std::string getFullName() const;
  ...
 }
 
@@ -262,8 +262,8 @@ class PVField
 public:
     POINTER_DEFINITIONS(PVField);
     virtual ~PVField();
-    virtual void message(String message,MessageType messageType);
-    const String& getFieldName() const;
+    virtual void message(std::string message,MessageType messageType);
+    const std::string& getFieldName() const;
     virtual void setRequester(RequesterPtr const &prequester);
     std::size_t getFieldOffset() const;
     std::size_t getNextFieldOffset() const;
@@ -274,7 +274,7 @@ public:
     const FieldConstPtr & getField() const;
     PVStructure * getParent() const;
     void replacePVField(const PVFieldPtr&  newPVField);
-    void renameField(String const & newName);
+    void renameField(std::string const & newName);
     void postPut();
     void setPostHandler(PostHandlerPtr const &postHandler);
     virtual bool equals(PVField &pv);
@@ -328,8 +328,8 @@ interface PVDouble extends PVScalar {
     void put(double value);
 }
 interface PVString extends PVScalar, SerializableArray {
-    String get();
-    void put(String value);
+    std::string get();
+    void put(std::string value);
 }
 

pvDataCPP

@@ -369,7 +369,7 @@ typedef std::tr1::shared_ptr PVDoublePtr; // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -427,7 +427,7 @@ typedef std::tr1::shared_ptr PVDoublePtr; // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -472,7 +472,7 @@ typedef std::tr1::shared_ptr<PVByte> PVBytePtr; typedef std::tr1::shared_ptr<PVDouble> PVDoublePtr; // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -641,8 +641,8 @@ typedef PVArrayData<uint8> BooleanArrayData; typedef PVValueArray<uint8> PVBooleanArray; typedef std::tr1::shared_ptr<PVBooleanArray> PVBooleanArrayPtr; ... -typedef PVArrayData<String> StringArrayData; -typedef PVValueArray<String> PVStringArray; +typedef PVArrayData<std::string> StringArrayData; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVStringArray> PVStringArrayPtr;i
@@ -786,8 +786,8 @@ typedef PVArrayData<uint8> BooleanArrayData; typedef PVValueArray<uint8> PVBooleanArray; typedef std::tr1::shared_ptr<PVBooleanArray> PVBooleanArrayPtr; ... -typedef PVArrayData<String> StringArrayData; -typedef PVValueArray<String> PVStringArray; +typedef PVArrayData<std::string> StringArrayData; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVStringArray> PVStringArrayPtr;i

proposed

@@ -843,7 +843,7 @@ public: typedef PVValueArray<uint8> PVBooleanArray; typedef std::tr1::shared_ptr<PVBooleanArray> PVBooleanArrayPtr; ... -typedef PVValueArray<String> PVStringArray; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVStringArray> PVStringArrayPtr; @@ -865,8 +865,8 @@ class PVField public: POINTER_DEFINITIONS(PVField); virtual ~PVField(); - virtual void message(String message,MessageType messageType); - const String& getFieldName() const; + virtual void message(std::string message,MessageType messageType); + const std::string& getFieldName() const; virtual void setRequester(RequesterPtr const &prequester); std::size_t getFieldOffset() const; std::size_t getNextFieldOffset() const; @@ -877,7 +877,7 @@ public: const FieldConstPtr & getField() const; PVStructure * getParent() const; void replacePVField(const PVFieldPtr& newPVField); - void renameField(String const & newName); + void renameField(std::string const & newName); void postPut(); void setPostHandler(PostHandlerPtr const &postHandler); virtual bool equals(PVField &pv); @@ -1006,7 +1006,7 @@ typedef std::tr1::shared_ptr<PVFloat> PVFloatPtr; typedef std::tr1::shared_ptr<PVDouble> PVDoublePtr; // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -1144,7 +1144,7 @@ typedef std::tr1::shared_ptr<PVFloatArray> PVFloatArrayPtr; typedef PVValueArray<double> PVDoubleArray; typedef std::tr1::shared_ptr<PVDoubleArray> PVDoubleArrayPtr; -typedef PVValueArray<String> PVStringArray; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVStringArray> PVStringArrayPtr; @@ -1231,7 +1231,7 @@ For others the brief summary is followed by tutorial information.
 typedef shared_vector<int32> Int32Array;
 ...
-static void dumpArray(String const &message,Int32Array const& int32Array);
+static void dumpArray(std::string const &message,Int32Array const& int32Array);
 

The following:

diff --git a/documentation/pvDataCPP.html b/documentation/pvDataCPP.html
index 8323e2a..b94284f 100644
--- a/documentation/pvDataCPP.html
+++ b/documentation/pvDataCPP.html
@@ -145,7 +145,7 @@ After it is unzipped just edit configure/RELEASE.local and then execute make.
 

The examples assume that the following statements have been issued:

-String builder;
+std::string builder;
 FieldCreatePtr fieldCreate = getFieldCreate();
 PVDataCreatePtr pvDataCreate = getPVDataCreate();
 StandardFieldPtr standardField = getStandardField();
@@ -876,21 +876,21 @@ typedef uint16_t  uint16;
 typedef uint32_t uint32;
 typedef uint64_t uint64;
 // float and double are types
-typedef std::string String;
+typedef std::string std::string;
 
-typedef std::vector StringArray;
+typedef std::vector StringArray;
 typedef std::tr1::shared_ptr StringArrayPtr;
-inline String * get(StringArray &value);
-inline String const * get(StringArray const &value);
-inline String * get(StringArrayPtr &value);
-inline String const * get(StringArrayPtr const &value);
+inline std::string * get(StringArray &value);
+inline std::string const * get(StringArray const &value);
+inline std::string * get(StringArrayPtr &value);
+inline std::string const * get(StringArrayPtr const &value);
 }
 inline StringArray & getVector(StringArrayPtr &value);
 inline StringArray const & getVector(StringArrayPtr const &value);
-typedef std::vector::iterator StringArray_iterator;
-typedef std::vector::const_iterator StringArray_const_iterator;
+typedef std::vector::iterator StringArray_iterator;
+typedef std::vector::const_iterator StringArray_const_iterator;
 
-typedef String * StringBuilder;
+typedef std::string * StringBuilder;
 

where

@@ -905,7 +905,7 @@ typedef String * StringBuilder; have worked on all C++ implementations tested at present. If they break in a future implementation they should be changes via "#ifdef" preprocessor statements.
-
String
+
std::string
pvData requires that a string be an immutable string that is transfered over the network as a UTF8 encoded string. Since std::string implements copy on write semantics, it can be used for support for immutable @@ -914,8 +914,8 @@ typedef String * StringBuilder; is the same convention the Java implementation uses. Note that string is treated like a primitive type.
StringArray definitions
-
typedefs are provided for an array of Strings, - which is a std::vector<String>. +
typedefs are provided for an array of std::strings, + which is a std::vector<std::string>. This is used by introspection.
StringBuilder
@@ -993,7 +993,7 @@ public: bool isUInteger(ScalarType type); bool isNumeric(ScalarType type); bool isPrimitive(ScalarType type); - ScalarType getScalarType(String const &value); + ScalarType getScalarType(std::string const &value); const char* name(ScalarType); void toString(StringBuilder buf,ScalarType scalarType); size_t elementSize(ScalarType id); @@ -1072,7 +1072,7 @@ public:
name
Returns the name of the scalarType.
getScalarType
-
Given a string of the form String("boolean"),...,String("string") +
Given a string of the form std::string("boolean"),...,std::string("string") return the scalarType.
toString
Convert the scalar type to a string.
@@ -1158,7 +1158,7 @@ public: POINTER_DEFINITIONS(Field); virtual ~Field(); Type getType() const{return m_type;} - virtual String getID() const = 0; + virtual std::string getID() const = 0; virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; ... @@ -1174,7 +1174,7 @@ public: ScalarType getScalarType() const {return scalarType;} virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableContol *control); ... @@ -1190,7 +1190,7 @@ public: ScalarType getElementType() const {return elementType;} virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); ... @@ -1204,7 +1204,7 @@ public: StructureConstPtr getStructure() const {return pstructure;} virtual void toString(StringBuilder buf,int indentLevel=0) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); ... @@ -1217,14 +1217,14 @@ public: typedef const Structure& const_reference; std::size_t getNumberFields() const {return numberFields;} - FieldConstPtr getField(String const & fieldName) const; + FieldConstPtr getField(std::string const & fieldName) const; FieldConstPtr getField(std::size_t index) const; - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; FieldConstPtrArray const & getFields() const {return fields;} StringArray const & getFieldNames() const; - String getFieldName(std::size_t fieldIndex) const; + std::string getFieldName(std::size_t fieldIndex) const; virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); ... @@ -1233,23 +1233,23 @@ public: class epicsShareClass Union : public Field { public: POINTER_DEFINITIONS(Union); - static epics::pvData::String DEFAULT_ID; - static epics::pvData::String ANY_ID; + static std::string DEFAULT_ID; + static std::string ANY_ID; virtual ~Union(); typedef Union& reference; typedef const Union& const_reference; std::size_t getNumberFields() const; - FieldConstPtr getField(String const &fieldName) const; + FieldConstPtr getField(std::string const &fieldName) const; FieldConstPtr getField(std::size_t index); - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; FieldConstPtrArray const & getFields() const; StringArray const & getFieldNames() const; - String getFieldName(std::size_t fieldIndex) const; + std::string getFieldName(std::size_t fieldIndex) const; bool isVariant() const; virtual void toString(StringBuilder buf) const; virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize( ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize( @@ -1265,7 +1265,7 @@ public: UnionConstPtr getUnion() const {return punion;} virtual void toString(StringBuilder buf,int indentLevel=0) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); @@ -1395,14 +1395,14 @@ public: StringArray const & fieldNames, FieldConstPtrArray const & fields) const; StructureConstPtr createStructure ( - String const & id, + std::string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; UnionConstPtr createUnion ( StringArray const & fieldNames, FieldConstPtrArray const & fields) const; UnionConstPtr createUnion ( - String const & id, + std::string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; UnionConstPtr createVariantUnion() const; @@ -1410,7 +1410,7 @@ public: UnionArrayConstPtr createUnionArray(UnionConstPtr const & punion) const; StructureConstPtr appendField( StructureConstPtr const & structure, - String const & fieldName, FieldConstPtr const & field) const; + std::string const & fieldName, FieldConstPtr const & field) const; StructureConstPtr appendFields( StructureConstPtr const & structure, StringArray const & fieldNames, @@ -1480,7 +1480,7 @@ StructureConstPtr structure = add("index", pvDouble)-> addArray("choices", pvString)-> createStructure(); -String builder; +std::string builder; structure->toString(&builder); cout << builder << endl; @@ -1698,18 +1698,18 @@ class StandardField { public: static StandardFieldPtr getStandardField(); ~StandardField(); - StructureConstPtr scalar(ScalarType type,String const &properties); + StructureConstPtr scalar(ScalarType type,std::string const &properties); StructureConstPtr regUnion( UnionConstPtr const & punion, - String const & properties); - StructureConstPtr variantUnion(String const & properties); + std::string const & properties); + StructureConstPtr variantUnion(std::string const & properties); StructureConstPtr scalarArray( - ScalarType elementType, String const &properties); + ScalarType elementType, std::string const &properties); StructureConstPtr structureArray( - StructureConstPtr const & structure,String const &properties); - StructureConstPtr unionArray(UnionConstPtr const & punion,String const & properties); + StructureConstPtr const & structure,std::string const &properties); + StructureConstPtr unionArray(UnionConstPtr const & punion,std::string const & properties); StructureConstPtr enumerated(); - StructureConstPtr enumerated(String const &properties); + StructureConstPtr enumerated(std::string const &properties); StructureConstPtr alarm(); StructureConstPtr timeStamp(); StructureConstPtr display(); @@ -1879,7 +1879,7 @@ typedef PVValueArray<uint32> PVUIntArray; typedef PVValueArray<uint64> PVULongArray; typedef PVValueArray<float> PVFloatArray; typedef PVValueArray<double> PVDoubleArray; -typedef PVValueArray<String> PVStringArray; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVBooleanArray> PVBooleanArrayPtr; typedef std::tr1::shared_ptr<PVByteArray> PVByteArrayPtr; @@ -1916,8 +1916,8 @@ class PVField public: POINTER_DEFINITIONS(PVField); virtual ~PVField(); - String getFieldName() const ; - String getFullName() const; + std::string getFieldName() const ; + std::string getFullName() const; std::size_t getFieldOffset() const; std::size_t getNextFieldOffset() const; std::size_t getNumberFields() const; @@ -2085,7 +2085,7 @@ typedef std::tr1::shared_ptr<PVDouble> PVDoublePtr; // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -2177,18 +2177,18 @@ public: return std::tr1::dynamic_pointer_cast<PVT>(select(index)); } - PVFieldPtr select(String const & fieldName); + PVFieldPtr select(std::string const & fieldName); template<typename PVT> - std::tr1::shared_ptr<PVT> select(String const & fieldName) { + std::tr1::shared_ptr<PVT> select(std::string const & fieldName) { return std::tr1::dynamic_pointer_cast<PVT>(select(fieldName)); } int32 getSelectedIndex() const; - String getSelectedFieldName() const; + std::string getSelectedFieldName() const; void set(PVFieldPtr const & value); void set(int32 index, PVFieldPtr const & value); - void set(String const & fieldName, PVFieldPtr const & value); + void set(std::string const & fieldName, PVFieldPtr const & value); virtual void serialize( ByteBuffer *pbuffer,SerializableControl *pflusher) const ; PVUnion(UnionConstPtr const & punion); @@ -2328,10 +2328,10 @@ public: virtual void setImmutable(); StructureConstPtr getStructure() const; const PVFieldPtrArray & getPVFields() const; - PVFieldPtr getSubField(String const &fieldName) const; + PVFieldPtr getSubField(std::string const &fieldName) const; template<typename PVT> - std::tr1::shared_ptr<PVT> getSubField(String const &fieldName) const + std::tr1::shared_ptr<PVT> getSubField(std::string const &fieldName) const PVFieldPtr getSubField(std::size_t fieldOffset) const; @@ -2358,7 +2358,7 @@ public:
getPVFields
Returns the array of subfields. The set of subfields must all have different field names.
-
getSubField(String fieldName)
+
getSubField(std::string fieldName)
Get a subField of a field.d A non-null result is @@ -2694,12 +2694,12 @@ class StandardPVField : private NoDefaultMethods { public: static StandardPVFieldPtr getStandardPVField(); ~StandardPVField(); - PVStructurePtr scalar(ScalarType type,String const &properties); - PVStructurePtr scalarArray(ScalarType elementType, String const &properties); - PVStructurePtr structureArray(StructureConstPtr const &structure,String const &properties); - PVStructurePtr unionArray(UnionConstPtr const &punion,String const &properties); + PVStructurePtr scalar(ScalarType type,std::string const &properties); + PVStructurePtr scalarArray(ScalarType elementType, std::string const &properties); + PVStructurePtr structureArray(StructureConstPtr const &structure,std::string const &properties); + PVStructurePtr unionArray(UnionConstPtr const &punion,std::string const &properties); PVStructurePtr enumerated(StringArray const &choices); - PVStructurePtr enumerated(StringArray const &choices, String const &properties); + PVStructurePtr enumerated(StringArray const &choices, std::string const &properties); ... } @@ -2786,8 +2786,8 @@ public: PVStructurePtr const &pv, StringArray const & from, std::size_t fromStartIndex = 0); - void fromString(PVScalarPtr const & pv, String const & from); - std::size_t fromString(PVScalarArrayPtr const & pv, String const &from); + void fromString(PVScalarPtr const & pv, std::string const & from); + std::size_t fromString(PVScalarArrayPtr const & pv, std::string const &from); std::size_t fromStringArray( PVScalarArrayPtr const & pv, std::size_t offset, std::size_t length, @@ -2832,7 +2832,7 @@ public: uint64 toULong(PVScalarPtr const & pv); float toFloat(PVScalarPtr const & pv); double toDouble(PVScalarPtr const & pv); - String toString(PVScalarPtr const & pv); + std::string toString(PVScalarPtr const & pv); void fromByte(PVScalarPtr const & pv,int8 from); void fromShort(PVScalarPtr const & pv,int16 from); void fromInt(PVScalarPtr const & pv, int32 from); @@ -3068,7 +3068,7 @@ stack. For example the following is permitted:

result = pvAlarm.attach(pvField); assert(result); Alarm al; - al.setMessage(String("testMessage")); + al.setMessage(std::string("testMessage")); al.setSeverity(majorAlarm); result = pvAlarm.set(al); assert(result); @@ -3306,8 +3306,8 @@ class Alarm { public: Alarm(); //default constructors and destructor are OK - String getMessage(); - void setMessage(String const &value); + std::string getMessage(); + void setMessage(std::string const &value); AlarmSeverity getSeverity() const; void setSeverity(AlarmSeverity value); AlarmStatus getStatus() const; @@ -3505,12 +3505,12 @@ public: double getHigh() const; void setLow(double value); void setHigh(double value); - String getDescription() const; - void setDescription(String const &value); - String getFormat() const; - void setFormat(String const &value); - String getUnits() const; - void setUnits(String const &value); + std::string getDescription() const; + void setDescription(std::string const &value); + std::string getFormat() const; + void setFormat(std::string const &value); + std::string getUnits() const; + void setUnits(std::string const &value); };

where

@@ -3599,7 +3599,7 @@ public: // a set returns false if field is immutable bool setIndex(int32 index); int32 getIndex(); - String getChoice(); + std::string getChoice(); bool choicesMutable(); StringArrayPtr const & getChoices(); int32 getNumberChoices(); @@ -3624,7 +3624,7 @@ public:
getIndex
Get the index field in the pvData structure.
getChoice
-
Get the String value corresponding to the current index field in the +
Get the std::string value corresponding to the current index field in the pvData structure. An exception is thrown if not attached to a pvData structure.
choicesMutable
@@ -3990,7 +3990,7 @@ private: class Executor : public Runnable{ public: POINTER_DEFINITIONS(Executor); - Executor(String threadName,ThreadPriority priority); + Executor(std::string threadName,ThreadPriority priority); ~Executor(); void execute(CommandPtr const &node); virtual void run(); @@ -4123,7 +4123,7 @@ typedef std::tr1::shared_ptr<MessageQueue> MessageQueuePtr; class MessageNode { public: - String getMessage() const; + std::string getMessage() const; MessageType getMessageType() const; void setMessageNull(); }; @@ -4138,7 +4138,7 @@ public: // must call release before next get void release(); // return (false,true) if message (was not, was) put into queue - bool put(String message,MessageType messageType,bool replaceLast); + bool put(std::string message,MessageType messageType,bool replaceLast); bool isEmpty() ; bool isFull() ; int getClearOverrun(); @@ -4299,14 +4299,14 @@ enum MessageType { infoMessage,warningMessage,errorMessage,fatalErrorMessage }; -extern String getMessageTypeName(MessageType messageType); +extern std::string getMessageTypeName(MessageType messageType); extern const size_t messageTypeCount; class Requester { public: POINTER_DEFINITIONS(Requester); virtual ~Requester(){} - virtual String getRequesterName() = 0; - virtual void message(String const & message,MessageType messageType) = 0; + virtual std::string getRequesterName() = 0; + virtual void message(std::string const & message,MessageType messageType) = 0; };

where

@@ -4316,7 +4316,7 @@ public:
Type of message.
messageTypeName
An array of strings of the message type names, i.e. - String("info"),String("warning"),String("error"),String("fatalError").
+ std::string("info"),std::string("warning"),std::string("error"),std::string("fatalError").
getRequesterName
Returns the requester name.
message
@@ -4390,12 +4390,12 @@ public: SerializableControl* flusher); static int readSize(ByteBuffer* buffer, DeserializableControl* control); - static void serializeString(const String& value, + static void serializeString(const std::string& value, ByteBuffer* buffer,SerializableControl* flusher); - static void serializeSubstring(const String& value, int offset, + static void serializeSubstring(const std::string& value, int offset, int count, ByteBuffer* buffer, SerializableControl* flusher); - static String deserializeString(ByteBuffer* buffer, + static std::string deserializeString(ByteBuffer* buffer, DeserializableControl* control); ... }; @@ -4407,7 +4407,7 @@ public:
readSize
Deserialize the size.
serializeString
-
Serialize a String.
+
Serialize a std::string.
serializeSubstring
Serialize a substring.
deserializeString
@@ -4634,15 +4634,15 @@ Also he should check for correct descriptions. static const char* StatusTypeName[]; static Status OK; Status(); - Status(StatusType type, epics::pvData::String const & message); - Status(StatusType type, epics::pvData::String const & message, epics::pvData::String stackDump); + Status(StatusType type, std::string const & message); + Status(StatusType type, std::string const & message, std::string stackDump); ~Status() StatusType getType() const; - String getMessage() const; - String getStackDump() const; + std::string getMessage() const; + std::string getStackDump() const; bool isOK() const; bool isSuccess() const; - String toString() const; + std::string toString() const; void toString(StringBuilder buffer, int indentLevel = 0) const; void serialize(ByteBuffer *buffer, SerializableControl *flusher) const; void serialize(ByteBuffer *buffer, SerializableControl *flusher) const; @@ -4703,7 +4703,7 @@ class Thread; class Thread : public epicsThread, private NoDefaultMethods { public: Thread( - String name, + std::string name, ThreadPriority priority, Runnable *runnableReady, epicsThreadStackSizeClass stkcls=epicsThreadStackSmall); @@ -4802,7 +4802,7 @@ public: class Timer : private Runnable { public: POINTER_DEFINITIONS(Timer); - Timer(String threadName, ThreadPriority priority); + Timer(std::string threadName, ThreadPriority priority); virtual ~Timer(); virtual void run(); void scheduleAfterDelay( @@ -4971,8 +4971,8 @@ then passes it to pvCopy. class CreateRequest { ... static CreateRequestPtr create(); - virtual PVStructurePtr createRequest(String const &request); - String getMessage(); + virtual PVStructurePtr createRequest(std::string const &request); + std::string getMessage(); };

An example of how it is used is:

@@ -4980,7 +4980,7 @@ class CreateRequest { CreateRequestPtr createRequest = CreateRequest::create(); PVStructurePtr pvRequest = createRequest->createRequest(request); if(pvRequest==NULL) { - String error = createRequest->getMessage(); + std::string error = createRequest->getMessage(); // take some action } else { //success do something @@ -5001,7 +5001,7 @@ class class epicsShareClass PVCopy static PVCopyPtr create( PVStructurePtr const &pvMaster, PVStructurePtr const &pvRequest, - String const & structureName); + std::string const & structureName); PVStructurePtr getPVMaster(); void traverseMaster(PVCopyTraverseMasterCallbackPtr const & callback); StructureConstPtr getStructure(); @@ -5074,7 +5074,7 @@ where
getCopyOffset
Given a field in pvMaster. return the offset in copy for the same field. - A value of String::npos means that the copy does not have this field. + A value of std::string::npos means that the copy does not have this field. Two overloaded methods are provided. The first is called if the field of master is not a structure. The second is for subfields of a structure. @@ -5245,7 +5245,7 @@ It has the methods:

 class MonitorPlugin
 {
-    virtual String const & getName() = 0;
+    virtual std::string const & getName() = 0;
     virtual bool causeMonitor(
         PVFieldPtr const &pvField,
         PVStructurePtr const &pvTop,
@@ -5264,16 +5264,16 @@ class MonitorPluginCreator
         FieldConstPtr const &field,
         StructureConstPtr const &top,
         PVStructurePtr const &pvFieldOptions) = 0;
-     virtual String const & getName() = 0;
+     virtual std::string const & getName() = 0;
 }
 
 class MonitorPluginManager
 {
     static MonitorPluginManagerPtr get();
     bool addPlugin(
-         String const &pluginName,
+         std::string const &pluginName,
          MonitorPluginCreatorPtr const &creator);
-    MonitorPluginCreatorPtr findPlugin(String const &pluginName);
+    MonitorPluginCreatorPtr findPlugin(std::string const &pluginName);
     void showNames();
 };
 
@@ -5445,7 +5445,7 @@ will be passed to the client.
 Assume that the client has already connected to the channel.
 The client can then issue the commands:

-String request("field(alarm[plugin=onChange]");
+std::string request("field(alarm[plugin=onChange]");
 request += ",timeStamp[plugin=onChange,raiseMonitor=false]";
 request += ",power.value[plugin=onChange";
 request += ",voltage.value[plugin=onChange";
@@ -5481,13 +5481,13 @@ public:
             PVStringPtr pvString =
                 pvFieldOptions->getSubField<PVString>("raiseMonitor");
                 if(pvString!=NULL) {
-                    String value = pvString->get();
+                    std::string value = pvString->get();
                     if(value.compare("false")==0) raiseMonitor = false;
                 }
         }
         return true;
    }
-   virtual String &getName(){return pluginName;}
+   virtual std::string &getName(){return pluginName;}
    virtual bool causeMonitor(
         PVFieldPtr const &pvNew,
         PVStructurePtr const &pvTop,
@@ -5505,7 +5505,7 @@ private:
 class OnChangePluginCreator : public MonitorPluginCreator
 {
 public:
-    virtual String &getName(){return pluginName;}
+    virtual std::string &getName(){return pluginName;}
     virtual MonitorPluginPtr create(
         FieldConstPtr const &field,
         StructureConstPtr const &top,
diff --git a/documentation/pvDataCPP_20140501.html b/documentation/pvDataCPP_20140501.html
index 8323e2a..b94284f 100644
--- a/documentation/pvDataCPP_20140501.html
+++ b/documentation/pvDataCPP_20140501.html
@@ -145,7 +145,7 @@ After it is unzipped just edit configure/RELEASE.local and then execute make.
 

The examples assume that the following statements have been issued:

-String builder;
+std::string builder;
 FieldCreatePtr fieldCreate = getFieldCreate();
 PVDataCreatePtr pvDataCreate = getPVDataCreate();
 StandardFieldPtr standardField = getStandardField();
@@ -876,21 +876,21 @@ typedef uint16_t  uint16;
 typedef uint32_t uint32;
 typedef uint64_t uint64;
 // float and double are types
-typedef std::string String;
+typedef std::string std::string;
 
-typedef std::vector StringArray;
+typedef std::vector StringArray;
 typedef std::tr1::shared_ptr StringArrayPtr;
-inline String * get(StringArray &value);
-inline String const * get(StringArray const &value);
-inline String * get(StringArrayPtr &value);
-inline String const * get(StringArrayPtr const &value);
+inline std::string * get(StringArray &value);
+inline std::string const * get(StringArray const &value);
+inline std::string * get(StringArrayPtr &value);
+inline std::string const * get(StringArrayPtr const &value);
 }
 inline StringArray & getVector(StringArrayPtr &value);
 inline StringArray const & getVector(StringArrayPtr const &value);
-typedef std::vector::iterator StringArray_iterator;
-typedef std::vector::const_iterator StringArray_const_iterator;
+typedef std::vector::iterator StringArray_iterator;
+typedef std::vector::const_iterator StringArray_const_iterator;
 
-typedef String * StringBuilder;
+typedef std::string * StringBuilder;
 

where

@@ -905,7 +905,7 @@ typedef String * StringBuilder; have worked on all C++ implementations tested at present. If they break in a future implementation they should be changes via "#ifdef" preprocessor statements.
-
String
+
std::string
pvData requires that a string be an immutable string that is transfered over the network as a UTF8 encoded string. Since std::string implements copy on write semantics, it can be used for support for immutable @@ -914,8 +914,8 @@ typedef String * StringBuilder; is the same convention the Java implementation uses. Note that string is treated like a primitive type.
StringArray definitions
-
typedefs are provided for an array of Strings, - which is a std::vector<String>. +
typedefs are provided for an array of std::strings, + which is a std::vector<std::string>. This is used by introspection.
StringBuilder
@@ -993,7 +993,7 @@ public: bool isUInteger(ScalarType type); bool isNumeric(ScalarType type); bool isPrimitive(ScalarType type); - ScalarType getScalarType(String const &value); + ScalarType getScalarType(std::string const &value); const char* name(ScalarType); void toString(StringBuilder buf,ScalarType scalarType); size_t elementSize(ScalarType id); @@ -1072,7 +1072,7 @@ public:
name
Returns the name of the scalarType.
getScalarType
-
Given a string of the form String("boolean"),...,String("string") +
Given a string of the form std::string("boolean"),...,std::string("string") return the scalarType.
toString
Convert the scalar type to a string.
@@ -1158,7 +1158,7 @@ public: POINTER_DEFINITIONS(Field); virtual ~Field(); Type getType() const{return m_type;} - virtual String getID() const = 0; + virtual std::string getID() const = 0; virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; ... @@ -1174,7 +1174,7 @@ public: ScalarType getScalarType() const {return scalarType;} virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableContol *control); ... @@ -1190,7 +1190,7 @@ public: ScalarType getElementType() const {return elementType;} virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); ... @@ -1204,7 +1204,7 @@ public: StructureConstPtr getStructure() const {return pstructure;} virtual void toString(StringBuilder buf,int indentLevel=0) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); ... @@ -1217,14 +1217,14 @@ public: typedef const Structure& const_reference; std::size_t getNumberFields() const {return numberFields;} - FieldConstPtr getField(String const & fieldName) const; + FieldConstPtr getField(std::string const & fieldName) const; FieldConstPtr getField(std::size_t index) const; - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; FieldConstPtrArray const & getFields() const {return fields;} StringArray const & getFieldNames() const; - String getFieldName(std::size_t fieldIndex) const; + std::string getFieldName(std::size_t fieldIndex) const; virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); ... @@ -1233,23 +1233,23 @@ public: class epicsShareClass Union : public Field { public: POINTER_DEFINITIONS(Union); - static epics::pvData::String DEFAULT_ID; - static epics::pvData::String ANY_ID; + static std::string DEFAULT_ID; + static std::string ANY_ID; virtual ~Union(); typedef Union& reference; typedef const Union& const_reference; std::size_t getNumberFields() const; - FieldConstPtr getField(String const &fieldName) const; + FieldConstPtr getField(std::string const &fieldName) const; FieldConstPtr getField(std::size_t index); - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; FieldConstPtrArray const & getFields() const; StringArray const & getFieldNames() const; - String getFieldName(std::size_t fieldIndex) const; + std::string getFieldName(std::size_t fieldIndex) const; bool isVariant() const; virtual void toString(StringBuilder buf) const; virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize( ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize( @@ -1265,7 +1265,7 @@ public: UnionConstPtr getUnion() const {return punion;} virtual void toString(StringBuilder buf,int indentLevel=0) const; - virtual String getID() const; + virtual std::string getID() const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); @@ -1395,14 +1395,14 @@ public: StringArray const & fieldNames, FieldConstPtrArray const & fields) const; StructureConstPtr createStructure ( - String const & id, + std::string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; UnionConstPtr createUnion ( StringArray const & fieldNames, FieldConstPtrArray const & fields) const; UnionConstPtr createUnion ( - String const & id, + std::string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; UnionConstPtr createVariantUnion() const; @@ -1410,7 +1410,7 @@ public: UnionArrayConstPtr createUnionArray(UnionConstPtr const & punion) const; StructureConstPtr appendField( StructureConstPtr const & structure, - String const & fieldName, FieldConstPtr const & field) const; + std::string const & fieldName, FieldConstPtr const & field) const; StructureConstPtr appendFields( StructureConstPtr const & structure, StringArray const & fieldNames, @@ -1480,7 +1480,7 @@ StructureConstPtr structure = add("index", pvDouble)-> addArray("choices", pvString)-> createStructure(); -String builder; +std::string builder; structure->toString(&builder); cout << builder << endl; @@ -1698,18 +1698,18 @@ class StandardField { public: static StandardFieldPtr getStandardField(); ~StandardField(); - StructureConstPtr scalar(ScalarType type,String const &properties); + StructureConstPtr scalar(ScalarType type,std::string const &properties); StructureConstPtr regUnion( UnionConstPtr const & punion, - String const & properties); - StructureConstPtr variantUnion(String const & properties); + std::string const & properties); + StructureConstPtr variantUnion(std::string const & properties); StructureConstPtr scalarArray( - ScalarType elementType, String const &properties); + ScalarType elementType, std::string const &properties); StructureConstPtr structureArray( - StructureConstPtr const & structure,String const &properties); - StructureConstPtr unionArray(UnionConstPtr const & punion,String const & properties); + StructureConstPtr const & structure,std::string const &properties); + StructureConstPtr unionArray(UnionConstPtr const & punion,std::string const & properties); StructureConstPtr enumerated(); - StructureConstPtr enumerated(String const &properties); + StructureConstPtr enumerated(std::string const &properties); StructureConstPtr alarm(); StructureConstPtr timeStamp(); StructureConstPtr display(); @@ -1879,7 +1879,7 @@ typedef PVValueArray<uint32> PVUIntArray; typedef PVValueArray<uint64> PVULongArray; typedef PVValueArray<float> PVFloatArray; typedef PVValueArray<double> PVDoubleArray; -typedef PVValueArray<String> PVStringArray; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVBooleanArray> PVBooleanArrayPtr; typedef std::tr1::shared_ptr<PVByteArray> PVByteArrayPtr; @@ -1916,8 +1916,8 @@ class PVField public: POINTER_DEFINITIONS(PVField); virtual ~PVField(); - String getFieldName() const ; - String getFullName() const; + std::string getFieldName() const ; + std::string getFullName() const; std::size_t getFieldOffset() const; std::size_t getNextFieldOffset() const; std::size_t getNumberFields() const; @@ -2085,7 +2085,7 @@ typedef std::tr1::shared_ptr<PVDouble> PVDoublePtr; // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -2177,18 +2177,18 @@ public: return std::tr1::dynamic_pointer_cast<PVT>(select(index)); } - PVFieldPtr select(String const & fieldName); + PVFieldPtr select(std::string const & fieldName); template<typename PVT> - std::tr1::shared_ptr<PVT> select(String const & fieldName) { + std::tr1::shared_ptr<PVT> select(std::string const & fieldName) { return std::tr1::dynamic_pointer_cast<PVT>(select(fieldName)); } int32 getSelectedIndex() const; - String getSelectedFieldName() const; + std::string getSelectedFieldName() const; void set(PVFieldPtr const & value); void set(int32 index, PVFieldPtr const & value); - void set(String const & fieldName, PVFieldPtr const & value); + void set(std::string const & fieldName, PVFieldPtr const & value); virtual void serialize( ByteBuffer *pbuffer,SerializableControl *pflusher) const ; PVUnion(UnionConstPtr const & punion); @@ -2328,10 +2328,10 @@ public: virtual void setImmutable(); StructureConstPtr getStructure() const; const PVFieldPtrArray & getPVFields() const; - PVFieldPtr getSubField(String const &fieldName) const; + PVFieldPtr getSubField(std::string const &fieldName) const; template<typename PVT> - std::tr1::shared_ptr<PVT> getSubField(String const &fieldName) const + std::tr1::shared_ptr<PVT> getSubField(std::string const &fieldName) const PVFieldPtr getSubField(std::size_t fieldOffset) const; @@ -2358,7 +2358,7 @@ public:
getPVFields
Returns the array of subfields. The set of subfields must all have different field names.
-
getSubField(String fieldName)
+
getSubField(std::string fieldName)
Get a subField of a field.d A non-null result is @@ -2694,12 +2694,12 @@ class StandardPVField : private NoDefaultMethods { public: static StandardPVFieldPtr getStandardPVField(); ~StandardPVField(); - PVStructurePtr scalar(ScalarType type,String const &properties); - PVStructurePtr scalarArray(ScalarType elementType, String const &properties); - PVStructurePtr structureArray(StructureConstPtr const &structure,String const &properties); - PVStructurePtr unionArray(UnionConstPtr const &punion,String const &properties); + PVStructurePtr scalar(ScalarType type,std::string const &properties); + PVStructurePtr scalarArray(ScalarType elementType, std::string const &properties); + PVStructurePtr structureArray(StructureConstPtr const &structure,std::string const &properties); + PVStructurePtr unionArray(UnionConstPtr const &punion,std::string const &properties); PVStructurePtr enumerated(StringArray const &choices); - PVStructurePtr enumerated(StringArray const &choices, String const &properties); + PVStructurePtr enumerated(StringArray const &choices, std::string const &properties); ... } @@ -2786,8 +2786,8 @@ public: PVStructurePtr const &pv, StringArray const & from, std::size_t fromStartIndex = 0); - void fromString(PVScalarPtr const & pv, String const & from); - std::size_t fromString(PVScalarArrayPtr const & pv, String const &from); + void fromString(PVScalarPtr const & pv, std::string const & from); + std::size_t fromString(PVScalarArrayPtr const & pv, std::string const &from); std::size_t fromStringArray( PVScalarArrayPtr const & pv, std::size_t offset, std::size_t length, @@ -2832,7 +2832,7 @@ public: uint64 toULong(PVScalarPtr const & pv); float toFloat(PVScalarPtr const & pv); double toDouble(PVScalarPtr const & pv); - String toString(PVScalarPtr const & pv); + std::string toString(PVScalarPtr const & pv); void fromByte(PVScalarPtr const & pv,int8 from); void fromShort(PVScalarPtr const & pv,int16 from); void fromInt(PVScalarPtr const & pv, int32 from); @@ -3068,7 +3068,7 @@ stack. For example the following is permitted:

result = pvAlarm.attach(pvField); assert(result); Alarm al; - al.setMessage(String("testMessage")); + al.setMessage(std::string("testMessage")); al.setSeverity(majorAlarm); result = pvAlarm.set(al); assert(result); @@ -3306,8 +3306,8 @@ class Alarm { public: Alarm(); //default constructors and destructor are OK - String getMessage(); - void setMessage(String const &value); + std::string getMessage(); + void setMessage(std::string const &value); AlarmSeverity getSeverity() const; void setSeverity(AlarmSeverity value); AlarmStatus getStatus() const; @@ -3505,12 +3505,12 @@ public: double getHigh() const; void setLow(double value); void setHigh(double value); - String getDescription() const; - void setDescription(String const &value); - String getFormat() const; - void setFormat(String const &value); - String getUnits() const; - void setUnits(String const &value); + std::string getDescription() const; + void setDescription(std::string const &value); + std::string getFormat() const; + void setFormat(std::string const &value); + std::string getUnits() const; + void setUnits(std::string const &value); };

where

@@ -3599,7 +3599,7 @@ public: // a set returns false if field is immutable bool setIndex(int32 index); int32 getIndex(); - String getChoice(); + std::string getChoice(); bool choicesMutable(); StringArrayPtr const & getChoices(); int32 getNumberChoices(); @@ -3624,7 +3624,7 @@ public:
getIndex
Get the index field in the pvData structure.
getChoice
-
Get the String value corresponding to the current index field in the +
Get the std::string value corresponding to the current index field in the pvData structure. An exception is thrown if not attached to a pvData structure.
choicesMutable
@@ -3990,7 +3990,7 @@ private: class Executor : public Runnable{ public: POINTER_DEFINITIONS(Executor); - Executor(String threadName,ThreadPriority priority); + Executor(std::string threadName,ThreadPriority priority); ~Executor(); void execute(CommandPtr const &node); virtual void run(); @@ -4123,7 +4123,7 @@ typedef std::tr1::shared_ptr<MessageQueue> MessageQueuePtr; class MessageNode { public: - String getMessage() const; + std::string getMessage() const; MessageType getMessageType() const; void setMessageNull(); }; @@ -4138,7 +4138,7 @@ public: // must call release before next get void release(); // return (false,true) if message (was not, was) put into queue - bool put(String message,MessageType messageType,bool replaceLast); + bool put(std::string message,MessageType messageType,bool replaceLast); bool isEmpty() ; bool isFull() ; int getClearOverrun(); @@ -4299,14 +4299,14 @@ enum MessageType { infoMessage,warningMessage,errorMessage,fatalErrorMessage }; -extern String getMessageTypeName(MessageType messageType); +extern std::string getMessageTypeName(MessageType messageType); extern const size_t messageTypeCount; class Requester { public: POINTER_DEFINITIONS(Requester); virtual ~Requester(){} - virtual String getRequesterName() = 0; - virtual void message(String const & message,MessageType messageType) = 0; + virtual std::string getRequesterName() = 0; + virtual void message(std::string const & message,MessageType messageType) = 0; };

where

@@ -4316,7 +4316,7 @@ public:
Type of message.
messageTypeName
An array of strings of the message type names, i.e. - String("info"),String("warning"),String("error"),String("fatalError").
+ std::string("info"),std::string("warning"),std::string("error"),std::string("fatalError").
getRequesterName
Returns the requester name.
message
@@ -4390,12 +4390,12 @@ public: SerializableControl* flusher); static int readSize(ByteBuffer* buffer, DeserializableControl* control); - static void serializeString(const String& value, + static void serializeString(const std::string& value, ByteBuffer* buffer,SerializableControl* flusher); - static void serializeSubstring(const String& value, int offset, + static void serializeSubstring(const std::string& value, int offset, int count, ByteBuffer* buffer, SerializableControl* flusher); - static String deserializeString(ByteBuffer* buffer, + static std::string deserializeString(ByteBuffer* buffer, DeserializableControl* control); ... }; @@ -4407,7 +4407,7 @@ public:
readSize
Deserialize the size.
serializeString
-
Serialize a String.
+
Serialize a std::string.
serializeSubstring
Serialize a substring.
deserializeString
@@ -4634,15 +4634,15 @@ Also he should check for correct descriptions. static const char* StatusTypeName[]; static Status OK; Status(); - Status(StatusType type, epics::pvData::String const & message); - Status(StatusType type, epics::pvData::String const & message, epics::pvData::String stackDump); + Status(StatusType type, std::string const & message); + Status(StatusType type, std::string const & message, std::string stackDump); ~Status() StatusType getType() const; - String getMessage() const; - String getStackDump() const; + std::string getMessage() const; + std::string getStackDump() const; bool isOK() const; bool isSuccess() const; - String toString() const; + std::string toString() const; void toString(StringBuilder buffer, int indentLevel = 0) const; void serialize(ByteBuffer *buffer, SerializableControl *flusher) const; void serialize(ByteBuffer *buffer, SerializableControl *flusher) const; @@ -4703,7 +4703,7 @@ class Thread; class Thread : public epicsThread, private NoDefaultMethods { public: Thread( - String name, + std::string name, ThreadPriority priority, Runnable *runnableReady, epicsThreadStackSizeClass stkcls=epicsThreadStackSmall); @@ -4802,7 +4802,7 @@ public: class Timer : private Runnable { public: POINTER_DEFINITIONS(Timer); - Timer(String threadName, ThreadPriority priority); + Timer(std::string threadName, ThreadPriority priority); virtual ~Timer(); virtual void run(); void scheduleAfterDelay( @@ -4971,8 +4971,8 @@ then passes it to pvCopy. class CreateRequest { ... static CreateRequestPtr create(); - virtual PVStructurePtr createRequest(String const &request); - String getMessage(); + virtual PVStructurePtr createRequest(std::string const &request); + std::string getMessage(); };

An example of how it is used is:

@@ -4980,7 +4980,7 @@ class CreateRequest { CreateRequestPtr createRequest = CreateRequest::create(); PVStructurePtr pvRequest = createRequest->createRequest(request); if(pvRequest==NULL) { - String error = createRequest->getMessage(); + std::string error = createRequest->getMessage(); // take some action } else { //success do something @@ -5001,7 +5001,7 @@ class class epicsShareClass PVCopy static PVCopyPtr create( PVStructurePtr const &pvMaster, PVStructurePtr const &pvRequest, - String const & structureName); + std::string const & structureName); PVStructurePtr getPVMaster(); void traverseMaster(PVCopyTraverseMasterCallbackPtr const & callback); StructureConstPtr getStructure(); @@ -5074,7 +5074,7 @@ where
getCopyOffset
Given a field in pvMaster. return the offset in copy for the same field. - A value of String::npos means that the copy does not have this field. + A value of std::string::npos means that the copy does not have this field. Two overloaded methods are provided. The first is called if the field of master is not a structure. The second is for subfields of a structure. @@ -5245,7 +5245,7 @@ It has the methods:

 class MonitorPlugin
 {
-    virtual String const & getName() = 0;
+    virtual std::string const & getName() = 0;
     virtual bool causeMonitor(
         PVFieldPtr const &pvField,
         PVStructurePtr const &pvTop,
@@ -5264,16 +5264,16 @@ class MonitorPluginCreator
         FieldConstPtr const &field,
         StructureConstPtr const &top,
         PVStructurePtr const &pvFieldOptions) = 0;
-     virtual String const & getName() = 0;
+     virtual std::string const & getName() = 0;
 }
 
 class MonitorPluginManager
 {
     static MonitorPluginManagerPtr get();
     bool addPlugin(
-         String const &pluginName,
+         std::string const &pluginName,
          MonitorPluginCreatorPtr const &creator);
-    MonitorPluginCreatorPtr findPlugin(String const &pluginName);
+    MonitorPluginCreatorPtr findPlugin(std::string const &pluginName);
     void showNames();
 };
 
@@ -5445,7 +5445,7 @@ will be passed to the client.
 Assume that the client has already connected to the channel.
 The client can then issue the commands:

-String request("field(alarm[plugin=onChange]");
+std::string request("field(alarm[plugin=onChange]");
 request += ",timeStamp[plugin=onChange,raiseMonitor=false]";
 request += ",power.value[plugin=onChange";
 request += ",voltage.value[plugin=onChange";
@@ -5481,13 +5481,13 @@ public:
             PVStringPtr pvString =
                 pvFieldOptions->getSubField<PVString>("raiseMonitor");
                 if(pvString!=NULL) {
-                    String value = pvString->get();
+                    std::string value = pvString->get();
                     if(value.compare("false")==0) raiseMonitor = false;
                 }
         }
         return true;
    }
-   virtual String &getName(){return pluginName;}
+   virtual std::string &getName(){return pluginName;}
    virtual bool causeMonitor(
         PVFieldPtr const &pvNew,
         PVStructurePtr const &pvTop,
@@ -5505,7 +5505,7 @@ private:
 class OnChangePluginCreator : public MonitorPluginCreator
 {
 public:
-    virtual String &getName(){return pluginName;}
+    virtual std::string &getName(){return pluginName;}
     virtual MonitorPluginPtr create(
         FieldConstPtr const &field,
         StructureConstPtr const &top,
diff --git a/documentation/pvDataDiscussion.html b/documentation/pvDataDiscussion.html
index 08a1e45..5f9b13b 100644
--- a/documentation/pvDataDiscussion.html
+++ b/documentation/pvDataDiscussion.html
@@ -88,7 +88,7 @@ The interfaces for C++ and Java should be similar so that
 someone who understands the interface in one of the languages
 and knows both languages will quickly understand the interface of the other language.

There is another problem with the existing API. There are methods that allow the "structure" -to change after an pvData object is created. An example is PVField::renameField(String newName). +to change after an pvData object is created. An example is PVField::renameField(std::string newName). Such methods should not exist.

There are methods regarding immutability: setImmutable, isImmutablei, setCapacityMutable, and isCapacityMutable. Should they exists? For now lets assume no. @@ -114,18 +114,18 @@ The new methods also have a comment.

Introspection Interfaces

interface Field extends Serializable {
-    String getId();
+    std::string getId();
     Type getType();
     // following will be removed
     void toString(StringBuilder buf);
     void toString(StringBuilder buf,int indentLevel);
-    String toString();
+    std::string toString();
 }
 
 
 // new interface
-interface FieldToString {
-    String toString(Field field);
+interface FieldTostd::string {
+    std::string toString(Field field);
 }
 
 interface Scalar extends Field {
@@ -137,12 +137,12 @@ interface ScalarArray extends Field {
 }
 
 interface Structure extends Field {
-    Field getField(String fieldName);
-    int getFieldIndex(String fieldName);
+    Field getField(std::string fieldName);
+    int getFieldIndex(std::string fieldName);
     Field[] getFields();
     Field getField(int fieldIndex);
-    String[] getFieldNames();
-    String getFieldName(int fieldIndex)
+    std::string[] getFieldNames();
+    std::string getFieldName(int fieldIndex)
 }
 
 interface StructureArray extends Field {
@@ -153,19 +153,19 @@ interface FieldCreate {
     Scalar createScalar(ScalarType scalarType);
     ScalarArray createScalarArray(ScalarType elementType);
     StructureArray createStructureArray(Structure elementStructure);
-    Structure createStructure(String[] fieldNames, Field[] field);
-    Structure createStructure(String id,String[] fieldNames, Field[] field);
+    Structure createStructure(std::string[] fieldNames, Field[] field);
+    Structure createStructure(std::string id,std::string[] fieldNames, Field[] field);
     Structure createStructure(Structure structToClone);
     Field deserialize(ByteBuffer buffer, DeserializableControl control);
     // following will be removed
-    Structure appendField(Structure structure,String fieldName, Field field);
-    Structure appendFields(Structure structure,String[] fieldNames, Field[] fields);
+    Structure appendField(Structure structure,std::string fieldName, Field field);
+    Structure appendFields(Structure structure,std::string[] fieldNames, Field[] fields);
 }
 

Data Interfaces

 interface PVField extends Requester, Serializable {
-    String getFieldName();
+    std::string getFieldName();
     void setRequester(Requester requester);
     int getFieldOffset();
     int getNextFieldOffset();
@@ -178,16 +178,16 @@ interface PVField extends Requester, Serializable {
     PVAuxInfo getPVAuxInfo();
     boolean isImmutable();
     void setImmutable();
-    void renameField(String newName);
+    void renameField(std::string newName);
     void toString(StringBuilder buf);
     void toString(StringBuilder buf,int indentLevel);
-    String toString();
+    std::string toString();
 }
 
 
 // The following is a new interface
-interface PVFieldToString {
-    String toString(PVField pvField);
+interface PVFieldTostd::string {
+    std::string toString(PVField pvField);
     void setMaxInitialArrayElements(int num);
     void setMaxFinalArrayElements(int num);
     int getMaxInitialArrayElements();
@@ -241,28 +241,28 @@ interface PVDoubleArray extends PVArray {
 interface PVStructure extends PVField , BitSetSerializable{
     Structure getStructure();
     PVField[] getPVFields();
-    PVField getSubField(String fieldName);
+    PVField getSubField(std::string fieldName);
     PVField getSubField(int fieldOffset);
     // The following are convenience methods
-    PVBoolean getBooleanField(String fieldName);
-    PVByte getByteField(String fieldName);
-    PVShort getShortField(String fieldName);
-    PVInt getIntField(String fieldName);
-    PVLong getLongField(String fieldName);
-    PVFloat getFloatField(String fieldName);
-    PVDouble getDoubleField(String fieldName);
-    PVString getStringField(String fieldName);
-    PVScalarArray getScalarArrayField(String fieldName);
-    PVStructureArray getStructureArrayField(String fieldName);
-    PVStructure getStructureField(String fieldName);
-    PVArray getArrayField(String fieldName,ScalarType elementType);
+    PVBoolean getBooleanField(std::string fieldName);
+    PVByte getByteField(std::string fieldName);
+    PVShort getShortField(std::string fieldName);
+    PVInt getIntField(std::string fieldName);
+    PVLong getLongField(std::string fieldName);
+    PVFloat getFloatField(std::string fieldName);
+    PVDouble getDoubleField(std::string fieldName);
+    PVString getStringField(std::string fieldName);
+    PVScalarArray getScalarArrayField(std::string fieldName);
+    PVStructureArray getStructureArrayField(std::string fieldName);
+    PVStructure getStructureField(std::string fieldName);
+    PVArray getArrayField(std::string fieldName,ScalarType elementType);
     // following will be removed
-    void appendPVField(String fieldName,PVField pvField);
-    void appendPVFields(String[] fieldNames,PVField[] pvFields);
-    void removePVField(String fieldName);
+    void appendPVField(std::string fieldName,PVField pvField);
+    void appendPVFields(std::string[] fieldNames,PVField[] pvFields);
+    void removePVField(std::string fieldName);
     void replacePVField(PVField oldPVField,PVField newPVField);
-    String getExtendsStructureName();
-    boolean putExtendsStructureName(String extendsStructureName);
+    std::string getExtendsStructureName();
+    boolean putExtendsStructureName(std::string extendsStructureName);
     public boolean checkValid();
 }
  
@@ -297,13 +297,13 @@ public interface PVDataCreate {
     PVScalarArray createPVScalarArray(PVScalarArray arrayToClone;
     PVStructureArray createPVStructureArray(StructureArray structureArray);
     PVStructure createPVStructure(Structure structure);
-    PVStructure createPVStructure(String[] fieldNames,Field[] fields);
+    PVStructure createPVStructure(std::string[] fieldNames,Field[] fields);
     PVStructure createPVStructure(PVStructure structToClone);
     // following will be removed
     PVField[] flattenPVStructure(PVStructure pvStructure);
 }
 
-

PVFieldToString

+

PVFieldTostd::string

In addition to toString this has methods to limit the number of array element to display. The existing Java implementation of toString displayed all elements. For large arrays this is not desirable. @@ -346,7 +346,7 @@ public: POINTER_DEFINITIONS(Field); virtual ~Field(); Type getType() const{return m_type;} - virtual String getID() const = 0; + virtual std::string getID() const = 0; // following will be removed virtual void toString(StringBuilder buf) const{toString(buf,0);} @@ -373,7 +373,7 @@ public: // following will be removed virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; ... }; @@ -391,7 +391,7 @@ public: // following will be removed virtual void toString(StringBuilder buf) const{toString(buf,0);} virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; ... }; @@ -403,19 +403,19 @@ public: typedef const Structure& const_reference; std::size_t getNumberFields() const {return numberFields;} - FieldConstPtr getField(String const & fieldName) const; + FieldConstPtr getField(std::string const & fieldName) const; FieldConstPtr getField(std::size_t index) const; - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; FieldConstPtrArray const & getFields() const {return fields;} StringArray const & getFieldNames() const; - String getFieldName(std::size_t fieldIndex); + std::string getFieldName(std::size_t fieldIndex); virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); // following will be removed - void renameField(std::size_t fieldIndex,String const &newName); + void renameField(std::size_t fieldIndex,std::string const &newName); virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; ... }; @@ -432,7 +432,7 @@ public: // following will be removed virtual void toString(StringBuilder buf,int indentLevel=0) const; - virtual String getID() const; + virtual std::string getID() const; ... }; @@ -447,7 +447,7 @@ public: StringArray const & fieldNames, FieldConstPtrArray const & fields) const; StructureConstPtr createStructure ( - String const &id, + std::string const &id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; FieldConstPtr deserialize(ByteBuffer* buffer, DeserializableControl* control) const; @@ -455,7 +455,7 @@ public: // following will be removed StructureConstPtr appendField( StructureConstPtr const & structure, - String const &fieldName, FieldConstPtr const & field) const; + std::string const &fieldName, FieldConstPtr const & field) const; StructureConstPtr appendFields( StructureConstPtr const & structure, StringArray const & fieldNames, @@ -475,7 +475,7 @@ class PVField public: POINTER_DEFINITIONS(PVField); virtual ~PVField(); - inline const String &getFieldName() const ; + inline const std::string &getFieldName() const ; virtual void setRequester(RequesterPtr const &prequester); std::size_t getFieldOffset() const; std::size_t getNextFieldOffset() const; @@ -486,15 +486,15 @@ public: void setPostHandler(PostHandlerPtr const &postHandler); // following will be removed - virtual void message(String message,MessageType messageType); + virtual void message(std::string message,MessageType messageType); void replacePVField(const PVFieldPtr& newPVField); - String getFullName() const; + std::string getFullName() const; virtual bool equals(PVField &pv); PVAuxInfoPtr & getPVAuxInfo() bool isImmutable() const; virtual void setImmutable(); void replacePVField(const PVFieldPtr& newPVField); - void renameField(String const &newName); + void renameField(std::string const &newName); virtual void toString(StringBuilder buf) ; virtual void toString(StringBuilder buf,int indentLevel); std::ostream& dumpValue(std::ostream& o) const; @@ -504,8 +504,8 @@ public: // The following is a new class -class PVFieldToString { - String toString(const PVFieldPtr &pvField); +class PVFieldTostd::string { + std::string toString(const PVFieldPtr &pvField); void setMaxInitialArrayElements(size_t num); void setMaxFinalArrayElements(size_t num); size_t getMaxInitialArrayElements(); @@ -546,7 +546,7 @@ public: } // PVString is special case, since it implements SerializableArray -class PVString : public PVScalarValue<String>, SerializableArray { +class PVString : public PVScalarValue<std::string>, SerializableArray { public: virtual ~PVString() {} ... @@ -650,7 +650,7 @@ public: typedef PVValueArray<uint8> PVBooleanArray; typedef std::tr1::shared_ptr<PVBooleanArray> PVBooleanArrayPtr; ... -typedef PVValueArray<String> PVStringArray; +typedef PVValueArray<std::string> PVStringArray; typedef std::tr1::shared_ptr<PVStringArray> PVStringArrayPtr; class PVStructure : public PVField,public BitSetSerializable { @@ -662,24 +662,24 @@ public: StructureConstPtr getStructure() const; const PVFieldPtrArray & getPVFields() const; - PVFieldPtr getSubField(String const &fieldName) const; + PVFieldPtr getSubField(std::string const &fieldName) const; PVFieldPtr getSubField(std::size_t fieldOffset) const; - PVBooleanPtr getBooleanField(String const &fieldName) ; - PVBytePtr getByteField(String const &fieldName) ; - PVShortPtr getShortField(String const &fieldName) ; - PVIntPtr getIntField(String const &fieldName) ; - PVLongPtr getLongField(String const &fieldName) ; - PVUBytePtr getUByteField(String const &fieldName) ; - PVUShortPtr getUShortField(String const &fieldName) ; - PVUIntPtr getUIntField(String const &fieldName) ; - PVULongPtr getULongField(String const &fieldName) ; - PVFloatPtr getFloatField(String const &fieldName) ; - PVDoublePtr getDoubleField(String const &fieldName) ; - PVStringPtr getStringField(String const &fieldName) ; - PVStructurePtr getStructureField(String const &fieldName) ; + PVBooleanPtr getBooleanField(std::string const &fieldName) ; + PVBytePtr getByteField(std::string const &fieldName) ; + PVShortPtr getShortField(std::string const &fieldName) ; + PVIntPtr getIntField(std::string const &fieldName) ; + PVLongPtr getLongField(std::string const &fieldName) ; + PVUBytePtr getUByteField(std::string const &fieldName) ; + PVUShortPtr getUShortField(std::string const &fieldName) ; + PVUIntPtr getUIntField(std::string const &fieldName) ; + PVULongPtr getULongField(std::string const &fieldName) ; + PVFloatPtr getFloatField(std::string const &fieldName) ; + PVDoublePtr getDoubleField(std::string const &fieldName) ; + PVStringPtr getStringField(std::string const &fieldName) ; + PVStructurePtr getStructureField(std::string const &fieldName) ; PVScalarArrayPtr getScalarArrayField( - String const &fieldName,ScalarType elementType) ; - PVStructureArrayPtr getStructureArrayField(String const &fieldName) ; + std::string const &fieldName,ScalarType elementType) ; + PVStructureArrayPtr getStructureArrayField(std::string const &fieldName) ; virtual void serialize( ByteBuffer *pbuffer,SerializableControl *pflusher) const ; virtual void deserialize( @@ -693,16 +693,16 @@ public: // following are removed void appendPVField( - String const &fieldName, + std::string const &fieldName, PVFieldPtr const & pvField); void appendPVFields( StringArray const & fieldNames, PVFieldPtrArray const & pvFields); - void removePVField(String const &fieldName); + void removePVField(std::string const &fieldName); virtual void setImmutable(); - String getExtendsStructureName() const; + std::string getExtendsStructureName() const; bool putExtendsStructureName( - String const &extendsStructureName); + std::string const &extendsStructureName); }; diff --git a/src/copy/createRequest.cpp b/src/copy/createRequest.cpp index 94f110d..b4c7dea 100644 --- a/src/copy/createRequest.cpp +++ b/src/copy/createRequest.cpp @@ -17,6 +17,7 @@ using namespace epics::pvData; using std::tr1::static_pointer_cast; using std::cout; using std::endl; +using std::string; namespace epics { namespace pvData { @@ -26,23 +27,23 @@ static FieldCreatePtr fieldCreate = getFieldCreate(); class CreateRequestImpl : public CreateRequest { private: - void removeBlanks(String& str) + void removeBlanks(string& str) { while(true) { - String::size_type pos = str.find_first_of(' '); - if(pos==String::npos) return; + string::size_type pos = str.find_first_of(' '); + if(pos==string::npos) return; str.erase(pos,1); } } - size_t findMatchingBrace(String& request, size_t index, int numOpen) { + size_t findMatchingBrace(string& request, size_t index, int numOpen) { size_t openBrace = request.find('{', index+1); size_t closeBrace = request.find('}', index+1); - if(openBrace == String::npos && closeBrace == std::string::npos){ + if(openBrace == string::npos && closeBrace == string::npos){ message = request + " missing }"; - return std::string::npos; + return string::npos; } - if (openBrace != String::npos && openBrace!=0) { + if (openBrace != string::npos && openBrace!=0) { if(openBrace=request.size()) return request.size(); ind = closeBrace; continue; @@ -89,20 +90,20 @@ private: return request.size(); } - std::vector split(String const & commaSeparatedList) { - String::size_type numValues = 1; - String::size_type index=0; + std::vector split(string const & commaSeparatedList) { + string::size_type numValues = 1; + string::size_type index=0; while(true) { - String::size_type pos = commaSeparatedList.find(',',index); - if(pos==String::npos) break; + string::size_type pos = commaSeparatedList.find(',',index); + if(pos==string::npos) break; numValues++; index = pos +1; } - std::vector valueList(numValues,""); + std::vector valueList(numValues,""); index=0; for(size_t i=0; i items = split(request); + std::vector items = split(request); size_t nitems = items.size(); StringArray fieldNames(nitems); FieldConstPtrArray fields(nitems); for(size_t j=0; j items = split(request); + std::vector items = split(request); size_t nitems = items.size(); for(size_t j=0; jgetSubField(name); pvValue->put(value); } @@ -150,7 +151,7 @@ private: StructureConstPtr createSubFieldRequest( StructureConstPtr parent, - String request) + string request) { if(request.length()<=0) return parent; size_t period = request.find('.'); @@ -158,9 +159,9 @@ private: size_t openBrace = request.find('{'); // name only - if(period==String::npos - && openBracket==String::npos - && openBrace==String::npos) + if(period==string::npos + && openBracket==string::npos + && openBrace==string::npos) { StructureConstPtr subField = fieldCreate->createStructure(); parent = fieldCreate->appendField(parent,request,subField); @@ -168,11 +169,11 @@ private: } // period is first - if(period!=String::npos - && (openBracket==String::npos || periodcreateStructure(); subField = createSubFieldRequest(subField,request.substr(period+1)); if(subField==NULL) return subField; @@ -181,20 +182,20 @@ private: } // brace before [ or . - if(openBrace!=String::npos - && (openBracket==String::npos || openBrace= request.size()) nextChar = String::npos; - if(nextChar!=String::npos) { + if(nextChar>= request.size()) nextChar = string::npos; + if(nextChar!=string::npos) { message = request + " syntax error " + request[nextChar] + " after } illegal"; return StructureConstPtr(); } StructureConstPtr subField = fieldCreate->createStructure(); - String subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); + string subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); subField = createFieldRequest(subField,subRequest); if(subField==NULL) return subField; parent = fieldCreate->appendField(parent,fieldName,subField); @@ -202,15 +203,15 @@ private: } // [ is before brace or . - if(openBracket!=String::npos - && (openBrace==String::npos || openBracket= request.size()) nextChar = String::npos; - if(nextChar==String::npos) { + if(nextChar>= request.size()) nextChar = string::npos; + if(nextChar==string::npos) { StringArray fieldNames(1); FieldConstPtrArray fields(1); fieldNames[0] = "_options"; @@ -241,9 +242,9 @@ private: } if(request[nextChar]=='{') { size_t closeBrace = findMatchingBrace(request,openBrace,1); - if(closeBrace==String::npos) return StructureConstPtr(); + if(closeBrace==string::npos) return StructureConstPtr(); StructureConstPtr subField = fieldCreate->createStructure(); - String subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); + string subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); subField = createFieldRequest(subField,subRequest); if(subField==NULL) return subField; size_t numSub = subField->getNumberFields(); @@ -270,12 +271,12 @@ private: StructureConstPtr createFieldRequest( StructureConstPtr parent, - String request) + string request) { size_t length = request.length(); if(length<=0) return parent; size_t end = findEndField(request); - if(end==String::npos) return StructureConstPtr(); + if(end==string::npos) return StructureConstPtr(); StringArray fieldNames; FieldConstPtrArray fields; StructureConstPtr subField = fieldCreate->createStructure(); @@ -308,24 +309,24 @@ private: void initSubFieldOptions( PVStructurePtr const & pvParent, - String request) + string request) { if(request.length()<=0) return; size_t period = request.find('.'); size_t openBracket = request.find('['); size_t openBrace = request.find('{'); // name only - if(period==String::npos - && openBracket==String::npos - && openBrace==String::npos) + if(period==string::npos + && openBracket==string::npos + && openBrace==string::npos) { return; } // period is first - if(period!=String::npos - && (openBracket==String::npos || period(pvParent->getPVFields()[0]); initSubFieldOptions(pvSubField,request.substr(period+1)); @@ -333,12 +334,12 @@ private: } // brace before [ or . - if(openBrace!=String::npos - && (openBracket==String::npos || openBrace(pvParent->getPVFields()[0]); size_t closeBrace = findMatchingBrace(request,openBrace,1); - String subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); + string subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); initFieldOptions(pvSubField,subRequest); return; } @@ -347,8 +348,8 @@ private: size_t closeBracket = findMatchingBracket(request,openBracket); initRequestOptions(pvOptions,request.substr(openBracket+1,closeBracket-openBracket-1)); size_t nextChar = closeBracket+1; - if(nextChar>= request.size()) nextChar = String::npos; - if(nextChar==String::npos) return; + if(nextChar>= request.size()) nextChar = string::npos; + if(nextChar==string::npos) return; if(request[nextChar]=='.') { PVStructurePtr pvSubField = static_pointer_cast(pvParent->getPVFields()[1]); initSubFieldOptions(pvSubField,request.substr(nextChar+1)); @@ -357,7 +358,7 @@ private: if(request[nextChar]!='{') throw std::logic_error("initSubFieldOptions request[nextChar]!='{'"); size_t closeBrace = findMatchingBrace(request,openBrace,1); const PVFieldPtrArray &pvFields = pvParent->getPVFields(); - String subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); + string subRequest = request.substr(openBrace+1,closeBrace-openBrace-1); for(size_t i=1; i(pvFields[i]); size_t comma = subRequest.find(','); @@ -368,9 +369,9 @@ private: void initFieldOptions( PVStructurePtr const & pvParent, - String request) + string request) { - if(request.find('[')==String::npos) return; + if(request.find('[')==string::npos) return; size_t num = pvParent->getStructure()->getNumberFields(); if(num==0) return; if(num==1) { @@ -381,11 +382,11 @@ private: size_t start = 0; for(size_t i=0; i(pvParent->getPVFields()[i]); - String subRequest = request.substr(start, end - start); + string subRequest = request.substr(start, end - start); initSubFieldOptions(pvSub,subRequest); if(i==num-1) break; start = end +1; - String xxx = request.substr(start); + string xxx = request.substr(start); end += findEndField(xxx) + 1; } } @@ -394,9 +395,9 @@ private: public: virtual PVStructure::shared_pointer createRequest( - String const & crequest) + string const & crequest) { - String request = crequest; + string request = crequest; StructureConstPtr topStructure = fieldCreate->createStructure(); if (!request.empty()) removeBlanks(request); @@ -410,18 +411,18 @@ public: size_t offsetField = request.find("field("); size_t offsetPutField = request.find("putField("); size_t offsetGetField = request.find("getField("); - if(offsetRecord==String::npos - && offsetField==String::npos - && offsetPutField==String::npos - && offsetGetField==String::npos) + if(offsetRecord==string::npos + && offsetField==string::npos + && offsetPutField==string::npos + && offsetGetField==string::npos) { request = "field(" + crequest + ")"; offsetField = request.find("field("); } - if (offsetRecord != String::npos) { + if (offsetRecord != string::npos) { size_t openBracket = request.find('[', offsetRecord); size_t closeBracket = request.find(']', openBracket); - if(closeBracket == String::npos) { + if(closeBracket == string::npos) { message = request.substr(offsetRecord) + " record[ does not have matching ]"; return PVStructurePtr(); @@ -434,10 +435,10 @@ public: } topStructure = fieldCreate->appendField(topStructure,"record",structure); } - if (offsetField != String::npos) { + if (offsetField != string::npos) { size_t openBrace = request.find('(', offsetField); size_t closeBrace = request.find(')', openBrace); - if(closeBrace == String::npos) { + if(closeBrace == string::npos) { message = request.substr(offsetField) + " field( does not have matching )"; return PVStructurePtr(); @@ -450,10 +451,10 @@ public: } topStructure = fieldCreate->appendField(topStructure,"field",structure); } - if (offsetPutField != String::npos) { + if (offsetPutField != string::npos) { size_t openBrace = request.find('(', offsetPutField); size_t closeBrace = request.find(')', openBrace); - if(closeBrace == String::npos) { + if(closeBrace == string::npos) { message = request.substr(offsetField) + " putField( does not have matching )"; return PVStructurePtr(); @@ -466,10 +467,10 @@ public: } topStructure = fieldCreate->appendField(topStructure,"putField",structure); } - if (offsetGetField != String::npos) { + if (offsetGetField != string::npos) { size_t openBrace = request.find('(', offsetGetField); size_t closeBrace = request.find(')', openBrace); - if(closeBrace == String::npos) { + if(closeBrace == string::npos) { message = request.substr(offsetField) + " getField( does not have matching )"; return PVStructurePtr(); @@ -483,14 +484,14 @@ public: topStructure = fieldCreate->appendField(topStructure,"getField",structure); } PVStructurePtr pvStructure = pvDataCreate->createPVStructure(topStructure); - if (offsetRecord != String::npos) { + if (offsetRecord != string::npos) { size_t openBracket = request.find('[', offsetRecord); size_t closeBracket = request.find(']', openBracket); initRequestOptions( pvStructure->getSubField("record"), request.substr(openBracket+1,closeBracket-openBracket-1)); } - if (offsetField != String::npos) { + if (offsetField != string::npos) { size_t openParam = request.find('(', offsetField); size_t closeParam = request.find(')', openParam); PVStructurePtr pvSub = pvStructure->getSubField("field"); @@ -499,7 +500,7 @@ public: } if(pvSub!=NULL) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1)); } - if (offsetPutField != String::npos) { + if (offsetPutField != string::npos) { size_t openParam = request.find('(', offsetPutField); size_t closeParam = request.find(')', openParam); PVStructurePtr pvSub = pvStructure->getSubField("putField"); @@ -508,7 +509,7 @@ public: } if(pvSub!=NULL) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1)); } - if (offsetGetField != String::npos) { + if (offsetGetField != string::npos) { size_t openParam = request.find('(', offsetGetField); size_t closeParam = request.find(')', openParam); PVStructurePtr pvSub = pvStructure->getSubField("getField"); diff --git a/src/copy/createRequest.h b/src/copy/createRequest.h index e7d66a4..e53ccdf 100644 --- a/src/copy/createRequest.h +++ b/src/copy/createRequest.h @@ -38,15 +38,15 @@ class epicsShareClass CreateRequest { * If a NULL PVStructure is returned then getMessage will return * the reason. */ - virtual PVStructure::shared_pointer createRequest(String const & request) = 0; + virtual PVStructure::shared_pointer createRequest(std::string const & request) = 0; /** * Get the error message of createRequest returns NULL * return the error message */ - String getMessage() {return message;} + std::string getMessage() {return message;} protected: CreateRequest() {} - String message; + std::string message; }; diff --git a/src/copy/pvCopy.cpp b/src/copy/pvCopy.cpp index 0bb768d..64092d8 100644 --- a/src/copy/pvCopy.cpp +++ b/src/copy/pvCopy.cpp @@ -20,16 +20,15 @@ #include #include - -namespace epics { namespace pvData { - -using namespace epics::pvData; using std::tr1::static_pointer_cast; using std::tr1::dynamic_pointer_cast; +using std::string; using std::size_t; using std::cout; using std::endl; +namespace epics { namespace pvData { + static PVCopyPtr NULLPVCopy; static FieldConstPtr NULLField; static StructureConstPtr NULLStructure; @@ -63,7 +62,7 @@ struct CopyStructureNode : public CopyNode { PVCopyPtr PVCopy::create( PVStructurePtr const &pvMaster, PVStructurePtr const &pvRequest, - String const & structureName) + string const & structureName) { PVStructurePtr pvStructure(pvRequest); if(structureName.size()>0) { @@ -171,12 +170,12 @@ size_t PVCopy::getCopyOffset(PVFieldPtr const &masterPVField) size_t off = masterPVField->getFieldOffset(); size_t offdiff = off -offsetParent; if(offdiffnfields) return headNode->structureOffset + offdiff; - return String::npos; + return string::npos; } CopyStructureNodePtr node = static_pointer_cast(headNode); CopyMasterNodePtr masterNode = getCopyOffset(node,masterPVField); if(masterNode.get()!=NULL) return masterNode->structureOffset; - return String::npos; + return string::npos; } size_t PVCopy::getCopyOffset( @@ -186,12 +185,12 @@ size_t PVCopy::getCopyOffset( CopyMasterNodePtr masterNode; if(!headNode->isStructure) { masterNode = static_pointer_cast(headNode); - if(masterNode->masterPVField.get()!=masterPVStructure.get()) return String::npos; + if(masterNode->masterPVField.get()!=masterPVStructure.get()) return string::npos; } else { CopyStructureNodePtr node = static_pointer_cast(headNode); masterNode = getCopyOffset(node,masterPVField); } - if(masterNode.get()==NULL) return String::npos; + if(masterNode.get()==NULL) return string::npos; size_t diff = masterPVField->getFieldOffset() - masterPVStructure->getFieldOffset(); return masterNode->structureOffset + diff; @@ -284,14 +283,14 @@ void PVCopy::updateMaster( } } -epics::pvData::String PVCopy::dump() +string PVCopy::dump() { - String builder; + string builder; dump(&builder,headNode,0); return builder; } -void PVCopy::dump(String *builder,CopyNodePtr const &node,int indentLevel) +void PVCopy::dump(string *builder,CopyNodePtr const &node,int indentLevel) { getConvert()->newLine(builder,indentLevel); std::stringstream ss; @@ -302,12 +301,17 @@ void PVCopy::dump(String *builder,CopyNodePtr const &node,int indentLevel) PVStructurePtr options = node->options; if(options.get()!=NULL) { getConvert()->newLine(builder,indentLevel +1); - options->toString(builder); + + // TODO !!! ugly + std::ostringstream oss; + oss << *options; + *builder += oss.str(); + getConvert()->newLine(builder,indentLevel); } if(!node->isStructure) { CopyMasterNodePtr masterNode = static_pointer_cast(node); - String name = masterNode->masterPVField->getFullName(); + string name = masterNode->masterPVField->getFullName(); *builder += " masterField " + name; return; } @@ -331,7 +335,7 @@ bool PVCopy::init(epics::pvData::PVStructurePtr const &pvRequest) PVStructurePtr pvMasterStructure = pvMaster; size_t len = pvRequest->getPVFields().size(); bool entireMaster = false; - if(len==String::npos) entireMaster = true; + if(len==string::npos) entireMaster = true; if(len==0) entireMaster = true; PVStructurePtr pvOptions; if(len==1 && pvRequest->getSubField("_options")!=NULL) { @@ -358,12 +362,12 @@ bool PVCopy::init(epics::pvData::PVStructurePtr const &pvRequest) return true; } -epics::pvData::String PVCopy::dump( - String const &value, +string PVCopy::dump( + string const &value, CopyNodePtr const &node, int indentLevel) { - throw std::logic_error(String("Not Implemented")); + throw std::logic_error(string("Not Implemented")); } @@ -381,7 +385,7 @@ StructureConstPtr PVCopy::createStructure( FieldConstPtrArray fields; fields.reserve(length); StringArray fieldNames; fields.reserve(length); for(size_t i=0; igetSubField(fieldName); if(pvMasterField==NULL) continue; FieldConstPtr field = pvMasterField->getField(); @@ -425,7 +429,7 @@ CopyNodePtr PVCopy::createStructureNodes( nodes->reserve(number); for(size_t i=0; igetFieldName(); + string fieldName = copyPVField->getFieldName(); PVStructurePtr requestPVStructure = static_pointer_cast( pvFromRequest->getSubField(fieldName)); @@ -531,7 +535,7 @@ void PVCopy::updateStructureNodeFromBitSet( size_t offset = structureNode->structureOffset; if(!doAll) { size_t nextSet = bitSet->nextSetBit(offset); - if(nextSet==String::npos) return; + if(nextSet==string::npos) return; } if(offset>=pvCopy->getNextFieldOffset()) return; if(!doAll) doAll = bitSet->get(offset); @@ -567,7 +571,7 @@ void PVCopy::updateSubFieldFromBitSet( if(!doAll) { size_t offset = pvCopy->getFieldOffset(); size_t nextSet = bitSet->nextSetBit(offset); - if(nextSet==String::npos) return; + if(nextSet==string::npos) return; if(nextSet>=pvCopy->getNextFieldOffset()) return; } ConvertPtr convert = getConvert(); @@ -577,7 +581,7 @@ void PVCopy::updateSubFieldFromBitSet( PVFieldPtrArray const & pvCopyFields = pvCopyStructure->getPVFields(); if(pvMasterField->getField()->getType() !=epics::pvData::structure) { - throw std::logic_error(String("Logic error")); + throw std::logic_error(string("Logic error")); } PVStructurePtr pvMasterStructure = static_pointer_cast(pvMasterField); diff --git a/src/copy/pvCopy.h b/src/copy/pvCopy.h index 14d2d96..cf1e47c 100644 --- a/src/copy/pvCopy.h +++ b/src/copy/pvCopy.h @@ -71,7 +71,7 @@ public: static PVCopyPtr create( PVStructurePtr const &pvMaster, PVStructurePtr const &pvRequest, - String const & structureName); + std::string const & structureName); virtual ~PVCopy(){} virtual void destroy(); /** @@ -99,13 +99,13 @@ public: PVStructurePtr createPVStructure(); /** * Given a field in pvMaster. return the offset in copy for the same field. - * A value of String::npos means that the copy does not have this field. + * A value of std::string::npos means that the copy does not have this field. * @param masterPVField The field in master. */ std::size_t getCopyOffset(PVFieldPtr const &masterPVField); /** * Given a field in pvMaster. return the offset in copy for the same field. - * A value of String::npos means that the copy does not have this field. + * A value of std::string::npos means that the copy does not have this field. * @param masterPVStructure A structure in master that has masterPVField. * @param masterPVField The field in master. */ @@ -166,10 +166,10 @@ public: /** * For debugging. */ - String dump(); + std::string dump(); private: void dump( - String *builder, + std::string *builder, CopyNodePtr const &node, int indentLevel); PVCopyPtr getPtrSelf() @@ -185,8 +185,8 @@ private: PVCopy(PVStructurePtr const &pvMaster); friend class PVCopyMonitor; bool init(PVStructurePtr const &pvRequest); - String dump( - String const &value, + std::string dump( + std::string const &value, CopyNodePtr const &node, int indentLevel); StructureConstPtr createStructure( diff --git a/src/factory/Compare.cpp b/src/factory/Compare.cpp index b80ab00..18ee2ba 100644 --- a/src/factory/Compare.cpp +++ b/src/factory/Compare.cpp @@ -7,13 +7,15 @@ * @author mes */ -#define epicsExportSharedSymbols -#include - #include #include #include +#define epicsExportSharedSymbols +#include + +using std::string; + namespace epics { namespace pvData { // Introspection object comparision @@ -202,7 +204,7 @@ bool compareField(const PVScalarArray* left, const PVScalarArray* right) OP(pvLong, int64); OP(pvFloat, float); OP(pvDouble, double); - OP(pvString, String); + OP(pvString, string); #undef OP } throw std::logic_error("PVScalarArray with invalid element type!"); diff --git a/src/factory/Convert.cpp b/src/factory/Convert.cpp index a17d4eb..b437187 100644 --- a/src/factory/Convert.cpp +++ b/src/factory/Convert.cpp @@ -22,31 +22,32 @@ using std::tr1::static_pointer_cast; using std::size_t; +using std::string; namespace epics { namespace pvData { -static std::vector split(String commaSeparatedList) { - String::size_type numValues = 1; - String::size_type index=0; +static std::vector split(string commaSeparatedList) { + string::size_type numValues = 1; + string::size_type index=0; while(true) { - String::size_type pos = commaSeparatedList.find(',',index); - if(pos==String::npos) break; + string::size_type pos = commaSeparatedList.find(',',index); + if(pos==string::npos) break; numValues++; index = pos +1; } - std::vector valueList(numValues,""); + std::vector valueList(numValues,""); index=0; for(size_t i=0; i valueList(split(from)); + std::vector valueList(split(from)); size_t length = valueList.size(); size_t num = fromStringArray(pv,0,length,valueList,0); if(numputFrom(temp); + pv->putFrom(temp); return length; } else { @@ -143,7 +144,7 @@ size_t Convert::toStringArray(PVScalarArrayPtr const & pv, StringArray &to, size_t toOffset) { PVStringArray::const_svector data; - pv->getAs(data); + pv->getAs(data); data.slice(offset, length); if(toOffset+data.size() > to.size()) to.resize(toOffset+data.size()); @@ -192,7 +193,7 @@ bool Convert::isCopyCompatible(FieldConstPtr const &from, FieldConstPtr const &t return isCopyUnionArrayCompatible(xxx,yyy); } } - String message("Convert::isCopyCompatible should never get here"); + string message("Convert::isCopyCompatible should never get here"); throw std::logic_error(message); } @@ -259,7 +260,7 @@ void Convert::copyScalar(PVScalarPtr const & from, PVScalarPtr const & to) { if(to->isImmutable()) { if(from==to) return; - String message("Convert.copyScalar destination is immutable"); + string message("Convert.copyScalar destination is immutable"); throw std::invalid_argument(message); } to->assign(*from.get()); @@ -349,13 +350,13 @@ void Convert::copyStructure(PVStructurePtr const & from, PVStructurePtr const & PVFieldPtrArray const & toDatas = to->getPVFields(); if(from->getStructure()->getNumberFields() != to->getStructure()->getNumberFields()) { - String message("Convert.copyStructure Illegal copyStructure"); + string message("Convert.copyStructure Illegal copyStructure"); throw std::invalid_argument(message); } size_t numberFields = from->getStructure()->getNumberFields(); if(numberFields>=2) { - String name0 = fromDatas[0]->getFieldName(); - String name1 = fromDatas[1]->getFieldName(); + string name0 = fromDatas[0]->getFieldName(); + string name1 = fromDatas[1]->getFieldName(); // look for enumerated structure and copy choices first if(name0.compare("index")==0 && name1.compare("choices")==0) { FieldConstPtr fieldIndex = fromDatas[0]->getField(); @@ -383,7 +384,7 @@ void Convert::copyStructure(PVStructurePtr const & from, PVStructurePtr const & Type fromType = fromData->getField()->getType(); Type toType = toData->getField()->getType(); if(fromType!=toType) { - String message("Convert.copyStructure Illegal copyStructure"); + string message("Convert.copyStructure Illegal copyStructure"); throw std::invalid_argument(message); } if(toData->isImmutable()) { @@ -513,10 +514,10 @@ void Convert::copyUnionArray( to->replace(from->view()); } -void Convert::newLine(StringBuilder buffer, int indentLevel) +void Convert::newLine(string *buffer, int indentLevel) { *buffer += "\n"; - *buffer += String(indentLevel*4, ' '); + *buffer += string(indentLevel*4, ' '); } ConvertPtr Convert::getConvert() diff --git a/src/factory/FieldCreateFactory.cpp b/src/factory/FieldCreateFactory.cpp index 1685966..8b09700 100644 --- a/src/factory/FieldCreateFactory.cpp +++ b/src/factory/FieldCreateFactory.cpp @@ -27,17 +27,12 @@ using std::tr1::static_pointer_cast; using std::size_t; +using std::string; namespace epics { namespace pvData { static DebugLevel debugLevel = lowDebug; -static void newLine(StringBuilder buffer, int indentLevel) -{ - *buffer += "\n"; - for(int i=0; igetID(); + string id = structure->getID(); if (id == Structure::DEFAULT_ID) // TODO slow comparison - SerializeHelper::serializeString(emptyString, buffer, control); + SerializeHelper::serializeString(emptyStringtring, buffer, control); else SerializeHelper::serializeString(id, buffer, control); @@ -161,7 +135,7 @@ static void serializeStructureField(const Structure* structure, ByteBuffer* buff static StructureConstPtr deserializeStructureField(const FieldCreate* fieldCreate, ByteBuffer* buffer, DeserializableControl* control) { - String id = SerializeHelper::deserializeString(buffer, control); + string id = SerializeHelper::deserializeString(buffer, control); const std::size_t size = SerializeHelper::readSize(buffer, control); FieldConstPtrArray fields; fields.reserve(size); StringArray fieldNames; fieldNames.reserve(size); @@ -181,9 +155,9 @@ static void serializeUnionField(const Union* punion, ByteBuffer* buffer, Seriali { // to optimize default (non-empty) IDs optimization // empty IDs are not allowed - String id = punion->getID(); + string id = punion->getID(); if (id == Union::DEFAULT_ID) // TODO slow comparison - SerializeHelper::serializeString(emptyString, buffer, control); + SerializeHelper::serializeString(emptyStringtring, buffer, control); else SerializeHelper::serializeString(id, buffer, control); @@ -200,7 +174,7 @@ static void serializeUnionField(const Union* punion, ByteBuffer* buffer, Seriali static UnionConstPtr deserializeUnionField(const FieldCreate* fieldCreate, ByteBuffer* buffer, DeserializableControl* control) { - String id = SerializeHelper::deserializeString(buffer, control); + string id = SerializeHelper::deserializeString(buffer, control); const std::size_t size = SerializeHelper::readSize(buffer, control); FieldConstPtrArray fields; fields.reserve(size); StringArray fieldNames; fieldNames.reserve(size); @@ -251,9 +225,9 @@ int8 ScalarArray::getTypeCodeLUT() const return typeCodeLUT[elementType]; } -const String ScalarArray::getIDScalarArrayLUT() const +const string ScalarArray::getIDScalarArrayLUT() const { - static const String idScalarArrayLUT[] = { + static const string idScalarArrayLUT[] = { "boolean[]", // pvBoolean "byte[]", // pvByte "short[]", // pvShort @@ -270,13 +244,14 @@ const String ScalarArray::getIDScalarArrayLUT() const return idScalarArrayLUT[elementType]; } -String ScalarArray::getID() const +string ScalarArray::getID() const { return getIDScalarArrayLUT(); } -void ScalarArray::toString(StringBuilder buffer,int /*indentLevel*/) const{ - *buffer += getID(); +std::ostream& ScalarArray::dump(std::ostream& o) const +{ + return o << format::indent() << getID(); } void ScalarArray::serialize(ByteBuffer *buffer, SerializableControl *control) const { @@ -297,15 +272,19 @@ StructureArray::~StructureArray() { if(debugLevel==highDebug) printf("~StructureArray\n"); } -String StructureArray::getID() const +string StructureArray::getID() const { return pstructure->getID() + "[]"; } -void StructureArray::toString(StringBuilder buffer,int indentLevel) const { - *buffer += getID(); - newLine(buffer,indentLevel + 1); - pstructure->toString(buffer,indentLevel + 1); +std::ostream& StructureArray::dump(std::ostream& o) const +{ + o << format::indent() << getID() << std::endl; + { + format::indent_scope s(o); + o << *pstructure; + } + return o; } void StructureArray::serialize(ByteBuffer *buffer, SerializableControl *control) const { @@ -327,15 +306,19 @@ UnionArray::~UnionArray() { if(debugLevel==highDebug) printf("~UnionArray\n"); } -String UnionArray::getID() const +string UnionArray::getID() const { return punion->getID() + "[]"; } -void UnionArray::toString(StringBuilder buffer,int indentLevel) const { - *buffer += getID(); - newLine(buffer,indentLevel + 1); - punion->toString(buffer,indentLevel + 1); +std::ostream& UnionArray::dump(std::ostream& o) const +{ + o << format::indent() << getID() << std::endl; + { + format::indent_scope s(o); + o << *punion; + } + return o; } void UnionArray::serialize(ByteBuffer *buffer, SerializableControl *control) const { @@ -356,12 +339,12 @@ void UnionArray::deserialize(ByteBuffer* /*buffer*/, DeserializableControl* /*co throw std::runtime_error("not valid operation, use FieldCreate::deserialize instead"); } -String Structure::DEFAULT_ID = "structure"; +string Structure::DEFAULT_ID = "structure"; Structure::Structure ( StringArray const & fieldNames, FieldConstPtrArray const & infields, - String const & inid) + string const & inid) : Field(structure), fieldNames(fieldNames), fields(infields), @@ -375,7 +358,7 @@ Structure::Structure ( } size_t number = fields.size(); for(size_t i=0; igetID() + " " + fieldNames[i]; + o << format::indent() << pfield->getID() << ' ' << fieldNames[i] << std::endl; switch(pfield->getType()) { case scalar: case scalarArray: @@ -441,26 +429,31 @@ void Structure::toStringCommon(StringBuilder buffer,int indentLevel) const{ { Field const *xxx = pfield.get(); Structure const *pstruct = static_cast(xxx); - pstruct->toStringCommon(buffer,indentLevel + 1); + format::indent_scope s(o); + pstruct->dumpFields(o); break; } case structureArray: - newLine(buffer,indentLevel +1); - pfield->toString(buffer,indentLevel +1); + { + format::indent_scope s(o); + o << *pfield; break; + } case union_: { Field const *xxx = pfield.get(); - Union const *pstruct = static_cast(xxx); - pstruct->toStringCommon(buffer,indentLevel + 1); + Union const *punion = static_cast(xxx); + format::indent_scope s(o); + punion->dumpFields(o); break; } case unionArray: - newLine(buffer,indentLevel +1); - pfield->toString(buffer,indentLevel +1); + { + format::indent_scope s(o); + o << *pfield; break; + } } - if(igetID() + " " + fieldNames[i]; + o << format::indent() << pfield->getID() << ' ' << fieldNames[i] << std::endl; switch(pfield->getType()) { case scalar: case scalarArray: @@ -578,26 +574,31 @@ void Union::toStringCommon(StringBuilder buffer,int indentLevel) const{ { Field const *xxx = pfield.get(); Structure const *pstruct = static_cast(xxx); - pstruct->toStringCommon(buffer,indentLevel + 1); + format::indent_scope s(o); + pstruct->dumpFields(o); break; } case structureArray: - newLine(buffer,indentLevel +1); - pfield->toString(buffer,indentLevel +1); + { + format::indent_scope s(o); + o << *pfield; break; + } case union_: { Field const *xxx = pfield.get(); - Union const *pstruct = static_cast(xxx); - pstruct->toStringCommon(buffer,indentLevel + 1); + Union const *punion = static_cast(xxx); + format::indent_scope s(o); + punion->dumpFields(o); break; } case unionArray: - newLine(buffer,indentLevel +1); - pfield->toString(buffer,indentLevel +1); + { + format::indent_scope s(o); + o << *pfield; break; + } } - if(iid = id; idSet = true; return shared_from_this(); } -FieldBuilderPtr FieldBuilder::add(std::string const & name, ScalarType scalarType) +FieldBuilderPtr FieldBuilder::add(string const & name, ScalarType scalarType) { fields.push_back(fieldCreate->createScalar(scalarType)); fieldNames.push_back(name); return shared_from_this(); } -FieldBuilderPtr FieldBuilder::add(std::string const & name, FieldConstPtr const & field) +FieldBuilderPtr FieldBuilder::add(string const & name, FieldConstPtr const & field) { fields.push_back(field); fieldNames.push_back(name); return shared_from_this(); } -FieldBuilderPtr FieldBuilder::addArray(std::string const & name, ScalarType scalarType) +FieldBuilderPtr FieldBuilder::addArray(string const & name, ScalarType scalarType) { fields.push_back(fieldCreate->createScalarArray(scalarType)); fieldNames.push_back(name); return shared_from_this(); } -FieldBuilderPtr FieldBuilder::addArray(std::string const & name, FieldConstPtr const & element) +FieldBuilderPtr FieldBuilder::addArray(string const & name, FieldConstPtr const & element) { switch (element->getType()) { @@ -730,24 +731,24 @@ UnionConstPtr FieldBuilder::createUnion() return field; } -FieldBuilderPtr FieldBuilder::addNestedStructure(std::string const & name) +FieldBuilderPtr FieldBuilder::addNestedStructure(string const & name) { return FieldBuilderPtr(new FieldBuilder(shared_from_this(), name, structure, false)); } -FieldBuilderPtr FieldBuilder::addNestedUnion(std::string const & name) +FieldBuilderPtr FieldBuilder::addNestedUnion(string const & name) { return FieldBuilderPtr(new FieldBuilder(shared_from_this(), name, union_, false)); } -FieldBuilderPtr FieldBuilder::addNestedStructureArray(std::string const & name) +FieldBuilderPtr FieldBuilder::addNestedStructureArray(string const & name) { return FieldBuilderPtr(new FieldBuilder(shared_from_this(), name, structure, true)); } -FieldBuilderPtr FieldBuilder::addNestedUnionArray(std::string const & name) +FieldBuilderPtr FieldBuilder::addNestedUnionArray(string const & name) { return FieldBuilderPtr(new FieldBuilder(shared_from_this(), name, union_, true)); } @@ -804,7 +805,7 @@ StructureConstPtr FieldCreate::createStructure ( } StructureConstPtr FieldCreate::createStructure ( - String const & id, + string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const { @@ -830,7 +831,7 @@ UnionConstPtr FieldCreate::createUnion ( } UnionConstPtr FieldCreate::createUnion ( - String const & id, + string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const { @@ -859,7 +860,7 @@ UnionArrayConstPtr FieldCreate::createVariantUnionArray () const StructureConstPtr FieldCreate::appendField( StructureConstPtr const & structure, - String const & fieldName, + string const & fieldName, FieldConstPtr const & field) const { StringArray oldNames = structure->getFieldNames(); diff --git a/src/factory/PVDataCreateFactory.cpp b/src/factory/PVDataCreateFactory.cpp index bc4c8a2..bcd1bad 100644 --- a/src/factory/PVDataCreateFactory.cpp +++ b/src/factory/PVDataCreateFactory.cpp @@ -27,6 +27,7 @@ using std::tr1::static_pointer_cast; using std::size_t; +using std::string; using std::min; namespace epics { namespace pvData { @@ -43,7 +44,7 @@ template<> const ScalarType PVUInt::typeCode = pvUInt; template<> const ScalarType PVULong::typeCode = pvULong; template<> const ScalarType PVFloat::typeCode = pvFloat; template<> const ScalarType PVDouble::typeCode = pvDouble; -template<> const ScalarType PVScalarValue::typeCode = pvString; +template<> const ScalarType PVScalarValue::typeCode = pvString; template<> const ScalarType PVBooleanArray::typeCode = pvBoolean; template<> const ScalarType PVByteArray::typeCode = pvByte; @@ -83,7 +84,7 @@ template BasePVScalar::BasePVScalar(ScalarConstPtr const & scalar) : PVScalarValue(scalar),value(0) {} -//Note: '0' is a suitable default for all POD types (not String) +//Note: '0' is a suitable default for all POD types (not string) template BasePVScalar::~BasePVScalar() {} @@ -128,14 +129,14 @@ typedef BasePVScalar BasePVDouble; // BasePVString is special case, since it implements SerializableArray class BasePVString : public PVString { public: - typedef String value_type; - typedef String* pointer; - typedef const String* const_pointer; + typedef string value_type; + typedef string* pointer; + typedef const string* const_pointer; BasePVString(ScalarConstPtr const & scalar); virtual ~BasePVString(); - virtual String get() const ; - virtual void put(String val); + virtual string get() const ; + virtual void put(string val); virtual void serialize(ByteBuffer *pbuffer, SerializableControl *pflusher) const; virtual void deserialize(ByteBuffer *pbuffer, @@ -143,7 +144,7 @@ public: virtual void serialize(ByteBuffer *pbuffer, SerializableControl *pflusher, size_t offset, size_t count) const; private: - String value; + string value; }; BasePVString::BasePVString(ScalarConstPtr const & scalar) @@ -152,9 +153,9 @@ BasePVString::BasePVString(ScalarConstPtr const & scalar) BasePVString::~BasePVString() {} -String BasePVString::get() const { return value;} +string BasePVString::get() const { return value;} -void BasePVString::put(String val) +void BasePVString::put(string val) { value = val; postPut(); @@ -362,10 +363,10 @@ void DefaultPVArray::serialize(ByteBuffer *pbuffer, } } -// specializations for String +// specializations for string template<> -void DefaultPVArray::deserialize(ByteBuffer *pbuffer, +void DefaultPVArray::deserialize(ByteBuffer *pbuffer, DeserializableControl *pcontrol) { size_t size = SerializeHelper::readSize(pbuffer, pcontrol); @@ -378,7 +379,7 @@ void DefaultPVArray::deserialize(ByteBuffer *pbuffer, nextvalue.slice(0, size); - String * pvalue = nextvalue.data(); + string * pvalue = nextvalue.data(); for(size_t i = 0; i::deserialize(ByteBuffer *pbuffer, } template<> -void DefaultPVArray::serialize(ByteBuffer *pbuffer, +void DefaultPVArray::serialize(ByteBuffer *pbuffer, SerializableControl *pflusher, size_t offset, size_t count) const { const_svector temp(value); @@ -397,7 +398,7 @@ void DefaultPVArray::serialize(ByteBuffer *pbuffer, SerializeHelper::writeSize(temp.size(), pbuffer, pflusher); - const String * pvalue = temp.data(); + const string * pvalue = temp.data(); for(size_t i = 0; i BasePVUIntArray; typedef DefaultPVArray BasePVULongArray; typedef DefaultPVArray BasePVFloatArray; typedef DefaultPVArray BasePVDoubleArray; -typedef DefaultPVArray BasePVStringArray; +typedef DefaultPVArray BasePVStringArray; // Factory diff --git a/src/factory/PVField.cpp b/src/factory/PVField.cpp index 8a342df..fe6ed82 100644 --- a/src/factory/PVField.cpp +++ b/src/factory/PVField.cpp @@ -20,10 +20,10 @@ using std::tr1::const_pointer_cast; using std::size_t; +using std::string; namespace epics { namespace pvData { - PVField::PVField(FieldConstPtr field) : notImplemented("not implemented"), parent(NULL),field(field), @@ -79,7 +79,7 @@ void PVField::setPostHandler(PostHandlerPtr const &handler) postHandler = handler; } -void PVField::setParentAndName(PVStructure * xxx,String const & name) +void PVField::setParentAndName(PVStructure * xxx,string const & name) { parent = xxx; fieldName = name; @@ -90,46 +90,14 @@ bool PVField::equals(PVField &pv) return pv==*this; } -void PVField::toString(StringBuilder buf) -{ - toString(buf,0); -} - -void PVField::toString(StringBuilder buf,int indentLevel) -{ - Convert().getString(buf,this,indentLevel); -} - std::ostream& operator<<(std::ostream& o, const PVField& f) { - std::ostream& ro = f.dumpValue(o); - return ro; + return f.dumpValue(o); }; -namespace format +string PVField::getFullName() const { - std::ostream& operator<<(std::ostream& os, indent_level const& indent) - { - indent_value(os) = indent.level; - return os; - } - - std::ostream& operator<<(std::ostream& os, indent const&) - { - long il = indent_value(os); - std::size_t spaces = static_cast(il) * 4; - return os << std::string(spaces, ' '); - } - - array_at_internal operator<<(std::ostream& str, array_at const& manip) - { - return array_at_internal(manip.index, str); - } -}; - -String PVField::getFullName() const -{ - String ret(fieldName); + string ret(fieldName); for(PVField *fld=getParent(); fld; fld=fld->getParent()) { if(fld->getFieldName().size()==0) break; diff --git a/src/factory/PVStructure.cpp b/src/factory/PVStructure.cpp index 6ed658b..c08195a 100644 --- a/src/factory/PVStructure.cpp +++ b/src/factory/PVStructure.cpp @@ -22,6 +22,7 @@ using std::tr1::static_pointer_cast; using std::size_t; +using std::string; namespace epics { namespace pvData { @@ -45,7 +46,7 @@ PVUnionArrayPtr PVStructure::nullPVUnionArray; PVScalarArrayPtr PVStructure::nullPVScalarArray; static PVFieldPtr findSubField( - String const &fieldName, + string const &fieldName, const PVStructure *pvStructure); PVStructure::PVStructure(StructureConstPtr const & structurePtr) @@ -109,7 +110,7 @@ const PVFieldPtrArray & PVStructure::getPVFields() const return pvFields; } -PVFieldPtr PVStructure::getSubField(String const &fieldName) const +PVFieldPtr PVStructure::getSubField(string const &fieldName) const { return findSubField(fieldName,this); } @@ -135,78 +136,78 @@ PVFieldPtr PVStructure::getSubField(size_t fieldOffset) const } -PVBooleanPtr PVStructure::getBooleanField(String const &fieldName) +PVBooleanPtr PVStructure::getBooleanField(string const &fieldName) { return getSubField(fieldName); } -PVBytePtr PVStructure::getByteField(String const &fieldName) +PVBytePtr PVStructure::getByteField(string const &fieldName) { return getSubField(fieldName); } -PVShortPtr PVStructure::getShortField(String const &fieldName) +PVShortPtr PVStructure::getShortField(string const &fieldName) { return getSubField(fieldName); } -PVIntPtr PVStructure::getIntField(String const &fieldName) +PVIntPtr PVStructure::getIntField(string const &fieldName) { return getSubField(fieldName); } -PVLongPtr PVStructure::getLongField(String const &fieldName) +PVLongPtr PVStructure::getLongField(string const &fieldName) { return getSubField(fieldName); } -PVUBytePtr PVStructure::getUByteField(String const &fieldName) +PVUBytePtr PVStructure::getUByteField(string const &fieldName) { return getSubField(fieldName); } -PVUShortPtr PVStructure::getUShortField(String const &fieldName) +PVUShortPtr PVStructure::getUShortField(string const &fieldName) { return getSubField(fieldName); } -PVUIntPtr PVStructure::getUIntField(String const &fieldName) +PVUIntPtr PVStructure::getUIntField(string const &fieldName) { return getSubField(fieldName); } -PVULongPtr PVStructure::getULongField(String const &fieldName) +PVULongPtr PVStructure::getULongField(string const &fieldName) { return getSubField(fieldName); } -PVFloatPtr PVStructure::getFloatField(String const &fieldName) +PVFloatPtr PVStructure::getFloatField(string const &fieldName) { return getSubField(fieldName); } -PVDoublePtr PVStructure::getDoubleField(String const &fieldName) +PVDoublePtr PVStructure::getDoubleField(string const &fieldName) { return getSubField(fieldName); } -PVStringPtr PVStructure::getStringField(String const &fieldName) +PVStringPtr PVStructure::getStringField(string const &fieldName) { return getSubField(fieldName); } -PVStructurePtr PVStructure::getStructureField(String const &fieldName) +PVStructurePtr PVStructure::getStructureField(string const &fieldName) { return getSubField(fieldName); } -PVUnionPtr PVStructure::getUnionField(String const &fieldName) +PVUnionPtr PVStructure::getUnionField(string const &fieldName) { return getSubField(fieldName); } PVScalarArrayPtr PVStructure::getScalarArrayField( - String const &fieldName,ScalarType elementType) + string const &fieldName,ScalarType elementType) { PVFieldPtr pvField = findSubField(fieldName,this); if(pvField.get()==NULL) { @@ -226,13 +227,13 @@ PVScalarArrayPtr PVStructure::getScalarArrayField( } PVStructureArrayPtr PVStructure::getStructureArrayField( - String const &fieldName) + string const &fieldName) { return getSubField(fieldName); } PVUnionArrayPtr PVStructure::getUnionArrayField( - String const &fieldName) + string const &fieldName) { return getSubField(fieldName); } @@ -328,13 +329,13 @@ void PVStructure::deserialize(ByteBuffer *pbuffer, } static PVFieldPtr findSubField( - String const & fieldName, + string const & fieldName, PVStructure const *pvStructure) { if( fieldName.length()<1) return PVFieldPtr(); - String::size_type index = fieldName.find('.'); - String name = fieldName; - String restOfName = String(); + string::size_type index = fieldName.find('.'); + string name = fieldName; + string restOfName = string(); if(index>0) { name = fieldName.substr(0, index); if(fieldName.length()>index) { diff --git a/src/factory/PVUnion.cpp b/src/factory/PVUnion.cpp index 2c9cadf..65111eb 100644 --- a/src/factory/PVUnion.cpp +++ b/src/factory/PVUnion.cpp @@ -22,6 +22,7 @@ using std::tr1::static_pointer_cast; using std::size_t; +using std::string; namespace epics { namespace pvData { @@ -58,11 +59,11 @@ int32 PVUnion::getSelectedIndex() const return selector; } -String PVUnion::getSelectedFieldName() const +string PVUnion::getSelectedFieldName() const { // no name for undefined and for variant unions if (selector == UNDEFINED_INDEX) - return String(); + return string(); else return unionPtr->getFieldName(selector); } @@ -91,7 +92,7 @@ PVFieldPtr PVUnion::select(int32 index) return value; } -PVFieldPtr PVUnion::select(String const & fieldName) +PVFieldPtr PVUnion::select(string const & fieldName) { int32 index = variant ? -1 : static_cast(unionPtr->getFieldIndex(fieldName)); if (index == -1) @@ -129,7 +130,7 @@ void PVUnion::set(int32 index, PVFieldPtr const & value) postPut(); } -void PVUnion::set(String const & fieldName, PVFieldPtr const & value) +void PVUnion::set(string const & fieldName, PVFieldPtr const & value) { int32 index = variant ? -1 : static_cast(unionPtr->getFieldIndex(fieldName)); if (index == -1) diff --git a/src/factory/StandardField.cpp b/src/factory/StandardField.cpp index 6398f9a..91e4d42 100644 --- a/src/factory/StandardField.cpp +++ b/src/factory/StandardField.cpp @@ -17,6 +17,7 @@ #include using std::tr1::static_pointer_cast; +using std::string; namespace epics { namespace pvData { @@ -49,7 +50,7 @@ void StandardField::init() StandardField::~StandardField(){} -StructureConstPtr StandardField::createProperties(String id,FieldConstPtr field,String properties) +StructureConstPtr StandardField::createProperties(string id,FieldConstPtr field,string properties) { bool gotAlarm = false; bool gotTimeStamp = false; @@ -57,11 +58,11 @@ StructureConstPtr StandardField::createProperties(String id,FieldConstPtr field, bool gotControl = false; bool gotValueAlarm = false; int numProp = 0; - if(properties.find("alarm")!=String::npos) { gotAlarm = true; numProp++; } - if(properties.find("timeStamp")!=String::npos) { gotTimeStamp = true; numProp++; } - if(properties.find("display")!=String::npos) { gotDisplay = true; numProp++; } - if(properties.find("control")!=String::npos) { gotControl = true; numProp++; } - if(properties.find("valueAlarm")!=String::npos) { gotValueAlarm = true; numProp++; } + if(properties.find("alarm")!=string::npos) { gotAlarm = true; numProp++; } + if(properties.find("timeStamp")!=string::npos) { gotTimeStamp = true; numProp++; } + if(properties.find("display")!=string::npos) { gotDisplay = true; numProp++; } + if(properties.find("control")!=string::npos) { gotControl = true; numProp++; } + if(properties.find("valueAlarm")!=string::npos) { gotValueAlarm = true; numProp++; } StructureConstPtr valueAlarm; Type type= field->getType(); while(gotValueAlarm) { @@ -82,7 +83,7 @@ StructureConstPtr StandardField::createProperties(String id,FieldConstPtr field, case pvFloat: valueAlarm = floatAlarmField; break; case pvDouble: valueAlarm = doubleAlarmField; break; case pvString: - throw std::logic_error(String("valueAlarm property not supported for pvString")); + throw std::logic_error(string("valueAlarm property not supported for pvString")); } break; } @@ -93,8 +94,8 @@ StructureConstPtr StandardField::createProperties(String id,FieldConstPtr field, FieldConstPtrArray fields = structurePtr->getFields(); FieldConstPtr first = fields[0]; FieldConstPtr second = fields[1]; - String nameFirst = names[0]; - String nameSecond = names[1]; + string nameFirst = names[0]; + string nameSecond = names[1]; int compareFirst = nameFirst.compare("index"); int compareSecond = nameSecond.compare("choices"); if(compareFirst==0 && compareSecond==0) { @@ -112,7 +113,7 @@ StructureConstPtr StandardField::createProperties(String id,FieldConstPtr field, } } } - throw std::logic_error(String("valueAlarm property for illegal type")); + throw std::logic_error(string("valueAlarm property for illegal type")); } size_t numFields = numProp+1; FieldConstPtrArray fields(numFields); @@ -499,7 +500,7 @@ void StandardField::createEnumeratedAlarm() { StructureConstPtr StandardField::scalar( - ScalarType type,String const &properties) + ScalarType type,string const &properties) { ScalarConstPtr field = fieldCreate->createScalar(type); // scalar_t return createProperties("uri:ev4:nt/2012/pwd:NTScalar",field,properties); @@ -507,20 +508,20 @@ StructureConstPtr StandardField::scalar( StructureConstPtr StandardField::regUnion( UnionConstPtr const &field, - String const & properties) + string const & properties) { return createProperties("uri:ev4:nt/2012/pwd:NTUnion",field,properties); } StructureConstPtr StandardField::variantUnion( - String const & properties) + string const & properties) { UnionConstPtr field = fieldCreate->createVariantUnion(); return createProperties("uri:ev4:nt/2012/pwd:NTUnion",field,properties); } StructureConstPtr StandardField::scalarArray( - ScalarType elementType, String const &properties) + ScalarType elementType, string const &properties) { ScalarArrayConstPtr field = fieldCreate->createScalarArray(elementType); // scalar_t[] return createProperties("uri:ev4:nt/2012/pwd:NTScalarArray",field,properties); @@ -528,7 +529,7 @@ StructureConstPtr StandardField::scalarArray( StructureConstPtr StandardField::structureArray( - StructureConstPtr const & structure,String const &properties) + StructureConstPtr const & structure,string const &properties) { StructureArrayConstPtr field = fieldCreate->createStructureArray( structure); @@ -536,7 +537,7 @@ StructureConstPtr StandardField::structureArray( } StructureConstPtr StandardField::unionArray( - UnionConstPtr const & punion,String const &properties) + UnionConstPtr const & punion,string const &properties) { UnionArrayConstPtr field = fieldCreate->createUnionArray( punion); @@ -556,7 +557,7 @@ StructureConstPtr StandardField::enumerated() // NOTE: if this method is used to get NTEnum wihtout properties the ID will be wrong! } -StructureConstPtr StandardField::enumerated(String const &properties) +StructureConstPtr StandardField::enumerated(string const &properties) { StructureConstPtr field = enumerated(); // enum_t return createProperties("uri:ev4:nt/2012/pwd:NTEnum",field,properties); diff --git a/src/factory/StandardPVField.cpp b/src/factory/StandardPVField.cpp index 26c0328..f5738d6 100644 --- a/src/factory/StandardPVField.cpp +++ b/src/factory/StandardPVField.cpp @@ -18,6 +18,8 @@ #include #include +using std::string; + namespace epics { namespace pvData { StandardPVField::StandardPVField() @@ -30,7 +32,7 @@ StandardPVField::StandardPVField() StandardPVField::~StandardPVField(){} PVStructurePtr StandardPVField::scalar( - ScalarType type,String const & properties) + ScalarType type,string const & properties) { StructureConstPtr field = standardField->scalar(type,properties); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(field); @@ -38,7 +40,7 @@ PVStructurePtr StandardPVField::scalar( } PVStructurePtr StandardPVField::scalarArray( - ScalarType elementType, String const & properties) + ScalarType elementType, string const & properties) { StructureConstPtr field = standardField->scalarArray(elementType,properties); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(field); @@ -46,7 +48,7 @@ PVStructurePtr StandardPVField::scalarArray( } PVStructurePtr StandardPVField::structureArray( - StructureConstPtr const & structure,String const & properties) + StructureConstPtr const & structure,string const & properties) { StructureConstPtr field = standardField->structureArray(structure,properties); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(field); @@ -54,7 +56,7 @@ PVStructurePtr StandardPVField::structureArray( } PVStructurePtr StandardPVField::unionArray( - UnionConstPtr const & punion,String const & properties) + UnionConstPtr const & punion,string const & properties) { StructureConstPtr field = standardField->unionArray(punion,properties); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(field); @@ -74,7 +76,7 @@ PVStructurePtr StandardPVField::enumerated(StringArray const &choices) } PVStructurePtr StandardPVField::enumerated( - StringArray const &choices,String const & properties) + StringArray const &choices,string const & properties) { StructureConstPtr field = standardField->enumerated(properties); PVStructurePtr pvStructure = pvDataCreate->createPVStructure(field); diff --git a/src/factory/TypeFunc.cpp b/src/factory/TypeFunc.cpp index b593106..2e0a125 100644 --- a/src/factory/TypeFunc.cpp +++ b/src/factory/TypeFunc.cpp @@ -19,6 +19,8 @@ #include "dbDefs.h" // for NELEMENTS +using std::string; + namespace epics { namespace pvData { namespace TypeFunc { @@ -30,11 +32,13 @@ namespace TypeFunc { THROW_EXCEPTION2(std::invalid_argument, "logic error unknown Type"); return names[t]; } - void toString(StringBuilder buf,const Type type) { - *buf += name(type); - } } // namespace TypeFunc +std::ostream& operator<<(std::ostream& o, const Type& type) +{ + return o << TypeFunc::name(type); +} + namespace ScalarTypeFunc { bool isInteger(ScalarType type) { @@ -63,7 +67,7 @@ namespace ScalarTypeFunc { "ubyte", "ushort", "uint", "ulong", "float", "double", "string", }; - ScalarType getScalarType(const String& pvalue) { + ScalarType getScalarType(const string& pvalue) { for(size_t i=0; i +using std::string; + namespace { void indentN(std::ostream& strm, size_t N) @@ -22,6 +24,27 @@ void indentN(std::ostream& strm, size_t N) namespace epics { namespace pvData { +namespace format +{ + std::ostream& operator<<(std::ostream& os, indent_level const& indent) + { + indent_value(os) = indent.level; + return os; + } + + std::ostream& operator<<(std::ostream& os, indent const&) + { + long il = indent_value(os); + std::size_t spaces = static_cast(il) * 4; + return os << string(spaces, ' '); + } + + array_at_internal operator<<(std::ostream& str, array_at const& manip) + { + return array_at_internal(manip.index, str); + } +}; + PrinterBase::PrinterBase() :strm(NULL) {} @@ -239,14 +262,14 @@ void PrinterPlain::encodeScalar(const PVScalar& pv) indentN(S(), ilvl); S() << pv.getScalar()->getID() << " " << pv.getFieldName() << " " - << pv.getAs() << std::endl; + << pv.getAs() << std::endl; } void PrinterPlain::encodeArray(const PVScalarArray& pv) { indentN(S(), ilvl); - shared_vector temp; - pv.getAs(temp); + shared_vector temp; + pv.getAs(temp); S() << pv.getScalarArray()->getID() << " " << pv.getFieldName() << " ["; diff --git a/src/factory/pvSubArrayCopy.cpp b/src/factory/pvSubArrayCopy.cpp index 45d57ba..e030488 100644 --- a/src/factory/pvSubArrayCopy.cpp +++ b/src/factory/pvSubArrayCopy.cpp @@ -14,9 +14,11 @@ #define epicsExportSharedSymbols #include -namespace epics { namespace pvData { using std::cout; using std::endl; +using std::string; + +namespace epics { namespace pvData { template void copy( @@ -141,8 +143,8 @@ void copy( break; case pvString: { - copy(dynamic_cast &>(from),fromOffset,fromStride, - dynamic_cast& >(to), + copy(dynamic_cast &>(from),fromOffset,fromStride, + dynamic_cast& >(to), toOffset,toStride,count); } break; diff --git a/src/misc/bitSet.cpp b/src/misc/bitSet.cpp index 31d6414..2da4fd8 100644 --- a/src/misc/bitSet.cpp +++ b/src/misc/bitSet.cpp @@ -309,21 +309,6 @@ namespace epics { namespace pvData { return !(*this == set); } - void BitSet::toString(StringBuilder buffer, int /*indentLevel*/) const - { - *buffer += '{'; - int32 i = nextSetBit(0); - char tmp[30]; - if (i != -1) { - sprintf(tmp,"%d",(int)i); *buffer += tmp; - for (i = nextSetBit(i+1); i >= 0; i = nextSetBit(i+1)) { - int32 endOfRun = nextClearBit(i); - do { *buffer += ", "; sprintf(tmp,"%d",(int)i); *buffer += tmp; } while (++i < endOfRun); - } - } - *buffer += '}'; - } - void BitSet::serialize(ByteBuffer* buffer, SerializableControl* flusher) const { uint32 n = wordsInUse; diff --git a/src/misc/bitSet.h b/src/misc/bitSet.h index be6f231..df9bb5d 100644 --- a/src/misc/bitSet.h +++ b/src/misc/bitSet.h @@ -225,8 +225,6 @@ namespace epics { namespace pvData { bool operator!=(const BitSet &set) const; - void toString(StringBuilder buffer, int indentLevel = 0) const; - virtual void serialize(ByteBuffer *buffer, SerializableControl *flusher) const; virtual void deserialize(ByteBuffer *buffer, diff --git a/src/misc/epicsException.cpp b/src/misc/epicsException.cpp index 534f6f9..48f59b8 100644 --- a/src/misc/epicsException.cpp +++ b/src/misc/epicsException.cpp @@ -10,10 +10,12 @@ #include #include #include +#include #define epicsExportSharedSymbols #include +using std::string; namespace epics{ namespace pvData { @@ -32,7 +34,7 @@ ExceptionMixin::print(FILE *fp) const #endif } -std::string +string ExceptionMixin::show() const { std::ostringstream out; @@ -62,7 +64,7 @@ BaseException::what() const throw() try{ if (base_msg.size()==0) { const char *base=std::logic_error::what(); - std::string out, stack; + string out, stack; const ExceptionMixin *info=dynamic_cast(this); if(info) { diff --git a/src/misc/event.cpp b/src/misc/event.cpp index a7f829f..1a898ce 100644 --- a/src/misc/event.cpp +++ b/src/misc/event.cpp @@ -26,6 +26,8 @@ #include #include +using std::string; + namespace epics { namespace pvData { @@ -43,27 +45,27 @@ Event::Event(bool full) void Event::signal() { - if(id==0) throw std::logic_error(String("event was deleted")); + if(id==0) throw std::logic_error(string("event was deleted")); epicsEventSignal(id); } bool Event::wait () { - if(id==0) throw std::logic_error(String("event was deleted")); + if(id==0) throw std::logic_error(string("event was deleted")); epicsEventWaitStatus status = epicsEventWait(id); return status==epicsEventWaitOK ? true : false; } bool Event::wait ( double timeOut ) { - if(id==0) throw std::logic_error(String("event was deleted")); + if(id==0) throw std::logic_error(string("event was deleted")); epicsEventWaitStatus status = epicsEventWaitWithTimeout(id,timeOut); return status==epicsEventWaitOK ? true : false; } bool Event::tryWait () { - if(id==0) throw std::logic_error(String("event was deleted")); + if(id==0) throw std::logic_error(string("event was deleted")); epicsEventWaitStatus status = epicsEventTryWait(id); return status==epicsEventWaitOK ? true : false; } diff --git a/src/misc/event.h b/src/misc/event.h index 82e5dce..2517662 100644 --- a/src/misc/event.h +++ b/src/misc/event.h @@ -46,7 +46,7 @@ public: bool tryWait (); /* false if empty */ private: epicsEventId id; - String alreadyOn; + std::string alreadyOn; }; }} diff --git a/src/misc/executor.cpp b/src/misc/executor.cpp index ebb43ed..3dbf207 100644 --- a/src/misc/executor.cpp +++ b/src/misc/executor.cpp @@ -16,6 +16,8 @@ #define epicsExportSharedSymbols #include +using std::string; + namespace epics { namespace pvData { // special instance to stop the executor thread @@ -31,7 +33,7 @@ static std::tr1::shared_ptr shutdown(new ExecutorShutdown()); -Executor::Executor(String threadName,ThreadPriority priority) +Executor::Executor(string const & threadName,ThreadPriority priority) : thread(threadName,priority,this) { } diff --git a/src/misc/executor.h b/src/misc/executor.h index 65ee07d..5a0a3f2 100644 --- a/src/misc/executor.h +++ b/src/misc/executor.h @@ -40,7 +40,7 @@ private: class epicsShareClass Executor : public Runnable{ public: POINTER_DEFINITIONS(Executor); - Executor(String threadName,ThreadPriority priority); + Executor(std::string const & threadName,ThreadPriority priority); ~Executor(); void execute(CommandPtr const &node); virtual void run(); diff --git a/src/misc/messageQueue.cpp b/src/misc/messageQueue.cpp index 937edc8..65c0f59 100644 --- a/src/misc/messageQueue.cpp +++ b/src/misc/messageQueue.cpp @@ -12,13 +12,15 @@ #define epicsExportSharedSymbols #include +using std::string; + namespace epics { namespace pvData { MessageNode::MessageNode() : messageType(infoMessage) {} -String MessageNode::getMessage() const +string MessageNode::getMessage() const { return message; } @@ -59,7 +61,7 @@ void MessageQueue::release() { releaseUsed(lastGet); lastGet.reset(); } -bool MessageQueue::put(String message,MessageType messageType,bool replaceLast) +bool MessageQueue::put(string message,MessageType messageType,bool replaceLast) { MessageNodePtr node = getFree(); if(node.get()!= NULL) { diff --git a/src/misc/messageQueue.h b/src/misc/messageQueue.h index bdec377..b29ff3c 100644 --- a/src/misc/messageQueue.h +++ b/src/misc/messageQueue.h @@ -31,10 +31,10 @@ typedef std::tr1::shared_ptr MessageQueuePtr; class epicsShareClass MessageNode { public: MessageNode(); - String getMessage() const; + std::string getMessage() const; MessageType getMessageType() const; private: - String message; + std::string message; MessageType messageType; friend class MessageQueue; }; @@ -49,7 +49,7 @@ public: // must call release before next get void release(); // return (false,true) if message (was not, was) put into queue - bool put(String message,MessageType messageType,bool replaceLast); + bool put(std::string message,MessageType messageType,bool replaceLast); bool isEmpty() ; bool isFull() ; int getClearOverrun(); diff --git a/src/misc/parseToPOD.cpp b/src/misc/parseToPOD.cpp index a21c4d5..26f391a 100644 --- a/src/misc/parseToPOD.cpp +++ b/src/misc/parseToPOD.cpp @@ -14,6 +14,8 @@ #define epicsExportSharedSymbols #include "typeCast.h" +using std::string; + // need to use "long long" when sizeof(int)==sizeof(long) #if (ULONG_MAX == 0xfffffffful) || defined(_WIN32) || defined(__rtems__) #define NEED_LONGLONG @@ -422,18 +424,18 @@ void handleParseError(int err) namespace epics { namespace pvData { namespace detail { -void parseToPOD(const std::string & in, boolean *out) +void parseToPOD(const string & in, boolean *out) { if(epicsStrCaseCmp(in.c_str(),"true")==0) *out = 1; else if(epicsStrCaseCmp(in.c_str(),"false")==0) *out = 0; else - throw std::runtime_error("parseToPOD: String no match true/false"); + throw std::runtime_error("parseToPOD: string no match true/false"); } #define INTFN(T, S) \ -void parseToPOD(const std::string& in, T *out) { \ +void parseToPOD(const string& in, T *out) { \ epics ## S temp; \ int err = epicsParse ## S (in.c_str(), &temp, 0, NULL); \ if(err) handleParseError(err); \ @@ -447,7 +449,7 @@ INTFN(uint16_t, UInt16); INTFN(int32_t, Int32); INTFN(uint32_t, UInt32); -void parseToPOD(const std::string& in, int64_t *out) { +void parseToPOD(const string& in, int64_t *out) { #ifdef NEED_LONGLONG int err = epicsParseLongLong(in.c_str(), out, 0, NULL); #else @@ -456,7 +458,7 @@ void parseToPOD(const std::string& in, int64_t *out) { if(err) handleParseError(err); } -void parseToPOD(const std::string& in, uint64_t *out) { +void parseToPOD(const string& in, uint64_t *out) { #ifdef NEED_LONGLONG int err = epicsParseULongLong(in.c_str(), out, 0, NULL); #else @@ -465,12 +467,12 @@ void parseToPOD(const std::string& in, uint64_t *out) { if(err) handleParseError(err); } -void parseToPOD(const std::string& in, float *out) { +void parseToPOD(const string& in, float *out) { int err = epicsParseFloat(in.c_str(), out, NULL); if(err) handleParseError(err); } -void parseToPOD(const std::string& in, double *out) { +void parseToPOD(const string& in, double *out) { int err = epicsParseDouble(in.c_str(), out, NULL); if(err) handleParseError(err); } diff --git a/src/misc/requester.cpp b/src/misc/requester.cpp index d975f34..58de21d 100644 --- a/src/misc/requester.cpp +++ b/src/misc/requester.cpp @@ -14,11 +14,13 @@ #include #include +using std::string; + namespace epics { namespace pvData { static StringArray messageTypeName(MESSAGE_TYPE_COUNT); -String getMessageTypeName(MessageType messageType) +string getMessageTypeName(MessageType messageType) { // TODO not thread-safe static Mutex mutex; diff --git a/src/misc/requester.h b/src/misc/requester.h index a7ddc40..7c2fc53 100644 --- a/src/misc/requester.h +++ b/src/misc/requester.h @@ -26,14 +26,14 @@ enum MessageType { }; #define MESSAGE_TYPE_COUNT 4 -epicsShareExtern String getMessageTypeName(MessageType messageType); +epicsShareExtern std::string getMessageTypeName(MessageType messageType); class epicsShareClass Requester { public: POINTER_DEFINITIONS(Requester); virtual ~Requester(){} - virtual String getRequesterName() = 0; - virtual void message(String const & message,MessageType messageType) = 0; + virtual std::string getRequesterName() = 0; + virtual void message(std::string const & message,MessageType messageType) = 0; }; }} diff --git a/src/misc/serializeHelper.cpp b/src/misc/serializeHelper.cpp index 9a28161..c575c3a 100644 --- a/src/misc/serializeHelper.cpp +++ b/src/misc/serializeHelper.cpp @@ -57,7 +57,7 @@ namespace epics { return (std::size_t)(b<0 ? b+256 : b); } - void SerializeHelper::serializeString(const String& value, + void SerializeHelper::serializeString(const string& value, ByteBuffer* buffer, SerializableControl* flusher) { std::size_t len = value.length(); SerializeHelper::writeSize(len, buffer, flusher); @@ -74,7 +74,7 @@ namespace epics { } } - void SerializeHelper::serializeSubstring(const String& value, + void SerializeHelper::serializeSubstring(const string& value, std::size_t offset, std::size_t count, ByteBuffer* buffer, SerializableControl* flusher) { /*if(offset<0) @@ -97,9 +97,9 @@ namespace epics { } } - static String emptyString; + static string emptyStringtring; - String SerializeHelper::deserializeString(ByteBuffer* buffer, + string SerializeHelper::deserializeString(ByteBuffer* buffer, DeserializableControl* control) { std::size_t size = SerializeHelper::readSize(buffer, control); @@ -109,13 +109,13 @@ namespace epics { { // entire string is in buffer, simply create a string out of it (copy) std::size_t pos = buffer->getPosition(); - String str(buffer->getArray()+pos, size); + string str(buffer->getArray()+pos, size); buffer->setPosition(pos+size); return str; } else { - String str; + string str; str.reserve(size); try { std::size_t i = 0; @@ -137,7 +137,7 @@ namespace epics { } } else - return emptyString; + return emptyStringtring; } } diff --git a/src/misc/serializeHelper.h b/src/misc/serializeHelper.h index 2f68b3b..f490b1d 100644 --- a/src/misc/serializeHelper.h +++ b/src/misc/serializeHelper.h @@ -46,30 +46,30 @@ namespace epics { DeserializableControl* control); /** - * String serialization helper method. + * std::string serialization helper method. * - * @param[in] value String to serialize + * @param[in] value std::string to serialize * @param[in] buffer serialization buffer * @param[in] flusher flusher */ - static void serializeString(const String& value, ByteBuffer* buffer, + static void serializeString(const std::string& value, ByteBuffer* buffer, SerializableControl* flusher); /** - * String serialization helper method. + * std::string serialization helper method. * - * @param[in] value String to serialize + * @param[in] value std::string to serialize * @param[in] offset start of the substring in {@code value} * @param[in] count the number of characters to write * @param[in] buffer serialization buffer * @param[in] flusher flusher */ - static void serializeSubstring(const String& value, std::size_t offset, + static void serializeSubstring(const std::string& value, std::size_t offset, std::size_t count, ByteBuffer* buffer, SerializableControl* flusher); /** - * String deserialization helper method. + * std::string deserialization helper method. * TODO This method cannot return "null", but Java implementation * could have serialized "null" value as well. We need to decide * how to deserialize "null". @@ -82,7 +82,7 @@ namespace epics { * could have serialized "null" value as well. We need to decide * how to deserialize "null". */ - static String deserializeString(ByteBuffer* buffer, + static std::string deserializeString(ByteBuffer* buffer, DeserializableControl* control); private: diff --git a/src/misc/status.cpp b/src/misc/status.cpp index e001533..4b9d7a7 100644 --- a/src/misc/status.cpp +++ b/src/misc/status.cpp @@ -12,10 +12,12 @@ #include #include +using std::string; + namespace epics { namespace pvData { const char* Status::StatusTypeName[] = { "OK", "WARNING", "ERROR", "FATAL" }; -epics::pvData::String Status::m_emptyString; +string Status::m_emptyStringtring; Status Status::Ok; @@ -26,7 +28,7 @@ Status::Status() : { } -Status::Status(StatusType type, String const & message) : +Status::Status(StatusType type, string const & message) : m_statusType(type), m_message(message) { if (type == STATUSTYPE_OK) @@ -35,7 +37,7 @@ Status::Status(StatusType type, String const & message) : //PVDATA_REFCOUNT_MONITOR_CONSTRUCT(status); } -Status::Status(StatusType type, String const & message, String const & stackDump) : +Status::Status(StatusType type, string const & message, string const & stackDump) : m_statusType(type), m_message(message), m_stackDump(stackDump) { if (type == STATUSTYPE_OK) @@ -54,12 +56,12 @@ Status::StatusType Status::getType() const } -epics::pvData::String Status::getMessage() const +string Status::getMessage() const { return m_message; } -epics::pvData::String Status::getStackDump() const +string Status::getStackDump() const { return m_stackDump; } @@ -100,7 +102,7 @@ void Status::deserialize(ByteBuffer *buffer, DeserializableControl *flusher) if (m_statusType != STATUSTYPE_OK) { m_statusType = STATUSTYPE_OK; - m_message = m_stackDump = m_emptyString; + m_message = m_stackDump = m_emptyStringtring; } } else @@ -111,29 +113,21 @@ void Status::deserialize(ByteBuffer *buffer, DeserializableControl *flusher) } } -String Status::toString() const +std::ostream& operator<<(std::ostream& o, const Status& status) { - String str; - toString(&str, 0); - return str; + o << "Status [type=" << Status::StatusTypeName[status.m_statusType]; + if (!status.m_message.empty()) + o << ", message=" << status.m_message; + if (!status.m_stackDump.empty()) + o << ", stackDump=" << std::endl << status.m_stackDump; + o << ']'; + return o; } -void Status::toString(StringBuilder buffer, int /*indentLevel*/) const +std::ostream& operator<<(std::ostream& o, const Status::StatusType& statusType) { - *buffer += "Status [type="; - *buffer += StatusTypeName[m_statusType]; - if (!m_message.empty()) - { - *buffer += ", message="; - *buffer += m_message; - } - if (!m_stackDump.empty()) - { - *buffer += ", stackDump="; - *buffer += '\n'; - *buffer += m_stackDump; - } - *buffer += ']'; + o << Status::StatusTypeName[statusType]; + return o; } }} diff --git a/src/misc/status.h b/src/misc/status.h index 852aa6e..45463ae 100644 --- a/src/misc/status.h +++ b/src/misc/status.h @@ -10,6 +10,8 @@ #ifndef STATUS_H #define STATUS_H +#include + #include #include #include @@ -51,12 +53,12 @@ namespace epics { namespace pvData { /** * Create non-OK status. */ - Status(StatusType type, epics::pvData::String const & message); + Status(StatusType type, std::string const & message); /** * Create non-OK status. */ - Status(StatusType type, epics::pvData::String const & message, epics::pvData::String const & stackDump); + Status(StatusType type, std::string const & message, std::string const & stackDump); ~Status(); @@ -70,13 +72,13 @@ namespace epics { namespace pvData { * Get error message describing an error. Required if error status. * @return error message. */ - epics::pvData::String getMessage() const; + std::string getMessage() const; /** * Get stack dump where error (exception) happened. Optional. * @return stack dump. */ - epics::pvData::String getStackDump() const; + std::string getStackDump() const; /** * Convenient OK test. Same as (getType() == StatusType.OK). @@ -93,20 +95,22 @@ namespace epics { namespace pvData { */ bool isSuccess() const; - String toString() const; - void toString(StringBuilder buffer, int indentLevel = 0) const; - void serialize(ByteBuffer *buffer, SerializableControl *flusher) const; void deserialize(ByteBuffer *buffer, DeserializableControl *flusher); private: - static epics::pvData::String m_emptyString; + static std::string m_emptyStringtring; StatusType m_statusType; - String m_message; - String m_stackDump; + std::string m_message; + std::string m_stackDump; + + friend std::ostream& operator<<(std::ostream& o, const Status& status); }; + epicsShareExtern std::ostream& operator<<(std::ostream& o, const Status& status); + epicsShareExtern std::ostream& operator<<(std::ostream& o, const Status::StatusType& statusType); + }} #endif /* STATUS_H */ diff --git a/src/misc/thread.h b/src/misc/thread.h index a4b9134..0f70447 100644 --- a/src/misc/thread.h +++ b/src/misc/thread.h @@ -50,7 +50,7 @@ typedef epicsThreadRunable Runnable; class epicsShareClass Thread : public epicsThread, private NoDefaultMethods { public: - Thread(String name, + Thread(std::string name, ThreadPriority priority, Runnable *runnable, epicsThreadStackSizeClass stkcls=epicsThreadStackSmall) @@ -63,7 +63,7 @@ public: } Thread(Runnable &runnable, - String name, + std::string name, unsigned int stksize, unsigned int priority=lowestPriority) :epicsThread(runnable, diff --git a/src/misc/timer.cpp b/src/misc/timer.cpp index bf40ac6..c187556 100644 --- a/src/misc/timer.cpp +++ b/src/misc/timer.cpp @@ -13,11 +13,14 @@ #endif #include +#include #define epicsExportSharedSymbols #include #include +using std::string; + namespace epics { namespace pvData { TimerCallback::TimerCallback() @@ -26,7 +29,7 @@ TimerCallback::TimerCallback() { } -Timer::Timer(String threadName,ThreadPriority priority) +Timer::Timer(string threadName,ThreadPriority priority) : waitForWork(false), waitForDone(false), alive(true), @@ -84,7 +87,7 @@ void Timer::cancel(TimerCallbackPtr const &timerCallback) prevNode = nextNode; nextNode = nextNode->next; } - throw std::logic_error(String("")); + throw std::logic_error(string("")); } bool Timer::isScheduled(TimerCallbackPtr const &timerCallback) @@ -169,7 +172,7 @@ void Timer::schedulePeriodic( double period) { if(isScheduled(timerCallback)) { - throw std::logic_error(String("already queued")); + throw std::logic_error(string("already queued")); } { Lock xx(mutex); @@ -193,23 +196,23 @@ void Timer::schedulePeriodic( if(isFirst) waitForWork.signal(); } -void Timer::toString(StringBuilder builder) +std::ostream& operator<<(std::ostream& o, Timer& timer) { - Lock xx(mutex); - if(!alive) return; + Lock xx(timer.mutex); + if(!timer.alive) return o; TimeStamp currentTime; - TimerCallbackPtr nodeToCall(head); + TimerCallbackPtr nodeToCall(timer.head); currentTime.getCurrent(); while(true) { - if(nodeToCall.get()==NULL) return; + if(nodeToCall.get()==NULL) return o; TimeStamp timeToRun = nodeToCall->timeToRun; double period = nodeToCall->period; double diff = TimeStamp::diff(timeToRun,currentTime); - char buffer[50]; - sprintf(buffer,"timeToRun %f period %f\n",diff,period); - *builder += buffer; + o << "timeToRun " << diff << " period " << period << std::endl; nodeToCall = nodeToCall->next; } + return o; } + }} diff --git a/src/misc/timer.h b/src/misc/timer.h index 072db74..0f8d2cf 100644 --- a/src/misc/timer.h +++ b/src/misc/timer.h @@ -45,12 +45,13 @@ private: double period; bool onList; friend class Timer; + friend std::ostream& operator<<(std::ostream& o, Timer& timer); }; class epicsShareClass Timer : public Runnable { public: POINTER_DEFINITIONS(Timer); - Timer(String threadName, ThreadPriority priority); + Timer(std::string threadName, ThreadPriority priority); virtual ~Timer(); virtual void run(); void scheduleAfterDelay( @@ -62,7 +63,9 @@ public: double period); void cancel(TimerCallbackPtr const &timerCallback); bool isScheduled(TimerCallbackPtr const &timerCallback); - void toString(StringBuilder builder); + + friend std::ostream& operator<<(std::ostream& o, Timer& timer); + private: void addElement(TimerCallbackPtr const &timerCallback); TimerCallbackPtr head; @@ -73,5 +76,7 @@ private: Thread thread; }; +epicsShareExtern std::ostream& operator<<(std::ostream& o, Timer& timer); + }} #endif /* TIMER_H */ diff --git a/src/misc/typeCast.cpp b/src/misc/typeCast.cpp index cdbb53d..a3aecbe 100644 --- a/src/misc/typeCast.cpp +++ b/src/misc/typeCast.cpp @@ -11,9 +11,9 @@ #include "typeCast.h" using epics::pvData::castUnsafe; -using epics::pvData::String; using epics::pvData::ScalarType; using epics::pvData::pvString; +using std::string; namespace { @@ -77,7 +77,7 @@ static convertfn converters[pvString+1][pvString+1] = &noconvert, &noconvert, &noconvert, - &castVTyped, + &castVTyped, }, // to pvByte {&noconvert, @@ -91,7 +91,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvShort {&noconvert, @@ -105,7 +105,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvInt {&noconvert, @@ -119,7 +119,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvLong {&noconvert, @@ -133,7 +133,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvUByte {&noconvert, @@ -147,7 +147,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvUShort {&noconvert, @@ -161,7 +161,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvUInt {&noconvert, @@ -175,7 +175,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvULong {&noconvert, @@ -189,7 +189,7 @@ static convertfn converters[pvString+1][pvString+1] = ©V, &castVTyped, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvFloat {&noconvert, @@ -203,7 +203,7 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, ©V, &castVTyped, - &castVTyped, + &castVTyped, }, // to pvDouble {&noconvert, @@ -217,21 +217,21 @@ static convertfn converters[pvString+1][pvString+1] = &castVTyped, &castVTyped, ©V, - &castVTyped, + &castVTyped, }, // to pvString - {&castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - &castVTyped, - ©V, + {&castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + &castVTyped, + ©V, }, }; diff --git a/src/misc/typeCast.h b/src/misc/typeCast.h index 32b485c..109b5c1 100644 --- a/src/misc/typeCast.h +++ b/src/misc/typeCast.h @@ -30,8 +30,6 @@ namespace epics { namespace pvData { -typedef std::string String; - namespace detail { // parseToPOD wraps the epicsParse*() functions in one name // and throws exceptions @@ -48,12 +46,12 @@ namespace detail { epicsShareExtern void parseToPOD(const std::string&, double *out); /* want to pass POD types by value, - * and String by const reference + * and std::string by const reference */ template struct cast_arg { typedef ARG arg; }; template<> - struct cast_arg { typedef const String& arg; }; + struct cast_arg { typedef const std::string& arg; }; // Handle mangling of type/value when printing template @@ -98,10 +96,10 @@ namespace detail { }; // print POD to string - // when String!=FROM + // when std::string!=FROM template - struct cast_helper::type> { - static String op(FROM from) { + struct cast_helper::type> { + static std::string op(FROM from) { std::ostringstream strm; strm << print_convolute::op(from); if(strm.fail()) @@ -111,10 +109,10 @@ namespace detail { }; // parse POD from string - // TO!=String + // TO!=std::string template - struct cast_helper::type> { - static FORCE_INLINE TO op(const String& from) { + struct cast_helper::type> { + static FORCE_INLINE TO op(const std::string& from) { TO ret; parseToPOD(from, &ret); return ret; @@ -127,7 +125,7 @@ namespace detail { * * Supported types: uint8_t, int8_t, uint16_t, int16_t, * uint32_t, int32_t, uint64_t, int64_t, - * float, double, String + * float, double, std::string * * As defined in pvType.h * @@ -153,9 +151,9 @@ namespace detail { * Conversions where invalid or out of range inputs result * in an exception. * - * - non-String -> String - * - String -> non-String - * - String -> String (throws only std::bad_alloc) + * - non-std::string -> std::string + * - std::string -> non-std::string + * - std::string -> std::string (throws only std::bad_alloc) * * Conversions where out of range inputs produce undefined * results. @@ -169,7 +167,7 @@ namespace detail { * too large to be represented by the integer type * is not defined. * - @section stringf String formats + @section stringf std::string formats * * - Numbers beginning with 1-9 are parsed as base-10. * - Numbers beginning with '0x' are parsed as base-16 diff --git a/src/monitor/monitorPlugin.cpp b/src/monitor/monitorPlugin.cpp index a8249b0..098e50d 100644 --- a/src/monitor/monitorPlugin.cpp +++ b/src/monitor/monitorPlugin.cpp @@ -12,10 +12,12 @@ #include -namespace epics { namespace pvData { +using std::string; using std::cout; using std::endl; +namespace epics { namespace pvData { + MonitorPluginManagerPtr MonitorPluginManager::get() { static MonitorPluginManagerPtr pluginManager; @@ -28,7 +30,7 @@ MonitorPluginManagerPtr MonitorPluginManager::get() } bool MonitorPluginManager::addPlugin( - String const &pluginName, + string const &pluginName, MonitorPluginCreatorPtr const &creator) { mutex.lock(); @@ -53,7 +55,7 @@ bool MonitorPluginManager::addPlugin( MonitorPluginCreatorPtr MonitorPluginManager::findPlugin( - String const &pluginName) + string const &pluginName) { mutex.lock(); std::list::iterator iter; diff --git a/src/monitor/monitorPlugin.h b/src/monitor/monitorPlugin.h index 8937b73..ba16ed4 100644 --- a/src/monitor/monitorPlugin.h +++ b/src/monitor/monitorPlugin.h @@ -56,7 +56,7 @@ public: * getName * @returns The name of the plugin */ - virtual String const & getName() = 0; + virtual std::string const & getName() = 0; /** * Should a monitor be raised? * @param pvField The field being monitored. @@ -125,7 +125,7 @@ public: * getName * @returns The name of the plugin */ - virtual String const & getName() = 0; + virtual std::string const & getName() = 0; }; @@ -152,7 +152,7 @@ public: * false is returned if a plugin with that name is already present */ bool addPlugin( - String const &pluginName, + std::string const &pluginName, MonitorPluginCreatorPtr const &creator); /* find plugin * @@ -160,7 +160,7 @@ public: * @returns share pointer to plugin creator. * If a plugin with that name is not found NULL is returned. */ - MonitorPluginCreatorPtr findPlugin(String const &pluginName); + MonitorPluginCreatorPtr findPlugin(std::string const &pluginName); /* showNames * */ diff --git a/src/property/alarm.cpp b/src/property/alarm.cpp index 44a072a..56f31d3 100644 --- a/src/property/alarm.cpp +++ b/src/property/alarm.cpp @@ -17,12 +17,14 @@ #include #include +using std::string; + namespace epics { namespace pvData { AlarmSeverity AlarmSeverityFunc::getSeverity(int value) { if(value<0 || value>4) { - throw std::logic_error(String("getSeverity value is illegal")); + throw std::logic_error(string("getSeverity value is illegal")); } switch (value) { case 0: return noAlarm; @@ -31,7 +33,7 @@ AlarmSeverity AlarmSeverityFunc::getSeverity(int value) case 3: return invalidAlarm; case 4: return undefinedAlarm; } - throw std::logic_error(String("should never get here")); + throw std::logic_error(string("should never get here")); } StringArrayPtr AlarmSeverityFunc::getSeverityNames() @@ -61,13 +63,13 @@ AlarmSeverity Alarm::getSeverity() const case 3: return invalidAlarm; case 4: return undefinedAlarm; } - throw std::logic_error(String("should never get here")); + throw std::logic_error(string("should never get here")); } AlarmStatus AlarmStatusFunc::getStatus(int value) { if(value<0 || value>7) { - throw std::logic_error(String("getStatus value is illegal")); + throw std::logic_error(string("getStatus value is illegal")); } switch (value) { case 0: return noStatus; @@ -79,7 +81,7 @@ AlarmStatus AlarmStatusFunc::getStatus(int value) case 6: return undefinedStatus; case 7: return clientStatus; } - throw std::logic_error(String("should never get here")); + throw std::logic_error(string("should never get here")); } StringArrayPtr AlarmStatusFunc::getStatusNames() @@ -115,7 +117,7 @@ AlarmStatus Alarm::getStatus() const case 6: return undefinedStatus; case 7: return clientStatus; } - throw std::logic_error(String("should never get here")); + throw std::logic_error(string("should never get here")); } }} diff --git a/src/property/alarm.h b/src/property/alarm.h index 1111c0c..c3a2df3 100644 --- a/src/property/alarm.h +++ b/src/property/alarm.h @@ -42,10 +42,10 @@ public: class epicsShareClass Alarm { public: - Alarm() : severity(0),status(0), message(String("")) {} + Alarm() : severity(0),status(0), message(std::string("")) {} //default constructors and destructor are OK - String getMessage() const {return message;} - void setMessage(String const &value) {message = value;} + std::string getMessage() const {return message;} + void setMessage(std::string const &value) {message = value;} AlarmSeverity getSeverity() const; void setSeverity(AlarmSeverity value) {severity = value;} AlarmStatus getStatus() const; @@ -53,7 +53,7 @@ public: private: int32 severity; int32 status; - String message; + std::string message; }; }} diff --git a/src/property/display.h b/src/property/display.h index a88f453..4cd1848 100644 --- a/src/property/display.h +++ b/src/property/display.h @@ -22,23 +22,23 @@ namespace epics { namespace pvData { class epicsShareClass Display { public: Display() - : description(String("")),format(String("")),units(String("")), + : description(std::string("")),format(std::string("")),units(std::string("")), low(0.0),high(0.0) {} //default constructors and destructor are OK double getLow() const {return low;} double getHigh() const{ return high;} void setLow(double value){low = value;} void setHigh(double value){high = value;} - String getDescription() const {return description;} - void setDescription(String const & value) {description = value;} - String getFormat() const {return format;} - void setFormat(String const & value) {format = value;} - String getUnits() const {return units;} - void setUnits(String const & value) {units = value;} + std::string getDescription() const {return description;} + void setDescription(std::string const & value) {description = value;} + std::string getFormat() const {return format;} + void setFormat(std::string const & value) {format = value;} + std::string getUnits() const {return units;} + void setUnits(std::string const & value) {units = value;} private: - String description; - String format; - String units; + std::string description; + std::string format; + std::string units; double low; double high; }; diff --git a/src/property/pvAlarm.cpp b/src/property/pvAlarm.cpp index 6506646..7d66c58 100644 --- a/src/property/pvAlarm.cpp +++ b/src/property/pvAlarm.cpp @@ -16,12 +16,13 @@ #include #include +using std::tr1::static_pointer_cast; +using std::string; + namespace epics { namespace pvData { -using std::tr1::static_pointer_cast; - -String PVAlarm::noAlarmFound("No alarm structure found"); -String PVAlarm::notAttached("Not attached to an alarm structure"); +string PVAlarm::noAlarmFound("No alarm structure found"); +string PVAlarm::notAttached("Not attached to an alarm structure"); bool PVAlarm::attach(PVFieldPtr const & pvField) { diff --git a/src/property/pvAlarm.h b/src/property/pvAlarm.h index ad8be5c..83bf59c 100644 --- a/src/property/pvAlarm.h +++ b/src/property/pvAlarm.h @@ -37,8 +37,8 @@ private: PVIntPtr pvSeverity; PVIntPtr pvStatus; PVStringPtr pvMessage; - static String noAlarmFound; - static String notAttached; + static std::string noAlarmFound; + static std::string notAttached; }; }} diff --git a/src/property/pvControl.cpp b/src/property/pvControl.cpp index c1b8576..f0390df 100644 --- a/src/property/pvControl.cpp +++ b/src/property/pvControl.cpp @@ -19,9 +19,10 @@ namespace epics { namespace pvData { using std::tr1::static_pointer_cast; +using std::string; -String PVControl::noControlFound("No control structure found"); -String PVControl::notAttached("Not attached to an control structure"); +string PVControl::noControlFound("No control structure found"); +string PVControl::notAttached("Not attached to an control structure"); bool PVControl::attach(PVFieldPtr const & pvField) { @@ -29,7 +30,7 @@ bool PVControl::attach(PVFieldPtr const & pvField) PVStructurePtr pvStructure = static_pointer_cast(pvField); pvLow = pvStructure->getDoubleField("limitLow"); if(pvLow.get()==NULL) return false; - pvHigh = pvStructure->getDoubleField(String("limitHigh")); + pvHigh = pvStructure->getDoubleField(string("limitHigh")); if(pvHigh.get()==NULL) { pvLow.reset(); return false; diff --git a/src/property/pvControl.h b/src/property/pvControl.h index b47f72c..a091b4f 100644 --- a/src/property/pvControl.h +++ b/src/property/pvControl.h @@ -33,8 +33,8 @@ public: private: PVDoublePtr pvLow; PVDoublePtr pvHigh; - static String noControlFound; - static String notAttached; + static std::string noControlFound; + static std::string notAttached; }; }} diff --git a/src/property/pvDisplay.cpp b/src/property/pvDisplay.cpp index a5dd085..27daa09 100644 --- a/src/property/pvDisplay.cpp +++ b/src/property/pvDisplay.cpp @@ -16,12 +16,13 @@ #include #include +using std::tr1::static_pointer_cast; +using std::string; + namespace epics { namespace pvData { -using std::tr1::static_pointer_cast; - -String PVDisplay::noDisplayFound("No display structure found"); -String PVDisplay::notAttached("Not attached to an display structure"); +string PVDisplay::noDisplayFound("No display structure found"); +string PVDisplay::notAttached("Not attached to an display structure"); bool PVDisplay::attach(PVFieldPtr const & pvField) { @@ -39,12 +40,12 @@ bool PVDisplay::attach(PVFieldPtr const & pvField) detach(); return false; } - pvLow = pvStructure->getDoubleField(String("limitLow")); + pvLow = pvStructure->getDoubleField(string("limitLow")); if(pvLow.get()==NULL) { detach(); return false; } - pvHigh = pvStructure->getDoubleField(String("limitHigh")); + pvHigh = pvStructure->getDoubleField(string("limitHigh")); if(pvHigh.get()==NULL) { detach(); return false; diff --git a/src/property/pvDisplay.h b/src/property/pvDisplay.h index bb12329..793826d 100644 --- a/src/property/pvDisplay.h +++ b/src/property/pvDisplay.h @@ -33,8 +33,8 @@ public: void get(Display &) const; bool set(Display const & display); private: - static String noDisplayFound; - static String notAttached; + static std::string noDisplayFound; + static std::string notAttached; PVStringPtr pvDescription; PVStringPtr pvFormat; PVStringPtr pvUnits; diff --git a/src/property/pvEnumerated.cpp b/src/property/pvEnumerated.cpp index 05ec180..5a58f5e 100644 --- a/src/property/pvEnumerated.cpp +++ b/src/property/pvEnumerated.cpp @@ -16,12 +16,13 @@ #include #include +using std::tr1::static_pointer_cast; +using std::string; + namespace epics { namespace pvData { -using std::tr1::static_pointer_cast; - -String PVEnumerated::notFound("No enumerated structure found"); -String PVEnumerated::notAttached("Not attached to an enumerated structure"); +string PVEnumerated::notFound("No enumerated structure found"); +string PVEnumerated::notAttached("Not attached to an enumerated structure"); bool PVEnumerated::attach(PVFieldPtr const & pvField) { @@ -68,7 +69,7 @@ int32 PVEnumerated::getIndex() return pvIndex->get(); } -String PVEnumerated::getChoice() +string PVEnumerated::getChoice() { if(pvIndex.get()==NULL ) { throw std::logic_error(notAttached); diff --git a/src/property/pvEnumerated.h b/src/property/pvEnumerated.h index fa2887b..51b54f7 100644 --- a/src/property/pvEnumerated.h +++ b/src/property/pvEnumerated.h @@ -33,14 +33,14 @@ public: // a set returns false if field is immutable bool setIndex(int32 index); int32 getIndex(); - String getChoice(); + std::string getChoice(); bool choicesMutable(); inline PVStringArray::const_svector getChoices(){return pvChoices->view();} int32 getNumberChoices(); bool setChoices(const StringArray & choices); private: - static String notFound; - static String notAttached; + static std::string notFound; + static std::string notAttached; PVIntPtr pvIndex; PVStringArrayPtr pvChoices; }; diff --git a/src/property/pvTimeStamp.cpp b/src/property/pvTimeStamp.cpp index 92233c9..92e7d33 100644 --- a/src/property/pvTimeStamp.cpp +++ b/src/property/pvTimeStamp.cpp @@ -16,12 +16,13 @@ #include #include +using std::tr1::static_pointer_cast; +using std::string; + namespace epics { namespace pvData { -using std::tr1::static_pointer_cast; - -String PVTimeStamp::noTimeStamp("No timeStamp structure found"); -String PVTimeStamp::notAttached("Not attached to a timeStamp structure"); +string PVTimeStamp::noTimeStamp("No timeStamp structure found"); +string PVTimeStamp::notAttached("Not attached to a timeStamp structure"); bool PVTimeStamp::attach(PVFieldPtr const & pvField) { diff --git a/src/property/pvTimeStamp.h b/src/property/pvTimeStamp.h index 1e6641f..e19f496 100644 --- a/src/property/pvTimeStamp.h +++ b/src/property/pvTimeStamp.h @@ -36,8 +36,8 @@ public: void get(TimeStamp &) const; bool set(TimeStamp const & timeStamp); private: - static String noTimeStamp; - static String notAttached; + static std::string noTimeStamp; + static std::string notAttached; PVLongPtr pvSecs; PVIntPtr pvUserTag; PVIntPtr pvNano; diff --git a/src/pv/convert.h b/src/pv/convert.h index ca91ed6..2f04655 100644 --- a/src/pv/convert.h +++ b/src/pv/convert.h @@ -63,12 +63,12 @@ static inline bool operator!=(const UnionArray& a, const UnionArray& b) * pvUByte, pvUShort, pvUInt, pvULong, * pvFloat, or pvDouble.

* - *

getString converts any supported type to a String. + *

getString converts any supported type to a std::string. * Code that implements a PVField interface should implement * method toString by calling this method.

* - *

fromString converts a String to a scalar. - * fromStringArray converts an array of Strings + *

fromString converts a std::string to a scalar. + * fromStringArray converts an array of std::strings * to a pvArray, which must have a scaler element type. * A scalar field is a numeric field or pvBoolean or pvString.

*

All from methods put data into a PVField, e.g. from means where the PVField gets it's data.

@@ -85,7 +85,7 @@ public: * @param builder The builder that will have the result. * @param pvField The pvField. */ - void getFullName(StringBuilder buf,PVFieldPtr const & pvField) + void getFullName(std::string *buf,PVFieldPtr const & pvField) { *buf = pvField->getFullName(); } @@ -121,7 +121,7 @@ public: * If a PVField is a structure or array be prepared for a very long string. * @param indentLevel indentation level */ - inline void getString(StringBuilder buf,PVFieldPtr const & pvField,int indentLevel) + inline void getString(std::string *buf,PVFieldPtr const & pvField,int indentLevel) {getString(buf, pvField.get(), indentLevel);} /** * Convert a PVField to a string. @@ -129,7 +129,7 @@ public: * @param pv The PVField to convert to a string. * If the PVField is a structure or array be prepared for a very long string. */ - inline void getString(StringBuilder buf,PVFieldPtr const & pvField) + inline void getString(std::string * buf,PVFieldPtr const & pvField) {getString(buf, pvField.get(), 0);} /** * Convert a PVField to a string. @@ -138,49 +138,49 @@ public: * If a PVField is a structure or array be prepared for a very long string. * @param indentLevel indentation level */ - void getString(StringBuilder buf,PVField const * pvField,int indentLevel); + void getString(std::string * buf,PVField const * pvField,int indentLevel); /** * Convert a PVField to a string. * param buf buffer for the result * @param pv The PVField to convert to a string. * If the PVField is a structure or array be prepared for a very long string. */ - inline void getString(StringBuilder buf,PVField const * pvField) + inline void getString(std::string * buf,PVField const * pvField) {getString(buf, pvField, 0);} /** - * Convert from an array of String to a PVScalar + * Convert from an array of std::string to a PVScalar * @param pv The PV. - * @param from The array of String value to convert and put into a PV. + * @param from The array of std::string value to convert and put into a PV. * @param fromStartIndex The first element if the array of strings. - * @throws std::logic_error if the array of String does not have a valid values. + * @throws std::logic_error if the array of std::string does not have a valid values. */ std::size_t fromString( PVStructurePtr const &pv, StringArray const & from, std::size_t fromStartIndex = 0); /** - * Convert from a String to a PVScalar + * Convert from a std::string to a PVScalar * @param pv The PV. - * @param from The String value to convert and put into a PV. - * @throws std::logic_error if the String does not have a valid value. + * @param from The std::string value to convert and put into a PV. + * @throws std::logic_error if the std::string does not have a valid value. */ - void fromString(PVScalarPtr const & pv, String const & from) + void fromString(PVScalarPtr const & pv, std::string const & from) { - pv->putFrom(from); + pv->putFrom(from); } /** - * Convert from a String to a PVScalarArray. - * The String must be a comma separated set of values optionally enclosed in [] + * Convert from a std::string to a PVScalarArray. + * The std::string must be a comma separated set of values optionally enclosed in [] * @param pv The PV. - * @param from The String value to convert and put into a PV. + * @param from The std::string value to convert and put into a PV. * @return The number of elements converted. * @throws std::invalid_argument if the element Type is not a scalar. - * @throws std::logic_error if the String does not have a valid array values. + * @throws std::logic_error if the std::string does not have a valid array values. */ - std::size_t fromString(PVScalarArrayPtr const & pv, String from); + std::size_t fromString(PVScalarArrayPtr const & pv, std::string from); /** - * Convert a PVScalarArray from a String array. + * Convert a PVScalarArray from a std::string array. * The array element type must be a scalar. * @param pv The PV. * @param offset Starting element in a PV. @@ -189,7 +189,7 @@ public: * @param fromOffset Starting element in the source array. * @return The number of elements converted. * @throws std::invalid_argument if the element Type is not a scalar. - * @throws std::logic_error if the String does not have a valid value. + * @throws std::logic_error if the std::string does not have a valid value. */ std::size_t fromStringArray( PVScalarArrayPtr const & pv, @@ -197,11 +197,11 @@ public: StringArray const & from, std::size_t fromOffset); /** - * Convert a PVScalarArray to a String array. + * Convert a PVScalarArray to a std::string array. * @param pv The PV. * @param offset Starting element in the PV array. * @param length Number of elements to convert to the string array. - * @param to String array to receive the converted PV data. + * @param to std::string array to receive the converted PV data. * @param toOffset Starting element in the string array. * @return Number of elements converted. */ @@ -401,11 +401,11 @@ public: */ inline double toDouble(PVScalarPtr const & pv) { return pv->getAs();} /** - * Convert a PV to a String + * Convert a PV to a std::string * @param pv a PV * @return converted value */ - inline String toString(PVScalarPtr const & pv) { return pv->getAs();} + inline std::string toString(PVScalarPtr const & pv) { return pv->getAs();} /** * Convert a PV from a byte * @param pv a PV @@ -480,10 +480,10 @@ public: /** * Convenience method for implementing toString. * It generates a newline and inserts blanks at the beginning of the newline. - * @param builder The StringBuilder being constructed. + * @param builder The std::string * being constructed. * @param indentLevel Indent level, Each level is four spaces. */ - void newLine(StringBuilder buf, int indentLevel); + void newLine(std::string * buf, int indentLevel); }; static inline ConvertPtr getConvert() { return Convert::getConvert(); } diff --git a/src/pv/printer.h b/src/pv/printer.h index 374960d..c053bee 100644 --- a/src/pv/printer.h +++ b/src/pv/printer.h @@ -2,6 +2,7 @@ #define PRINTER_H #include +#include #include "pvData.h" diff --git a/src/pv/pvData.h b/src/pv/pvData.h index 186e64f..e8042aa 100644 --- a/src/pv/pvData.h +++ b/src/pv/pvData.h @@ -35,69 +35,6 @@ typedef class std::ios std::ios_base; namespace epics { namespace pvData { - -namespace format { - -struct indent_level -{ - long level; - - indent_level(long l) : level(l) {} -}; - -inline long& indent_value(std::ios_base& ios) -{ - static int indent_index = std::ios_base::xalloc(); - return ios.iword(indent_index); -} - -epicsShareExtern std::ostream& operator<<(std::ostream& os, indent_level const& indent); - -struct indent_scope -{ - long saved_level; - std::ios_base& stream; - - indent_scope(std::ios_base& ios) : - stream(ios) - { - long& l = indent_value(ios); - saved_level = l; - l = saved_level + 1; - } - - ~indent_scope() - { - indent_value(stream) = saved_level; - } -}; - -struct indent -{ -}; - -epicsShareExtern std::ostream& operator<<(std::ostream& os, indent const&); - -struct array_at -{ - std::size_t index; - - array_at(std::size_t ix) : index(ix) {} -}; - -struct array_at_internal -{ - std::size_t index; - std::ostream& stream; - - array_at_internal(std::size_t ix, std::ostream& str) : index(ix), stream(str) {} -}; - -epicsShareExtern array_at_internal operator<<(std::ostream& str, array_at const& manip); - -}; - - class PostHandler; class PVField; @@ -223,13 +160,13 @@ public: * Get the fieldName for this field. * @return The name or empty string if top level field. */ - inline const String& getFieldName() const {return fieldName;} + inline const std::string& getFieldName() const {return fieldName;} /** * Fully expand the name of this field using the * names of its parent fields with a dot '.' seperating * each name. */ - String getFullName() const; + std::string getFullName() const; /** * Get offset of the PVField field within top level structure. * Every field within the PVStructure has a unique offset. @@ -287,19 +224,6 @@ public: * @return (false,true) if (is not,is) equal. */ virtual bool equals(PVField &pv); - /** - * Convert the PVField to a string. - * @param buf buffer for the result - */ - virtual void toString(StringBuilder buf) ; - /** - * Convert the PVField to a string. - * Each line is indented. - * @param buf buffer for the result - * @param indentLevel The indentation level. - */ - virtual void toString(StringBuilder buf,int indentLevel) ; - /** * Puts the PVField raw value to the stream. * @param o output stream. @@ -307,19 +231,18 @@ public: */ virtual std::ostream& dumpValue(std::ostream& o) const = 0; - protected: PVField::shared_pointer getPtrSelf() { return shared_from_this(); } PVField(FieldConstPtr field); - void setParentAndName(PVStructure *parent, String const & fieldName); + void setParentAndName(PVStructure *parent, std::string const & fieldName); private: static void computeOffset(const PVField *pvField); static void computeOffset(const PVField *pvField,std::size_t offset); - String notImplemented; - String fieldName; + std::string notImplemented; + std::string fieldName; PVStructure *parent; FieldConstPtr field; size_t fieldOffset; @@ -516,7 +439,7 @@ typedef std::tr1::shared_ptr PVDoublePtr; /** * PVString is special case, since it implements SerializableArray */ -class epicsShareClass PVString : public PVScalarValue, SerializableArray { +class epicsShareClass PVString : public PVScalarValue, SerializableArray { public: /** * Destructor @@ -524,7 +447,7 @@ public: virtual ~PVString() {} protected: PVString(ScalarConstPtr const & scalar) - : PVScalarValue(scalar) {} + : PVScalarValue(scalar) {} }; typedef std::tr1::shared_ptr PVStringPtr; @@ -709,10 +632,10 @@ public: * @param fieldName The name of the field. * @return Pointer to the field or null if field does not exist. */ - PVFieldPtr getSubField(String const &fieldName) const; + PVFieldPtr getSubField(std::string const &fieldName) const; template - std::tr1::shared_ptr getSubField(String const &fieldName) const + std::tr1::shared_ptr getSubField(std::string const &fieldName) const { PVFieldPtr pvField = getSubField(fieldName); if (pvField.get()) @@ -744,84 +667,84 @@ public: * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVBooleanPtr getBooleanField(String const &fieldName) ; + PVBooleanPtr getBooleanField(std::string const &fieldName) ; /** * Get a byte field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVBytePtr getByteField(String const &fieldName) ; + PVBytePtr getByteField(std::string const &fieldName) ; /** * Get a short field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVShortPtr getShortField(String const &fieldName) ; + PVShortPtr getShortField(std::string const &fieldName) ; /** * Get a int field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVIntPtr getIntField(String const &fieldName) ; + PVIntPtr getIntField(std::string const &fieldName) ; /** * Get a long field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVLongPtr getLongField(String const &fieldName) ; + PVLongPtr getLongField(std::string const &fieldName) ; /** * Get an unsigned byte field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVUBytePtr getUByteField(String const &fieldName) ; + PVUBytePtr getUByteField(std::string const &fieldName) ; /** * Get an unsigned short field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVUShortPtr getUShortField(String const &fieldName) ; + PVUShortPtr getUShortField(std::string const &fieldName) ; /** * Get an unsigned int field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVUIntPtr getUIntField(String const &fieldName) ; + PVUIntPtr getUIntField(std::string const &fieldName) ; /** * Get an unsigned long field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVULongPtr getULongField(String const &fieldName) ; + PVULongPtr getULongField(std::string const &fieldName) ; /** * Get a float field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVFloatPtr getFloatField(String const &fieldName) ; + PVFloatPtr getFloatField(std::string const &fieldName) ; /** * Get a double field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVDoublePtr getDoubleField(String const &fieldName) ; + PVDoublePtr getDoubleField(std::string const &fieldName) ; /** * Get a string field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVStringPtr getStringField(String const &fieldName) ; + PVStringPtr getStringField(std::string const &fieldName) ; /** * Get a structure field with the specified name. @@ -829,14 +752,14 @@ public: * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVStructurePtr getStructureField(String const &fieldName) ; + PVStructurePtr getStructureField(std::string const &fieldName) ; /** * Get a union field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVUnionPtr getUnionField(String const &fieldName) ; + PVUnionPtr getUnionField(std::string const &fieldName) ; /** * Get a scalarArray field with the specified name. * No longer needed. Use templete version of getSubField @@ -845,21 +768,21 @@ public: * @return Pointer to the field of null if a field with that name and type does not exist. */ PVScalarArrayPtr getScalarArrayField( - String const &fieldName,ScalarType elementType) ; + std::string const &fieldName,ScalarType elementType) ; /** * Get a structureArray field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVStructureArrayPtr getStructureArrayField(String const &fieldName) ; + PVStructureArrayPtr getStructureArrayField(std::string const &fieldName) ; /** * Get a unionArray field with the specified name. * No longer needed. Use templete version of getSubField * @param fieldName The name of the field to get. * @return Pointer to the field of null if a field with that name and type does not exist. */ - PVUnionArrayPtr getUnionArrayField(String const &fieldName) ; + PVUnionArrayPtr getUnionArrayField(std::string const &fieldName) ; /** * Serialize. * @param pbuffer The byte buffer. @@ -926,7 +849,7 @@ private: PVFieldPtrArray pvFields; StructureConstPtr structurePtr; - String extendsStructureName; + std::string extendsStructureName; friend class PVDataCreate; }; @@ -988,10 +911,10 @@ public: * @return corresponding PVField (of undetermined value). * @throws {@code std::invalid_argument} if field does not exist. */ - PVFieldPtr select(String const & fieldName); + PVFieldPtr select(std::string const & fieldName); template - std::tr1::shared_ptr select(String const & fieldName) { + std::tr1::shared_ptr select(std::string const & fieldName) { return std::tr1::dynamic_pointer_cast(select(fieldName)); } @@ -1005,7 +928,7 @@ public: * Get selected field name. * @return selected field name, empty string if field does not exist. */ - String getSelectedFieldName() const; + std::string getSelectedFieldName() const; /** * Set the {@code PVField} (by reference!) as selected field. @@ -1025,12 +948,12 @@ public: /** * Set the {@code PVField} (by reference!) as field by given name. * If a value is not a valid union field an {@code std::invalid_argument} exception is thrown. - * Use {@code select(String)} to put by value. + * Use {@code select(std::string)} to put by value. * @param fieldName Name of the field to put. * @param value the field to set. - * @see #select(String) + * @see #select(std::string) */ - void set(String const & fieldName, PVFieldPtr const & value); + void set(std::string const & fieldName, PVFieldPtr const & value); /** * Serialize. @@ -1429,7 +1352,7 @@ typedef std::tr1::shared_ptr PVFloatArrayPtr; typedef PVValueArray PVDoubleArray; typedef std::tr1::shared_ptr PVDoubleArrayPtr; -typedef PVValueArray PVStringArray; +typedef PVValueArray PVStringArray; typedef std::tr1::shared_ptr PVStringArrayPtr; /** diff --git a/src/pv/pvIntrospect.h b/src/pv/pvIntrospect.h index 3bb839f..ac9d59a 100644 --- a/src/pv/pvIntrospect.h +++ b/src/pv/pvIntrospect.h @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -22,6 +23,67 @@ namespace epics { namespace pvData { +namespace format { + +struct indent_level +{ + long level; + + indent_level(long l) : level(l) {} +}; + +inline long& indent_value(std::ios_base& ios) +{ + static int indent_index = std::ios_base::xalloc(); + return ios.iword(indent_index); +} + +epicsShareExtern std::ostream& operator<<(std::ostream& os, indent_level const& indent); + +struct indent_scope +{ + long saved_level; + std::ios_base& stream; + + indent_scope(std::ios_base& ios) : + stream(ios) + { + long& l = indent_value(ios); + saved_level = l; + l = saved_level + 1; + } + + ~indent_scope() + { + indent_value(stream) = saved_level; + } +}; + +struct indent +{ +}; + +epicsShareExtern std::ostream& operator<<(std::ostream& os, indent const&); + +struct array_at +{ + std::size_t index; + + array_at(std::size_t ix) : index(ix) {} +}; + +struct array_at_internal +{ + std::size_t index; + std::ostream& stream; + + array_at_internal(std::size_t ix, std::ostream& str) : index(ix), stream(str) {} +}; + +epicsShareExtern array_at_internal operator<<(std::ostream& str, array_at const& manip); + +}; + class Field; class Scalar; class Array; @@ -108,14 +170,11 @@ namespace TypeFunc { * @return The name for the type. */ epicsShareExtern const char* name(Type type); - /** - * Convert the type to a string and add it to builder. - * @param builder The string builder. - * @param type The type. - */ - epicsShareExtern void toString(StringBuilder builder,const Type type); }; +epicsShareExtern std::ostream& operator<<(std::ostream& o, const Type& type); + + /** * Definition of support scalar types. */ @@ -206,24 +265,21 @@ namespace ScalarTypeFunc { * @return The scalarType. * An exception is thrown if the name is not the name of a scalar type. */ - epicsShareExtern ScalarType getScalarType(String const &value); + epicsShareExtern ScalarType getScalarType(std::string const &value); /** * Get a name for the scalarType. * @param scalarType The type. * @return The name for the scalarType. */ epicsShareExtern const char* name(ScalarType scalarType); - /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. - * @param scalarType The type. - */ - epicsShareExtern void toString(StringBuilder builder,ScalarType scalarType); //! gives sizeof(T) where T depends on the scalar type id. epicsShareExtern size_t elementSize(ScalarType id); }; +epicsShareExtern std::ostream& operator<<(std::ostream& o, const ScalarType& scalarType); + + /** * This class implements introspection object for field. */ @@ -245,18 +301,15 @@ public: * Get the identification string. * @return The identification string, can be empty. */ - virtual String getID() const = 0; + virtual std::string getID() const = 0; + /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. + * Puts the string representation to the stream. + * @param o output stream. + * @return The output stream. */ - virtual void toString(StringBuilder builder) const{toString(builder,0);} - /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder builder,int indentLevel) const; + virtual std::ostream& dump(std::ostream& o) const = 0; + protected: /** * Constructor @@ -276,6 +329,8 @@ private: struct Deleter{void operator()(Field *p){delete p;}}; }; +epicsShareExtern std::ostream& operator<<(std::ostream& o, const Field& field); + /** * This class implements introspection object for Scalar. @@ -294,19 +349,10 @@ public: * @return the scalarType */ ScalarType getScalarType() const {return scalarType;} - /** - * Convert the scalar to a string and add it to builder. - * @param builder The string builder. - */ - virtual void toString(StringBuilder buf) const{toString(buf,0);} - /** - * Convert the scalar to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder buf,int indentLevel) const; + + virtual std::string getID() const; - virtual String getID() const; + virtual std::ostream& dump(std::ostream& o) const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); @@ -367,19 +413,10 @@ public: * @return the scalarType */ ScalarType getElementType() const {return elementType;} - /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. - */ - virtual void toString(StringBuilder buf) const{toString(buf,0);} - /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder buf,int indentLevel) const; - virtual String getID() const; + virtual std::string getID() const; + + virtual std::ostream& dump(std::ostream& o) const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); @@ -391,7 +428,7 @@ protected: virtual ~ScalarArray(); private: int8 getTypeCodeLUT() const; - const String getIDScalarArrayLUT() const; + const std::string getIDScalarArrayLUT() const; ScalarType elementType; friend class FieldCreate; }; @@ -411,14 +448,9 @@ public: */ StructureConstPtr getStructure() const {return pstructure;} - /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder buf,int indentLevel=0) const; - - virtual String getID() const; + virtual std::string getID() const; + + virtual std::ostream& dump(std::ostream& o) const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); @@ -453,14 +485,9 @@ public: */ UnionConstPtr getUnion() const {return punion;} - /** - * Convert the scalarType to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder buf,int indentLevel=0) const; - - virtual String getID() const; + virtual std::string getID() const; + + virtual std::ostream& dump(std::ostream& o) const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); @@ -490,7 +517,7 @@ public: /** * Default structure ID. */ - static epics::pvData::String DEFAULT_ID; + static std::string DEFAULT_ID; /** * Destructor. @@ -510,7 +537,7 @@ public: * @return The introspection interface. * This will hold a null pointer if the field is not in the structure. */ - FieldConstPtr getField(String const &fieldName) const; + FieldConstPtr getField(std::string const &fieldName) const; /** * Get the field for the specified fieldName. * @param fieldName The index of the field to get; @@ -523,7 +550,7 @@ public: * @return The introspection interface. * This will be -1 if the field is not in the structure. */ - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; /** * Get the fields in the structure. * @return The array of fields. @@ -539,33 +566,26 @@ public: * @param fieldIndex The index of the desired field. * @return The fieldName. */ - String getFieldName(std::size_t fieldIndex) const {return fieldNames[fieldIndex];} - /** - * Convert the structure to a string and add it to builder. - * @param builder The string builder. - */ - virtual void toString(StringBuilder buf) const{toString(buf,0);} - /** - * Convert the structure to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder buf,int indentLevel) const; - - virtual String getID() const; + std::string getFieldName(std::size_t fieldIndex) const {return fieldNames[fieldIndex];} + + virtual std::string getID() const; + + virtual std::ostream& dump(std::ostream& o) const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); protected: - Structure(StringArray const & fieldNames, FieldConstPtrArray const & fields, String const & id = DEFAULT_ID); + Structure(StringArray const & fieldNames, FieldConstPtrArray const & fields, std::string const & id = DEFAULT_ID); private: - void toStringCommon(StringBuilder buf,int indentLevel) const; StringArray fieldNames; FieldConstPtrArray fields; - String id; - friend class FieldCreate; - friend class Union; + std::string id; + + virtual void dumpFields(std::ostream& o) const; + + friend class FieldCreate; + friend class Union; }; /** @@ -578,12 +598,12 @@ public: /** * Default union ID. */ - static epics::pvData::String DEFAULT_ID; + static std::string DEFAULT_ID; /** * Default variant union ID. */ - static epics::pvData::String ANY_ID; + static std::string ANY_ID; /** * Destructor. @@ -603,7 +623,7 @@ public: * @return The introspection interface. * This will hold a null pointer if the field is not in the union. */ - FieldConstPtr getField(String const &fieldName) const; + FieldConstPtr getField(std::string const &fieldName) const; /** * Get the field for the specified fieldName. * @param fieldName The index of the field to get; @@ -616,7 +636,7 @@ public: * @return The introspection interface. * This will be -1 if the field is not in the union. */ - std::size_t getFieldIndex(String const &fieldName) const; + std::size_t getFieldIndex(std::string const &fieldName) const; /** * Get the fields in the union. * @return The array of fields. @@ -632,37 +652,30 @@ public: * @param fieldIndex The index of the desired field. * @return The fieldName. */ - String getFieldName(std::size_t fieldIndex) const {return fieldNames[fieldIndex];} + std::string getFieldName(std::size_t fieldIndex) const {return fieldNames[fieldIndex];} /** * Check if this union is variant union (aka any type). * @return true if this union is variant union, otherwise false. */ bool isVariant() const {return (fieldNames.size() == 0);} - /** - * Convert the union to a string and add it to builder. - * @param builder The string builder. - */ - virtual void toString(StringBuilder buf) const{toString(buf,0);} - /** - * Convert the union to a string and add it to builder. - * @param builder The string builder. - * @param indentLevel The number of blanks at the beginning of new lines. - */ - virtual void toString(StringBuilder buf,int indentLevel) const; - - virtual String getID() const; + + virtual std::string getID() const; + + virtual std::ostream& dump(std::ostream& o) const; virtual void serialize(ByteBuffer *buffer, SerializableControl *control) const; virtual void deserialize(ByteBuffer *buffer, DeserializableControl *control); protected: Union(); - Union(StringArray const & fieldNames, FieldConstPtrArray const & fields, String const & id = DEFAULT_ID); + Union(StringArray const & fieldNames, FieldConstPtrArray const & fields, std::string const & id = DEFAULT_ID); private: - void toStringCommon(StringBuilder buf,int indentLevel) const; - StringArray fieldNames; - FieldConstPtrArray fields; - String id; + StringArray fieldNames; + FieldConstPtrArray fields; + std::string id; + + virtual void dumpFields(std::ostream& o) const; + friend class FieldCreate; friend class Structure; }; @@ -778,8 +791,8 @@ public: /** * Complete the creation of a nested object. - * @see #addNestedStructure(String) - * @see #addNestedUnion(String) + * @see #addNestedStructure(std::string) + * @see #addNestedUnion(std::string) * @return a previous (parent) {@code FieldBuilder}. */ FieldBuilderPtr endNested(); @@ -864,7 +877,7 @@ public: * @return a {@code Structure} interface for the newly created object. */ StructureConstPtr createStructure ( - String const & id, + std::string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; /** @@ -901,7 +914,7 @@ public: * @return a {@code Union} interface for the newly created object. */ UnionConstPtr createUnion ( - String const & id, + std::string const & id, StringArray const & fieldNames, FieldConstPtrArray const & fields) const; /** @@ -913,7 +926,7 @@ public: */ StructureConstPtr appendField( StructureConstPtr const & structure, - String const & fieldName, FieldConstPtr const & field) const; + std::string const & fieldName, FieldConstPtr const & field) const; /** * Append fields to a structure. * @param structure The structure to which the fields appended. @@ -986,8 +999,27 @@ OP(pvUInt, uint32) OP(pvULong, uint64) OP(pvFloat, float) OP(pvDouble, double) -OP(pvString, String) +OP(pvString, std::string) #undef OP +struct ScalarHashFunction { + size_t operator() (const Scalar& scalar) const { return scalar.getScalarType(); } +}; + +struct ScalarArrayHashFunction { + size_t operator() (const ScalarArray& scalarArray) const { return 0x10 | scalarArray.getElementType(); } +}; + +struct StructureHashFunction { + size_t operator() (const Structure& /*structure*/) const { return 0; } + // TODO hash +// final int PRIME = 31; +// return PRIME * Arrays.hashCode(fieldNames) + Arrays.hashCode(fields); +}; + +struct StructureArrayHashFunction { + size_t operator() (const StructureArray& structureArray) const { StructureHashFunction shf; return (0x10 | shf(*(structureArray.getStructure()))); } +}; + }} #endif /* PVINTROSPECT_H */ diff --git a/src/pv/pvType.h b/src/pv/pvType.h index 84bc17d..506b835 100644 --- a/src/pv/pvType.h +++ b/src/pv/pvType.h @@ -93,29 +93,24 @@ typedef uint64_t uint64; // float and double are types -/** - * A string - */ -typedef std::string String; - /** * A string array. */ -typedef std::vector StringArray; +typedef std::vector StringArray; typedef std::tr1::shared_ptr StringArrayPtr; -inline String * get(StringArray &value) +inline std::string * get(StringArray &value) { return &value[0]; } -inline String const * get(StringArray const &value) +inline std::string const * get(StringArray const &value) { - return static_cast(&value[0]); + return static_cast(&value[0]); } -inline String * get(StringArrayPtr &value) +inline std::string * get(StringArrayPtr &value) { return get(*value.get()); } -inline String const * get(StringArrayPtr const &value) +inline std::string const * get(StringArrayPtr const &value) { return get(*value.get()); } @@ -127,13 +122,8 @@ inline StringArray const & getVector(StringArrayPtr const &value) { return *value.get(); } -typedef std::vector::iterator StringArray_iterator; -typedef std::vector::const_iterator StringArray_const_iterator; - -/** - * A convenience definition for toString methods - */ -typedef String * StringBuilder; +typedef std::vector::iterator StringArray_iterator; +typedef std::vector::const_iterator StringArray_const_iterator; }} #endif /* PVTYPE_H */ diff --git a/src/pv/standardField.h b/src/pv/standardField.h index 3f8cc2d..f46e3dc 100644 --- a/src/pv/standardField.h +++ b/src/pv/standardField.h @@ -38,9 +38,9 @@ typedef std::tr1::shared_ptr StandardFieldPtr; * For example the call: * {@code StructureConstPtr example = standardField->scalar( - String("value"), + std::string("value"), pvDouble, - String("value,alarm,timeStamp")); + std::string("value,alarm,timeStamp")); * } * Will result in a Field definition that has the form: {@code structure example @@ -75,7 +75,7 @@ public: * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - StructureConstPtr scalar(ScalarType type,String const & properties); + StructureConstPtr scalar(ScalarType type,std::string const & properties); /** Create a structure that has a union value field. * @param punion The interface for value field. * @param properties A comma separated list of properties. @@ -84,20 +84,20 @@ public: */ StructureConstPtr regUnion( UnionConstPtr const & punion, - String const & properties); + std::string const & properties); /** Create a structure that has a varient union value field. * @param properties A comma separated list of properties. * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - StructureConstPtr variantUnion(String const & properties); + StructureConstPtr variantUnion(std::string const & properties); /** Create a structure that has a scalarArray value field. * @param type The type. * @param properties A comma separated list of properties. * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - StructureConstPtr scalarArray(ScalarType elementType, String const & properties); + StructureConstPtr scalarArray(ScalarType elementType, std::string const & properties); /** Create a structure that has a structureArray value field. * @param type The type. * @param properties A comma separated list of properties. @@ -106,7 +106,7 @@ public: */ StructureConstPtr structureArray( StructureConstPtr const & structure, - String const & properties); + std::string const & properties); /** Create a structure that has a unionArray value field. * @param type The type. * @param properties A comma separated list of properties. @@ -115,7 +115,7 @@ public: */ StructureConstPtr unionArray( UnionConstPtr const & punion, - String const & properties); + std::string const & properties); /** Create a structure that has an enumerated structure value field. * The id for the structure is "enum-t". * @return The const shared pointer to the structure. @@ -127,7 +127,7 @@ public: * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - StructureConstPtr enumerated(String const & properties); + StructureConstPtr enumerated(std::string const & properties); /** * create an alarm structure * @return The const shared pointer to the structure. @@ -212,10 +212,10 @@ private: StandardField(); void init(); StructureConstPtr createProperties( - String id,FieldConstPtr field,String properties); + std::string id,FieldConstPtr field,std::string properties); FieldCreatePtr fieldCreate; - String notImplemented; - String valueFieldName; + std::string notImplemented; + std::string valueFieldName; StructureConstPtr alarmField; StructureConstPtr timeStampField; StructureConstPtr displayField; diff --git a/src/pv/standardPVField.h b/src/pv/standardPVField.h index 31941f2..fad8060 100644 --- a/src/pv/standardPVField.h +++ b/src/pv/standardPVField.h @@ -50,7 +50,7 @@ public: * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - PVStructurePtr scalar(ScalarType type,String const & properties); + PVStructurePtr scalar(ScalarType type,std::string const & properties); /** * Create a structure that has a scalar array value field. * @param type The type. @@ -58,7 +58,7 @@ public: * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - PVStructurePtr scalarArray(ScalarType elementType, String const & properties); + PVStructurePtr scalarArray(ScalarType elementType, std::string const & properties); /** * Create a structure that has a structure array value field. * @param type The type. @@ -66,7 +66,7 @@ public: * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - PVStructurePtr structureArray(StructureConstPtr const &structure,String const & properties); + PVStructurePtr structureArray(StructureConstPtr const &structure,std::string const & properties); /** * Create a structure that has a union array value field. * @param type The type. @@ -74,7 +74,7 @@ public: * This is some combination of "alarm,timeStamp,display,control,valueAlarm". * @return The const shared pointer to the structure. */ - PVStructurePtr unionArray(UnionConstPtr const &punion,String const & properties); + PVStructurePtr unionArray(UnionConstPtr const &punion,std::string const & properties); /** * Create a structure that has an enumerated structure value field. * The id for the structure is "enum_t". @@ -89,13 +89,13 @@ public: * @param properties A comma separated list of properties. * @return The const shared pointer to the structure. */ - PVStructurePtr enumerated(StringArray const &choices, String const & properties); + PVStructurePtr enumerated(StringArray const &choices, std::string const & properties); private: StandardPVField(); StandardFieldPtr standardField; FieldCreatePtr fieldCreate; PVDataCreatePtr pvDataCreate; - String notImplemented; + std::string notImplemented; }; epicsShareExtern StandardPVFieldPtr getStandardPVField(); diff --git a/testApp/copy/testCreateRequest.cpp b/testApp/copy/testCreateRequest.cpp index 98fb4e2..302affb 100644 --- a/testApp/copy/testCreateRequest.cpp +++ b/testApp/copy/testCreateRequest.cpp @@ -14,6 +14,7 @@ #include using namespace epics::pvData; +using std::string; using std::cout; using std::endl; @@ -23,8 +24,8 @@ void testCreateRequest() { printf("testCreateRequest... \n"); CreateRequest::shared_pointer createRequest = CreateRequest::create(); - String out; - String request = ""; + string out; + string request = ""; if(debug) { cout << "request " << request <createRequest(request); if(debug) { cout<< createRequest->getMessage() << endl;} @@ -43,7 +44,7 @@ void testCreateRequest() { testOk1(pvRequest!=NULL); if(debug) { cout << pvRequest->dumpValue(cout) << endl;} PVStringPtr pvString = pvRequest->getSubField("record.a"); - String sval = pvString->get(); + string sval = pvString->get(); testOk(sval.compare("b")==0,"record.a = b"); pvString = pvRequest->getSubField("record.x"); sval = pvString->get(); @@ -131,7 +132,7 @@ void testCreateRequest() { request = "alarm,timeStamp,power.value"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << endl << String("request") <getMessage() << endl; } @@ -144,7 +145,7 @@ void testCreateRequest() { request = "record[process=true]field(alarm,timeStamp,power.value)"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << endl << String("request") <getMessage() << endl; } @@ -160,7 +161,7 @@ void testCreateRequest() { request = "record[process=true]field(alarm,timeStamp[algorithm=onChange,causeMonitor=false],power{value,alarm})"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << String("request") <getMessage() << endl; } @@ -183,7 +184,7 @@ void testCreateRequest() { request = "record[int=2,float=3.14159]field(alarm,timeStamp[shareData=true],power.value)"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << String("request") <getMessage() << endl; } @@ -202,12 +203,12 @@ void testCreateRequest() { if(debug) {cout << pvRequest->dumpValue(cout) << endl;} testPass("request %s",request.c_str()); - request = String("record[process=true,xxx=yyy]") + request = string("record[process=true,xxx=yyy]") + "putField(power.value)" + "getField(alarm,timeStamp,power{value,alarm}," + "current{value,alarm},voltage{value,alarm})"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << String("request") <getMessage() << endl; } @@ -224,12 +225,12 @@ void testCreateRequest() { if(debug) {cout << pvRequest->dumpValue(cout) << endl;} testPass("request %s",request.c_str()); - request = String("field(alarm,timeStamp,supply{") + request = string("field(alarm,timeStamp,supply{") + "0{voltage.value,current.value,power.value}," + "1{voltage.value,current.value,power.value}" + "})"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << String("request") <getMessage() << endl; } @@ -245,7 +246,7 @@ void testCreateRequest() { if(debug) {cout << pvRequest->dumpValue(cout) << endl;} testPass("request %s",request.c_str()); - request = String("record[process=true,xxx=yyy]") + request = string("record[process=true,xxx=yyy]") + "putField(power.value)" + "getField(alarm,timeStamp,power{value,alarm}," + "current{value,alarm},voltage{value,alarm}," @@ -253,7 +254,7 @@ void testCreateRequest() { + "ps1{alarm,timeStamp,power{value,alarm},current{value,alarm},voltage{value,alarm}}" + ")"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << String("request") <getMessage() << endl; } @@ -288,13 +289,13 @@ void testCreateRequest() { request = "a{b{c{d}}}"; pvRequest = createRequest->createRequest(request); - if(debug) { cout << String("request") <getSubField("field.a.b.c.d")!=NULL); if(debug) {cout << pvRequest->dumpValue(cout) << endl;} testPass("request %s",request.c_str()); - request = String("record[process=true,xxx=yyy]") + request = string("record[process=true,xxx=yyy]") + "putField(power.value)" + "getField(alarm,timeStamp,power{value,alarm}," + "current{value,alarm},voltage{value,alarm}," @@ -302,14 +303,14 @@ void testCreateRequest() { + "ps1{alarm,timeStamp,power{value,alarm},current{value,alarm},voltage{value,alarm}" + ")"; if(debug) { cout << endl << "Error Expected for next call!!" << endl;} - if(debug) { cout << String("request") <createRequest(request); assert(pvRequest.get()==NULL); if(debug) {cout << "reason " << createRequest->getMessage() << endl;} testPass("request %s",request.c_str()); request = "record[process=true,power.value"; - if(debug) { cout << String("request") <createRequest(request); assert(pvRequest.get()==NULL); diff --git a/testApp/copy/testPVCopy.cpp b/testApp/copy/testPVCopy.cpp index b874e7c..fc2fc63 100644 --- a/testApp/copy/testPVCopy.cpp +++ b/testApp/copy/testPVCopy.cpp @@ -35,8 +35,8 @@ using namespace epics::pvData; static bool debug = true; static void testPVScalar( - String const & valueNameMaster, - String const & valueNameCopy, + string const & valueNameMaster, + string const & valueNameCopy, PVStructurePtr const & pvMaster, PVCopyPtr const & pvCopy) { @@ -45,7 +45,6 @@ static void testPVScalar( PVScalarPtr pvValueMaster; PVScalarPtr pvValueCopy; BitSetPtr bitSet; - String builder; size_t offset; ConvertPtr convert = getConvert(); @@ -53,8 +52,7 @@ static void testPVScalar( pvValueMaster = static_pointer_cast(pvField); convert->fromDouble(pvValueMaster,.04); StructureConstPtr structure = pvCopy->getStructure(); - builder.clear(); structure->toString(&builder); - if(debug) { cout << "structure from copy" << endl << builder << endl; } + if(debug) { cout << "structure from copy" << endl << *structure << endl; } pvStructureCopy = pvCopy->createPVStructure(); pvField = pvStructureCopy->getSubField(valueNameCopy); pvValueCopy = static_pointer_cast(pvField); @@ -68,24 +66,20 @@ static void testPVScalar( testOk1(convert->toDouble(pvValueCopy)==.06); testOk1(bitSet->get(pvValueCopy->getFieldOffset())); if(debug) { cout << "after put(.06) pvValueCopy " << convert->toDouble(pvValueCopy); } - builder.clear(); - bitSet->toString(&builder); - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } offset = pvCopy->getCopyOffset(pvValueMaster); if(debug) { cout << "getCopyOffset() " << offset; } if(debug) { cout << " pvValueCopy->getOffset() " << pvValueCopy->getFieldOffset(); } if(debug) { cout << " pvValueMaster->getOffset() " << pvValueMaster->getFieldOffset(); } - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } bitSet->clear(); convert->fromDouble(pvValueMaster,1.0); - builder.clear(); - bitSet->toString(&builder); if(debug) { cout << "before updateCopyFromBitSet"; } if(debug) { cout << " masterValue " << convert->toDouble(pvValueMaster); } if(debug) { cout << " copyValue " << convert->toDouble(pvValueCopy); } - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } bitSet->set(0); testOk1(convert->toDouble(pvValueCopy)==0.06); @@ -94,14 +88,14 @@ static void testPVScalar( if(debug) { cout << "after updateCopyFromBitSet"; } if(debug) { cout << " masterValue " << convert->toDouble(pvValueMaster); } if(debug) { cout << " copyValue " << convert->toDouble(pvValueCopy); } - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } convert->fromDouble(pvValueCopy,2.0); bitSet->set(0); if(debug) { cout << "before updateMaster"; } if(debug) { cout << " masterValue " << convert->toDouble(pvValueMaster); } if(debug) { cout << " copyValue " << convert->toDouble(pvValueCopy); } - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } testOk1(convert->toDouble(pvValueMaster)==1.0); pvCopy->updateMaster(pvStructureCopy,bitSet); @@ -109,14 +103,14 @@ static void testPVScalar( if(debug) { cout << "after updateMaster"; } if(debug) { cout << " masterValue " << convert->toDouble(pvValueMaster); } if(debug) { cout << " copyValue " << convert->toDouble(pvValueCopy); } - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } } static void testPVScalarArray( ScalarType scalarType, - String const & valueNameMaster, - String const & valueNameCopy, + string const & valueNameMaster, + string const & valueNameCopy, PVStructurePtr const & pvMaster, PVCopyPtr const & pvCopy) { @@ -124,7 +118,6 @@ static void testPVScalarArray( PVScalarArrayPtr pvValueMaster; PVScalarArrayPtr pvValueCopy; BitSetPtr bitSet; - String builder; size_t offset; size_t n = 5; shared_vector values(n); @@ -135,14 +128,12 @@ static void testPVScalarArray( const shared_vector xxx(freeze(values)); pvValueMaster->putFrom(xxx); StructureConstPtr structure = pvCopy->getStructure(); - builder.clear(); structure->toString(&builder); - if(debug) { cout << "structure from copy" << endl << builder << endl;} + if(debug) { cout << "structure from copy" << endl << *structure << endl;} pvStructureCopy = pvCopy->createPVStructure(); pvValueCopy = pvStructureCopy->getScalarArrayField(valueNameCopy,scalarType); bitSet = BitSetPtr(new BitSet(pvStructureCopy->getNumberFields())); pvCopy->initCopy(pvStructureCopy, bitSet); - builder.clear(); pvValueCopy->toString(&builder); - if(debug) { cout << "after initCopy pvValueCopy " << builder << endl; } + if(debug) { cout << "after initCopy pvValueCopy " << *pvValueCopy << endl; } if(debug) { cout << endl; } values.resize(n); for(size_t i=0; iupdateCopySetBitSet(pvStructureCopy,bitSet); pvValueCopy->getAs(cvalues); testOk1(cvalues[0]==0.06); - builder.clear(); pvValueCopy->toString(&builder); - if(debug) { cout << "after put(i+ .06) pvValueCopy " << builder << endl; } - builder.clear(); - bitSet->toString(&builder); - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << "after put(i+ .06) pvValueCopy " << *pvValueCopy << endl; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } offset = pvCopy->getCopyOffset(pvValueMaster); if(debug) { cout << "getCopyOffset() " << offset; } if(debug) { cout << " pvValueCopy->getOffset() " << pvValueCopy->getFieldOffset(); } if(debug) { cout << " pvValueMaster->getOffset() " << pvValueMaster->getFieldOffset(); } - builder.clear(); - bitSet->toString(&builder); - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } bitSet->clear(); values.resize(n); for(size_t i=0; i zzz(freeze(values)); pvValueMaster->putFrom(zzz); - builder.clear(); - bitSet->toString(&builder); if(debug) { cout << "before updateCopyFromBitSet"; } - builder.clear(); pvValueMaster->toString(&builder); - if(debug) { cout << " masterValue " << builder << endl; } - builder.clear(); pvValueCopy->toString(&builder); - if(debug) { cout << " copyValue " << builder << endl; } - if(debug) { cout << " bitSet " << builder; } - builder.clear(); - bitSet->toString(&builder); + if(debug) { cout << " masterValue " << *pvValueMaster << endl; } + if(debug) { cout << " copyValue " << *pvValueCopy << endl; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } bitSet->set(0); pvValueCopy->getAs(cvalues); @@ -190,13 +170,9 @@ static void testPVScalarArray( pvValueCopy->getAs(cvalues); testOk1(cvalues[0]==1.0); if(debug) { cout << "after updateCopyFromBitSet"; } - builder.clear(); pvValueMaster->toString(&builder); - if(debug) { cout << " masterValue " << builder << endl; } - builder.clear(); pvValueCopy->toString(&builder); - if(debug) { cout << " copyValue " << builder << endl; } - builder.clear(); - bitSet->toString(&builder); - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " masterValue " << *pvValueMaster << endl; } + if(debug) { cout << " copyValue " << *pvValueCopy << endl; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } values.resize(n); for(size_t i=0; iputFrom(ttt); bitSet->set(0); if(debug) { cout << "before updateMaster"; } - builder.clear(); pvValueMaster->toString(&builder); - if(debug) { cout << " masterValue " << builder << endl; } - builder.clear(); pvValueCopy->toString(&builder); - if(debug) { cout << " copyValue " << builder << endl; } - builder.clear(); - bitSet->toString(&builder); - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << " masterValue " << *pvValueMaster << endl; } + if(debug) { cout << " copyValue " << *pvValueCopy << endl; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } pvValueMaster->getAs(cvalues); testOk1(cvalues[0]==2.0); pvCopy->updateMaster(pvStructureCopy,bitSet); pvValueMaster->getAs(cvalues); testOk1(cvalues[0]==1.0); - if(debug) { cout << "after updateMaster"; } - builder.clear(); pvValueMaster->toString(&builder); - if(debug) { cout << " masterValue " << builder << endl; } - builder.clear(); pvValueCopy->toString(&builder); - if(debug) { cout << " copyValue " << builder << endl; } - builder.clear(); - bitSet->toString(&builder); - if(debug) { cout << " bitSet " << builder; } + if(debug) { cout << "before updateMaster"; } + if(debug) { cout << " masterValue " << *pvValueMaster << endl; } + if(debug) { cout << " copyValue " << *pvValueCopy << endl; } + if(debug) { cout << " bitSet " << *bitSet; } if(debug) { cout << endl; } } @@ -232,12 +200,12 @@ static void scalarTest() { if(debug) { cout << endl << endl << "****scalarTest****" << endl; } PVStructurePtr pvMaster; - String request; + string request; PVStructurePtr pvRequest; PVFieldPtr pvMasterField; PVCopyPtr pvCopy; - String valueNameMaster; - String valueNameCopy; + string valueNameMaster; + string valueNameCopy; StandardPVFieldPtr standardPVField = getStandardPVField(); pvMaster = standardPVField->scalar(pvDouble,"alarm,timeStamp,display"); @@ -272,12 +240,12 @@ static void arrayTest() { if(debug) { cout << endl << endl << "****arrayTest****" << endl; } PVStructurePtr pvMaster; - String request; + string request; PVStructurePtr pvRequest; PVFieldPtr pvMasterField; PVCopyPtr pvCopy; - String valueNameMaster; - String valueNameCopy; + string valueNameMaster; + string valueNameCopy; CreateRequest::shared_pointer createRequest = CreateRequest::create(); StandardPVFieldPtr standardPVField = getStandardPVField(); @@ -322,7 +290,7 @@ static PVStructurePtr createPowerSupply() powerSupply.push_back(standardField->alarm()); names.push_back("timeStamp"); powerSupply.push_back(standardField->timeStamp()); - String properties("alarm,display"); + string properties("alarm,display"); names.push_back("voltage"); powerSupply.push_back(standardField->scalar(pvDouble,properties)); names.push_back("power"); @@ -339,13 +307,13 @@ static void powerSupplyTest() { if(debug) { cout << endl << endl << "****powerSupplyTest****" << endl; } PVStructurePtr pvMaster; - String request; + string request; PVStructurePtr pvRequest; PVFieldPtr pvMasterField; PVCopyPtr pvCopy; - String builder; - String valueNameMaster; - String valueNameCopy; + string builder; + string valueNameMaster; + string valueNameCopy; CreateRequest::shared_pointer createRequest = CreateRequest::create(); pvMaster = createPowerSupply(); diff --git a/testApp/misc/testBitSet.cpp b/testApp/misc/testBitSet.cpp index 1118420..36fc645 100644 --- a/testApp/misc/testBitSet.cpp +++ b/testApp/misc/testBitSet.cpp @@ -12,12 +12,22 @@ #include #include #include +#include + #include #include #include using namespace epics::pvData; +using std::string; + +static string toString(BitSet& bitSet) +{ + std::ostringstream oss; + oss << bitSet; + return oss.str(); +} static void testGetSetClearFlip() { @@ -28,7 +38,7 @@ static void testGetSetClearFlip() testOk1(b1->isEmpty()); testOk1(b1->cardinality() == 0); // to string check - std::string str; b1->toString(&str); + string str = toString(*b1); testOk1(str == "{}"); // one @@ -37,7 +47,7 @@ static void testGetSetClearFlip() testOk1(!b1->isEmpty()); testOk1(b1->cardinality() == 1); // to string check - str.clear(); b1->toString(&str); + str = toString(*b1); testOk1(str == "{3}"); // grow @@ -45,34 +55,34 @@ static void testGetSetClearFlip() b1->set(67); b1->set(68); testOk1(b1->cardinality() == 4); - str.clear(); b1->toString(&str); + str = toString(*b1); testOk1(str == "{3, 66, 67, 68}"); // clear one b1->clear(67); testOk1(b1->cardinality() == 3); - str.clear(); b1->toString(&str); + str = toString(*b1); testOk1(str == "{3, 66, 68}"); // flip b1->flip(66); b1->flip(130); testOk1(b1->cardinality() == 3); - str.clear(); b1->toString(&str); + str = toString(*b1); testOk1(str == "{3, 68, 130}"); // flip b1->set(130, false); b1->set(4, true); testOk1(b1->cardinality() == 3); - str.clear(); b1->toString(&str); + str = toString(*b1); testOk1(str == "{3, 4, 68}"); // clear all b1->clear(); testOk1(b1->isEmpty()); testOk1(b1->cardinality() == 0); - str.clear(); b1->toString(&str); + str = toString(*b1); testOk1(str == "{}"); delete b1; @@ -101,11 +111,11 @@ static void testOperators() b2.set(106); b2.set(105); b1 |= b2; - std::string str; b1.toString(&str); + string str = toString(b1); testOk1(str == "{1, 65, 105, 106}"); b1.clear(); b1 |= b2; - str.clear(); b1.toString(&str); + str = toString(b1); testOk1(str == "{1, 65, 105, 106}"); // AND test @@ -134,7 +144,7 @@ static void testOperators() b2.clear(); b2.set(66); b2.set(128); BitSet b3; b3.set(128); b3.set(520); b1.or_and(b2, b3); - str.clear(); b1.toString(&str); + str = toString(b1); testOk1(str == "{2, 128}"); } diff --git a/testApp/misc/testByteBuffer.cpp b/testApp/misc/testByteBuffer.cpp index 69f6f40..bfd9929 100644 --- a/testApp/misc/testByteBuffer.cpp +++ b/testApp/misc/testByteBuffer.cpp @@ -21,6 +21,7 @@ #include using namespace epics::pvData; +using std::string; using std::cout; void testBasicOperations() { @@ -197,7 +198,7 @@ void testBasicOperations() { testOk1(buff->getPosition()==6); testOk1(strncmp(&src[2],&dst[2],6)==0); - cout<<" First 10 characters of destination: >>"<>"< using namespace epics::pvData; +using std::string; using std::cout; using std::endl; @@ -28,8 +29,8 @@ static StandardPVFieldPtr standardPVField = getStandardPVField(); void test() { - String buffer; - String properties("alarm,timeStamp,display"); + string buffer; + string properties("alarm,timeStamp,display"); PVStructurePtr pvStructure = standardPVField->scalar(pvDouble,properties); PVDoublePtr pvValue = pvStructure->getDoubleField("value"); uint32 valueOffset = (uint32) pvValue->getFieldOffset(); diff --git a/testApp/misc/testSerialization.cpp b/testApp/misc/testSerialization.cpp index 6c60b2a..2d4fbd4 100644 --- a/testApp/misc/testSerialization.cpp +++ b/testApp/misc/testSerialization.cpp @@ -51,6 +51,7 @@ #define DOUBLE_MIN_VALUE std::numeric_limits::min() using namespace epics::pvData; +using std::string; namespace { @@ -135,12 +136,10 @@ void serializationTest(PVFieldPtr const & field) { testPass("Serialization round trip OK"); else { testFail("Serialization round trip did not match!"); - std::string buf; - field->toString(&buf); - testDiag("Expected: %s", buf.c_str()); - buf.clear(); - deserializedField->toString(&buf); - testDiag("Found: %s", buf.c_str()); + std::ostringstream oss; + oss << "Expected: " << *field << std::endl; + oss << "Found : " << *deserializedField << std::endl; + testDiag("Found: %s", oss.str().c_str()); } } @@ -300,7 +299,7 @@ void testScalar() { serializationTest(pvString); // huge string test - pvString->put(String(10000, 'a')); + pvString->put(string(10000, 'a')); serializationTest(pvString); } @@ -347,7 +346,7 @@ static const float fdata[] = { (float)0.0, (float)1.1, (float)2.3, (float)-1.4, FLOAT_MAX_VALUE, FLOAT_MAX_VALUE-(float)123456.789, FLOAT_MIN_VALUE+(float)1.1, FLOAT_MIN_VALUE }; -static const String sdata[] = { +static const string sdata[] = { "", "a", "a b", @@ -355,7 +354,7 @@ static const String sdata[] = { "test", "smile", "this is a little longer string... maybe a little but longer... this makes test better", - String(10000, 'b') + string(10000, 'b') }; void testArray() { @@ -701,10 +700,10 @@ void testIntrospectionSerialization() } void testStringCopy() { - String s1 = "abc"; - String s2 = s1; + string s1 = "abc"; + string s2 = s1; if (s1.c_str() != s2.c_str()) - testDiag("implementation of epics::pvData::String assignment operator does not share content"); + testDiag("implementation of string assignment operator does not share content"); } } // end namespace diff --git a/testApp/misc/testSharedVector.cpp b/testApp/misc/testSharedVector.cpp index 1d8f731..fc7666e 100644 --- a/testApp/misc/testSharedVector.cpp +++ b/testApp/misc/testSharedVector.cpp @@ -18,6 +18,8 @@ #include "pv/sharedVector.h" +using std::string; + static void testEmpty() { testDiag("Test empty vector"); @@ -376,7 +378,7 @@ static void testNonPOD() { testDiag("Test vector of non-POD types"); - epics::pvData::shared_vector strings(6); + epics::pvData::shared_vector strings(6); epics::pvData::shared_vector > structs(5); testOk1(strings[0].empty()); @@ -406,7 +408,7 @@ static void testVectorConvert() epics::pvData::shared_vector ints(6, 42), moreints; epics::pvData::shared_vector floats; - epics::pvData::shared_vector strings; + epics::pvData::shared_vector strings; epics::pvData::shared_vector voids; testOk1(ints.unique()); @@ -435,7 +437,7 @@ static void testVectorConvert() // convert from void uses shared_vector::original_type() // to find that the actual type is 'int'. // returns a new vector - strings = epics::pvData::shared_vector_convert(voids); + strings = epics::pvData::shared_vector_convert(voids); voids.clear(); diff --git a/testApp/misc/testThread.cpp b/testApp/misc/testThread.cpp index f3993e8..189149f 100644 --- a/testApp/misc/testThread.cpp +++ b/testApp/misc/testThread.cpp @@ -27,8 +27,9 @@ #include using namespace epics::pvData; +using std::string; -static String actionName("action"); +static string actionName("action"); class Action; typedef std::tr1::shared_ptr ActionPtr; @@ -101,7 +102,7 @@ private: typedef std::tr1::shared_ptr BasicPtr; static void testBasic() { - ExecutorPtr executor(new Executor(String("basic"),middlePriority)); + ExecutorPtr executor(new Executor(string("basic"),middlePriority)); BasicPtr basic( new Basic(executor)); basic->run(); printf("testBasic PASSED\n"); @@ -130,7 +131,7 @@ typedef std::tr1::shared_ptr MyFuncPtr; #ifdef TESTTHREADCONTEXT static void testThreadContext() { - ExecutorPtr executor(new Executor(String("basic"),middlePriority)); + ExecutorPtr executor(new Executor(string("basic"),middlePriority)); BasicPtr basic(new Basic(executor)); MyFuncPtr myFunc(new MyFunc(basic)); TimeFunctionPtr timeFunction(new TimeFunction(myFunc)); diff --git a/testApp/misc/testTimer.cpp b/testApp/misc/testTimer.cpp index 1e1b550..5f5f122 100644 --- a/testApp/misc/testTimer.cpp +++ b/testApp/misc/testTimer.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -25,6 +26,7 @@ #include using namespace epics::pvData; +using std::string; static TimeStamp currentTimeStamp; static double oneDelay = 4.0; @@ -39,7 +41,7 @@ typedef std::tr1::shared_ptr MyCallbackPtr; class MyCallback : public TimerCallback { public: POINTER_DEFINITIONS(MyCallback); - MyCallback(String name,EventPtr const & wait) + MyCallback(string name,EventPtr const & wait) : name(name), wait(wait) { @@ -58,7 +60,7 @@ public: } TimeStamp &getTimeStamp() { return timeStamp;} private: - String name; + string name; EventPtr wait; TimeStamp timeStamp; }; @@ -69,13 +71,13 @@ static void testBasic() printf("\n\ntestBasic oneDelay %lf twoDelay %lf threeDaley %lf\n", oneDelay,twoDelay,threeDelay); } - String one("one"); - String two("two"); - String three("three"); + string one("one"); + string two("two"); + string three("three"); EventPtr eventOne(new Event()); EventPtr eventTwo(new Event()); EventPtr eventThree(new Event()); - TimerPtr timer(new Timer(String("timer"),middlePriority)); + TimerPtr timer(new Timer(string("timer"),middlePriority)); MyCallbackPtr callbackOne(new MyCallback(one,eventOne)); MyCallbackPtr callbackTwo(new MyCallback(two,eventTwo)); MyCallbackPtr callbackThree(new MyCallback(three,eventThree)); @@ -91,9 +93,8 @@ static void testBasic() if(twoDelay>.1) testOk1(timer->isScheduled(callbackTwo)); if(threeDelay>.1) testOk1(timer->isScheduled(callbackThree)); if(debug) { - String builder; - timer->toString(&builder); - printf("timerQueue\n%s",builder.c_str()); + std::cout << "timerQueue" << std::endl; + std::cout << *timer; } eventOne->wait(); eventTwo->wait(); @@ -137,13 +138,13 @@ static void testCancel() printf("\n\ntestCancel oneDelay %lf twoDelay %lf threeDaley %lf\n", oneDelay,twoDelay,threeDelay); } - String one("one"); - String two("two"); - String three("three"); + string one("one"); + string two("two"); + string three("three"); EventPtr eventOne(new Event()); EventPtr eventTwo(new Event()); EventPtr eventThree(new Event()); - TimerPtr timer(new Timer(String("timer"),middlePriority)); + TimerPtr timer(new Timer(string("timer"),middlePriority)); MyCallbackPtr callbackOne(new MyCallback(one,eventOne)); MyCallbackPtr callbackTwo(new MyCallback(two,eventTwo)); MyCallbackPtr callbackThree(new MyCallback(three,eventThree)); @@ -160,9 +161,8 @@ static void testCancel() testOk1(!timer->isScheduled(callbackTwo)); if(threeDelay>.1) testOk1(timer->isScheduled(callbackThree)); if(debug) { - String builder; - timer->toString(&builder); - printf("timerQueue\n%s",builder.c_str()); + std::cout << "timerQueue" << std::endl; + std::cout << *timer; } eventOne->wait(); eventThree->wait(); diff --git a/testApp/misc/testTypeCast.cpp b/testApp/misc/testTypeCast.cpp index 71ef611..efd46d8 100644 --- a/testApp/misc/testTypeCast.cpp +++ b/testApp/misc/testTypeCast.cpp @@ -27,7 +27,7 @@ #include "pv/typeCast.h" -using epics::pvData::String; +using std::string; namespace { @@ -131,11 +131,11 @@ try { uint64_t xuint64=0; float xfloat=0.0; double xdouble=0.0; - epics::pvData::String xString("0"); + string xstring("0"); typedef float float_t; typedef double double_t; - typedef epics::pvData::String String_t; + typedef string string_t; // force all possibilities to be compiled #define CHECK(M, N) x## M = ::epics::pvData::castUnsafe(x## N); \ @@ -151,7 +151,7 @@ try { CHECK(int8, uint64); CHECK(int8, float); CHECK(int8, double); - CHECK(int8, String); + CHECK(int8, string); CHECK(uint8, int8); CHECK(uint8, uint8); @@ -163,7 +163,7 @@ try { CHECK(uint8, uint64); CHECK(uint8, float); CHECK(uint8, double); - CHECK(uint8, String); + CHECK(uint8, string); CHECK(int16, int8); CHECK(int16, uint8); @@ -175,7 +175,7 @@ try { CHECK(int16, uint64); CHECK(int16, float); CHECK(int16, double); - CHECK(int16, String); + CHECK(int16, string); CHECK(uint16, int8); CHECK(uint16, uint8); @@ -187,7 +187,7 @@ try { CHECK(uint16, uint64); CHECK(uint16, float); CHECK(uint16, double); - CHECK(uint16, String); + CHECK(uint16, string); CHECK(int32, int8); CHECK(int32, uint8); @@ -199,7 +199,7 @@ try { CHECK(int32, uint64); CHECK(int32, float); CHECK(int32, double); - CHECK(int32, String); + CHECK(int32, string); CHECK(uint32, int8); CHECK(uint32, uint8); @@ -211,7 +211,7 @@ try { CHECK(uint32, uint64); CHECK(uint32, float); CHECK(uint32, double); - CHECK(uint32, String); + CHECK(uint32, string); CHECK(int64, int8); CHECK(int64, uint8); @@ -223,7 +223,7 @@ try { CHECK(int64, uint64); CHECK(int64, float); CHECK(int64, double); - //CHECK(int64, String); + //CHECK(int64, string); CHECK(uint64, int8); CHECK(uint64, uint8); @@ -235,7 +235,7 @@ try { CHECK(uint64, uint64); CHECK(uint64, float); CHECK(uint64, double); - //CHECK(uint64, String); + //CHECK(uint64, string); CHECK(float, int8); CHECK(float, uint8); @@ -247,7 +247,7 @@ try { CHECK(float, uint64); CHECK(float, float); CHECK(float, double); - CHECK(float, String); + CHECK(float, string); CHECK(double, int8); CHECK(double, uint8); @@ -259,19 +259,19 @@ try { CHECK(double, uint64); CHECK(double, float); CHECK(double, double); - CHECK(double, String); + CHECK(double, string); - CHECK(String, int8); - CHECK(String, uint8); - CHECK(String, int16); - CHECK(String, uint16); - CHECK(String, int32); - CHECK(String, uint32); - CHECK(String, int64); - CHECK(String, uint64); - CHECK(String, float); - CHECK(String, double); - CHECK(String, String); + CHECK(string, int8); + CHECK(string, uint8); + CHECK(string, int16); + CHECK(string, uint16); + CHECK(string, int32); + CHECK(string, uint32); + CHECK(string, int64); + CHECK(string, uint64); + CHECK(string, float); + CHECK(string, double); + CHECK(string, string); #undef CHECK testDiag("Integer signed <=> unsigned"); @@ -309,91 +309,91 @@ try { TEST(int32_t, -2, float, -2.5f); TEST(int32_t, -2, float, -2.7f); - testDiag("String Printing/parsing"); + testDiag("string Printing/parsing"); - TEST2(String, "1", int32_t, 1); - TEST2(String, "-1", int32_t, -1); - TEST2(String, "1", int8_t, 1); - TEST2(String, "-1", int8_t, -1); - TEST2(String, "1", uint8_t, 1); + TEST2(string, "1", int32_t, 1); + TEST2(string, "-1", int32_t, -1); + TEST2(string, "1", int8_t, 1); + TEST2(string, "-1", int8_t, -1); + TEST2(string, "1", uint8_t, 1); - TEST2(String, "127", int32_t, std::numeric_limits::max()); - TEST2(String, "-128", int32_t, std::numeric_limits::min()); - TEST2(String, "255", int32_t, std::numeric_limits::max()); + TEST2(string, "127", int32_t, std::numeric_limits::max()); + TEST2(string, "-128", int32_t, std::numeric_limits::min()); + TEST2(string, "255", int32_t, std::numeric_limits::max()); - TEST2(String, "32767", int32_t, std::numeric_limits::max()); - TEST2(String, "-32768", int32_t, std::numeric_limits::min()); - TEST2(String, "65535", int32_t, std::numeric_limits::max()); + TEST2(string, "32767", int32_t, std::numeric_limits::max()); + TEST2(string, "-32768", int32_t, std::numeric_limits::min()); + TEST2(string, "65535", int32_t, std::numeric_limits::max()); - TEST2(String, "2147483647", int32_t, std::numeric_limits::max()); - TEST2(String, "-2147483648", int32_t, std::numeric_limits::min()); - TEST2(String, "4294967295", uint32_t, std::numeric_limits::max()); + TEST2(string, "2147483647", int32_t, std::numeric_limits::max()); + TEST2(string, "-2147483648", int32_t, std::numeric_limits::min()); + TEST2(string, "4294967295", uint32_t, std::numeric_limits::max()); - TEST2(String, "9223372036854775807", int64_t, std::numeric_limits::max()); - TEST2(String, "-9223372036854775808", int64_t, std::numeric_limits::min()); - TEST2(String, "18446744073709551615", uint64_t, std::numeric_limits::max()); + TEST2(string, "9223372036854775807", int64_t, std::numeric_limits::max()); + TEST2(string, "-9223372036854775808", int64_t, std::numeric_limits::min()); + TEST2(string, "18446744073709551615", uint64_t, std::numeric_limits::max()); - TEST2(String, "1.1", double, 1.1); - TEST2(String, "1.1e+100", double, 1.1e100); - TEST2(String, "1.1e-100", double, 1.1e-100); + TEST2(string, "1.1", double, 1.1); + TEST2(string, "1.1e+100", double, 1.1e100); + TEST2(string, "1.1e-100", double, 1.1e-100); - TEST(double, 1.1e100, String, "1.1E+100"); + TEST(double, 1.1e100, string, "1.1E+100"); // any non-zero value is true - TEST(String, "true", epics::pvData::boolean, 100); + TEST(string, "true", epics::pvData::boolean, 100); - TEST2(String, "true", epics::pvData::boolean, 1); - TEST2(String, "false", epics::pvData::boolean, 0); + TEST2(string, "true", epics::pvData::boolean, 1); + TEST2(string, "false", epics::pvData::boolean, 0); // Case insensitive - TEST(epics::pvData::boolean, 1, String, "True"); - TEST(epics::pvData::boolean, 0, String, "False"); - TEST(epics::pvData::boolean, 1, String, "TRUE"); - TEST(epics::pvData::boolean, 0, String, "FALSE"); + TEST(epics::pvData::boolean, 1, string, "True"); + TEST(epics::pvData::boolean, 0, string, "False"); + TEST(epics::pvData::boolean, 1, string, "TRUE"); + TEST(epics::pvData::boolean, 0, string, "FALSE"); - testDiag("String Parsing"); + testDiag("string Parsing"); - TEST(int32_t, 15, String, "0xf"); - TEST(int32_t, 15, String, "0xF"); - TEST(int32_t, -15, String, "-0xF"); - TEST(int32_t, 16, String, "0x10"); - TEST(int32_t, -16, String, "-0x10"); + TEST(int32_t, 15, string, "0xf"); + TEST(int32_t, 15, string, "0xF"); + TEST(int32_t, -15, string, "-0xF"); + TEST(int32_t, 16, string, "0x10"); + TEST(int32_t, -16, string, "-0x10"); - TEST(int32_t, 7, String, "07"); - TEST(int32_t, 8, String, "010"); - TEST(int32_t, -7, String, "-07"); - TEST(int32_t, -8, String, "-010"); + TEST(int32_t, 7, string, "07"); + TEST(int32_t, 8, string, "010"); + TEST(int32_t, -7, string, "-07"); + TEST(int32_t, -8, string, "-010"); - TEST(int64_t, 15, String, "0xf"); - TEST(int64_t, 15, String, "0xF"); - TEST(int64_t, -15, String, "-0xF"); - TEST(int64_t, 16, String, "0x10"); - TEST(int64_t, -16, String, "-0x10"); + TEST(int64_t, 15, string, "0xf"); + TEST(int64_t, 15, string, "0xF"); + TEST(int64_t, -15, string, "-0xF"); + TEST(int64_t, 16, string, "0x10"); + TEST(int64_t, -16, string, "-0x10"); - TEST(int64_t, 7, String, "07"); - TEST(int64_t, 8, String, "010"); - TEST(int64_t, -7, String, "-07"); - TEST(int64_t, -8, String, "-010"); + TEST(int64_t, 7, string, "07"); + TEST(int64_t, 8, string, "010"); + TEST(int64_t, -7, string, "-07"); + TEST(int64_t, -8, string, "-010"); - testDiag("String parsing errors"); + testDiag("string parsing errors"); - FAIL(int32_t, String, "hello!"); - FAIL(int32_t, String, "42 is the answer"); - FAIL(int64_t, String, "hello!"); - FAIL(int64_t, String, "42 is the answer"); - FAIL(double, String, "hello!"); - FAIL(double, String, "42 is the answer"); + FAIL(int32_t, string, "hello!"); + FAIL(int32_t, string, "42 is the answer"); + FAIL(int64_t, string, "hello!"); + FAIL(int64_t, string, "42 is the answer"); + FAIL(double, string, "hello!"); + FAIL(double, string, "42 is the answer"); - FAIL(int8_t, String, "1000"); - FAIL(int8_t, String, "-1000"); + FAIL(int8_t, string, "1000"); + FAIL(int8_t, string, "-1000"); - FAIL(double, String, "1e+10000000"); + FAIL(double, string, "1e+10000000"); - FAIL(epics::pvData::boolean, String, "hello"); - FAIL(epics::pvData::boolean, String, "1"); - FAIL(epics::pvData::boolean, String, "0"); - FAIL(epics::pvData::boolean, String, "T"); - FAIL(epics::pvData::boolean, String, "F"); + FAIL(epics::pvData::boolean, string, "hello"); + FAIL(epics::pvData::boolean, string, "1"); + FAIL(epics::pvData::boolean, string, "0"); + FAIL(epics::pvData::boolean, string, "T"); + FAIL(epics::pvData::boolean, string, "F"); testDiag("Floating point overflows"); @@ -406,10 +406,10 @@ try { testOk(isnan( xfloat ), "Test cast double NAN to float NAN yields: %f", xfloat); { - std::string result[3]; + string result[3]; const int32_t in[3] = { 1234, 506001, 42424242 }; - testDiag("Test vcast int32 -> String"); + testDiag("Test vcast int32 -> string"); epics::pvData::castUnsafeV(3, epics::pvData::pvString, (void*)result, epics::pvData::pvInt, (void*)in); testDiag("Yields %s %s %s", result[0].c_str(), result[1].c_str(), result[2].c_str()); diff --git a/testApp/property/testProperty.cpp b/testApp/property/testProperty.cpp index b51b222..a00ee56 100644 --- a/testApp/property/testProperty.cpp +++ b/testApp/property/testProperty.cpp @@ -33,6 +33,7 @@ #include using namespace epics::pvData; +using std::string; static bool debug = false; @@ -41,9 +42,8 @@ static PVDataCreatePtr pvDataCreate; static StandardFieldPtr standardField; static StandardPVFieldPtr standardPVField; static ConvertPtr convert; -static String builder; -static String alarmTimeStamp("alarm,timeStamp"); -static String allProperties("alarm,timeStamp,display,control"); +static string alarmTimeStamp("alarm,timeStamp"); +static string allProperties("alarm,timeStamp,display,control"); static PVStructurePtr doubleRecord; static PVStructurePtr enumeratedRecord; @@ -51,11 +51,8 @@ static PVStructurePtr enumeratedRecord; static void createRecords() { doubleRecord = standardPVField->scalar(pvDouble,allProperties); - if(debug) { - builder.clear(); - doubleRecord->toString(&builder); - printf("doubleRecord\n%s\n",builder.c_str()); - } + if(debug) + std::cout << "doubleRecord" << std::endl << *doubleRecord << std::endl; StringArray choices; choices.reserve(4); choices.push_back("1"); @@ -63,23 +60,14 @@ static void createRecords() choices.push_back("3"); choices.push_back("4"); enumeratedRecord = standardPVField->enumerated(choices,alarmTimeStamp); - if(debug) { - builder.clear(); - enumeratedRecord->toString(&builder); - printf("enumeratedRecord\n%s\n",builder.c_str()); - } + if(debug) + std::cout << "enumeratedRecord" << std::endl << *doubleRecord << std::endl; } static void printRecords() { - printf("doubleRecord\n"); - builder.clear(); - doubleRecord->toString(&builder); - printf("%s\n",builder.c_str()); - printf("enumeratedRecord\n"); - builder.clear(); - enumeratedRecord->toString(&builder); - printf("%s\n",builder.c_str()); + std::cout << "doubleRecord" << std::endl << *doubleRecord << std::endl; + std::cout << "enumeratedRecord" << std::endl << *doubleRecord << std::endl; } static void testAlarm() @@ -88,7 +76,7 @@ static void testAlarm() Alarm alarm; PVAlarm pvAlarm; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(String("alarm")); + PVFieldPtr pvField = doubleRecord->getSubField(string("alarm")); if(pvField.get()==NULL) { printf("testAlarm ERROR did not find field alarm\n"); return; @@ -96,7 +84,7 @@ static void testAlarm() result = pvAlarm.attach(pvField); testOk1(result); Alarm al; - al.setMessage(String("testMessage")); + al.setMessage(string("testMessage")); al.setSeverity(majorAlarm); al.setStatus(clientStatus); result = pvAlarm.set(al); @@ -105,9 +93,9 @@ static void testAlarm() testOk1(al.getMessage().compare(alarm.getMessage())==0); testOk1(al.getSeverity()==alarm.getSeverity()); testOk1(al.getStatus()==alarm.getStatus()); - String message = alarm.getMessage(); - String severity = (*AlarmSeverityFunc::getSeverityNames())[alarm.getSeverity()]; - String status = (*AlarmStatusFunc::getStatusNames())[alarm.getStatus()]; + string message = alarm.getMessage(); + string severity = (*AlarmSeverityFunc::getSeverityNames())[alarm.getSeverity()]; + string status = (*AlarmStatusFunc::getStatusNames())[alarm.getStatus()]; if(debug) { printf(" message %s severity %s status %s\n", message.c_str(),severity.c_str(),status.c_str()); @@ -121,7 +109,7 @@ static void testTimeStamp() TimeStamp timeStamp; PVTimeStamp pvTimeStamp; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(String("timeStamp")); + PVFieldPtr pvField = doubleRecord->getSubField(string("timeStamp")); if(pvField.get()==NULL) { printf("testTimeStamp ERROR did not find field timeStamp\n"); return; @@ -161,7 +149,7 @@ static void testControl() Control control; PVControl pvControl; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(String("control")); + PVFieldPtr pvField = doubleRecord->getSubField(string("control")); if(pvField.get()==NULL) { printf("testControl ERROR did not find field control\n"); return; @@ -188,7 +176,7 @@ static void testDisplay() Display display; PVDisplay pvDisplay; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(String("display")); + PVFieldPtr pvField = doubleRecord->getSubField(string("display")); if(pvField.get()==NULL) { printf("testDisplay ERROR did not find field display\n"); return; @@ -198,9 +186,9 @@ static void testDisplay() Display dy; dy.setLow(-10.0); dy.setHigh(-1.0); - dy.setDescription(String("testDescription")); - dy.setFormat(String("%f10.0")); - dy.setUnits(String("volts")); + dy.setDescription(string("testDescription")); + dy.setFormat(string("%f10.0")); + dy.setUnits(string("volts")); result = pvDisplay.set(dy); testOk1(result); pvDisplay.get(display); @@ -220,7 +208,7 @@ static void testEnumerated() if(debug) printf("testEnumerated\n"); PVEnumerated pvEnumerated; bool result; - PVFieldPtr pvField = enumeratedRecord->getSubField(String("value")); + PVFieldPtr pvField = enumeratedRecord->getSubField(string("value")); if(pvField.get()==NULL) { printf("testEnumerated ERROR did not find field enumerated\n"); return; @@ -228,7 +216,7 @@ static void testEnumerated() result = pvEnumerated.attach(pvField); testOk1(result); int32 index = pvEnumerated.getIndex(); - String choice = pvEnumerated.getChoice(); + string choice = pvEnumerated.getChoice(); PVStringArray::const_svector choices = pvEnumerated.getChoices(); int32 numChoices = pvEnumerated.getNumberChoices(); if(debug) { diff --git a/testApp/pv/testBitSetUtil.cpp b/testApp/pv/testBitSetUtil.cpp index 543684f..e17ba0d 100644 --- a/testApp/pv/testBitSetUtil.cpp +++ b/testApp/pv/testBitSetUtil.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -22,6 +23,7 @@ #include using namespace epics::pvData; +using std::string; using std::tr1::static_pointer_cast; static bool debug = false; @@ -31,10 +33,11 @@ static PVDataCreatePtr pvDataCreate; static StandardFieldPtr standardField; static StandardPVFieldPtr standardPVField; static ConvertPtr convert; -static String builder(""); static void test() { + std::ostringstream oss; + if(debug) printf("\ntestBitSetUtil\n"); StringArray fieldNames; PVFieldPtrArray pvFields; @@ -60,19 +63,28 @@ static void test() standardField->scalar(pvDouble,"alarm"))); PVStructurePtr pvs = pvDataCreate->createPVStructure( fieldNames,pvFields); - builder.clear(); - pvs->toString(&builder); - if(debug) printf("pvs\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "pvs" << std::endl; + oss << *pvs << std::endl; + std::cout << oss.str(); + } int32 nfields = (int32)pvs->getNumberFields(); BitSetPtr bitSet = BitSet::create(nfields); for(int32 i=0; iset(i); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } BitSetUtil::compress(bitSet,pvs); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } bitSet->clear(); PVFieldPtr pvField = pvs->getSubField("timeStamp"); int32 offsetTimeStamp = (int32)pvField->getFieldOffset(); @@ -87,15 +99,21 @@ static void test() testOk1(bitSet->get(offsetSeconds)==true); bitSet->set(offsetNano); bitSet->set(offsetUserTag); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } BitSetUtil::compress(bitSet,pvs); testOk1(bitSet->get(offsetSeconds)==false); testOk1(bitSet->get(offsetTimeStamp)==true); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } bitSet->clear(); pvField = pvs->getSubField("current"); @@ -114,25 +132,37 @@ static void test() bitSet->set(offsetSeverity); bitSet->set(offsetStatus); bitSet->set(offsetMessage); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } BitSetUtil::compress(bitSet,pvs); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } testOk1(bitSet->get(offsetCurrent)==true); bitSet->clear(); bitSet->set(offsetSeverity); bitSet->set(offsetStatus); bitSet->set(offsetMessage); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } BitSetUtil::compress(bitSet,pvs); - builder.clear(); - bitSet->toString(&builder); - if(debug) printf("bitSet\n%s\n",builder.c_str()); + if(debug) { + oss.clear(); + oss << "bitSet" << std::endl; + oss << *bitSet << std::endl; + std::cout << oss.str(); + } testOk1(bitSet->get(offsetAlarm)==true); bitSet->clear(); printf("testBitSetUtil PASSED\n"); diff --git a/testApp/pv/testFieldBuilder.cpp b/testApp/pv/testFieldBuilder.cpp index ab5a765..669de07 100644 --- a/testApp/pv/testFieldBuilder.cpp +++ b/testApp/pv/testFieldBuilder.cpp @@ -31,7 +31,7 @@ void test_structure() FieldBuilderPtr fb = fieldCreate->createFieldBuilder(); // test with simple (non-nested) structure - std::string ID = "testStructureID"; + string ID = "testStructureID"; StructureConstPtr s = fb->setId(ID)-> add("double", pvDouble)-> addArray("intArray", pvInt)-> @@ -116,7 +116,7 @@ void test_nestedStructure() FieldCreatePtr fieldCreate = getFieldCreate(); - std::string NESTED_ID = "nestedID"; + string NESTED_ID = "nestedID"; StructureConstPtr s = fieldCreate->createFieldBuilder()-> add("double", pvDouble)-> addNestedStructure("nested")-> @@ -172,7 +172,7 @@ void test_nestedStructureArray() FieldCreatePtr fieldCreate = getFieldCreate(); - std::string NESTED_ID = "nestedID"; + string NESTED_ID = "nestedID"; StructureConstPtr s = fieldCreate->createFieldBuilder()-> add("double", pvDouble)-> addNestedStructureArray("nested")-> diff --git a/testApp/pv/testIntrospect.cpp b/testApp/pv/testIntrospect.cpp index c4e566f..aeb5186 100644 --- a/testApp/pv/testIntrospect.cpp +++ b/testApp/pv/testIntrospect.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -21,6 +22,7 @@ #include using namespace epics::pvData; +using std::string; static FieldCreatePtr fieldCreate; static PVDataCreatePtr pvDataCreate; @@ -29,13 +31,14 @@ static StandardFieldPtr standardField; static void testScalarCommon(ScalarType stype, bool isInteger,bool isNumeric,bool isPrimitive) { - String builder; ScalarConstPtr pscalar = fieldCreate->createScalar(stype); Type type = pscalar->getType(); testOk1(type==scalar); - builder.clear(); - TypeFunc::toString(&builder,type); - testOk1(builder.compare("scalar")==0); + + std::ostringstream oss; + oss << type; + testOk1(oss.str().compare("scalar")==0); + ScalarType scalarType = pscalar->getScalarType(); testOk1(scalarType==stype); testOk1(ScalarTypeFunc::isInteger(scalarType)==isInteger); @@ -58,13 +61,14 @@ static void testScalar() { static void testScalarArrayCommon(ScalarType stype, bool isInteger,bool isNumeric,bool isPrimitive) { - String builder; ScalarArrayConstPtr pscalar = fieldCreate->createScalarArray(stype); Type type = pscalar->getType(); testOk1(type==scalarArray); - builder.clear(); - TypeFunc::toString(&builder,type); - testOk1(builder.compare("scalarArray")==0); + + std::ostringstream oss; + oss << type; + testOk1(oss.str().compare("scalarArray")==0); + ScalarType scalarType = pscalar->getElementType(); testOk1(scalarType==stype); testOk1(ScalarTypeFunc::isInteger(scalarType)==isInteger); @@ -246,7 +250,7 @@ static void testMapping() OP(uint64, pvULong) OP(float, pvFloat) OP(double, pvDouble) - OP(String, pvString) + OP(string, pvString) #undef OP testOk1((ScalarType)ScalarTypeID::value==(ScalarType)-1); diff --git a/testApp/pv/testOperators.cpp b/testApp/pv/testOperators.cpp index a614737..4660fd6 100644 --- a/testApp/pv/testOperators.cpp +++ b/testApp/pv/testOperators.cpp @@ -11,11 +11,13 @@ #include #include #include +#include #include #include using namespace epics::pvData; +using std::string; static PVDataCreatePtr pvDataCreate = getPVDataCreate(); static StandardFieldPtr standardField = getStandardField(); @@ -37,12 +39,12 @@ MAIN(testOperators) testOk1(testDV == dv); - const std::string testSV = "test message"; + const string testSV = "test message"; PVStringPtr pvMessage = pvStructure->getStringField("alarm.message"); *pvMessage <<= testSV; - std::string sv; + string sv; *pvMessage >>= sv; testOk1(testSV == sv); @@ -54,6 +56,10 @@ MAIN(testOperators) std::cout << *pvMessage << std::endl; std::cout << *pvStructure << std::endl; + std::cout << *pvStructure->getStructure() << std::endl; + + std::cout << Status::Ok << std::endl; + std::cout << Status::STATUSTYPE_OK << std::endl; StringArray choices; choices.reserve(3); diff --git a/testApp/pv/testPVData.cpp b/testApp/pv/testPVData.cpp index 0468293..60fcfc4 100644 --- a/testApp/pv/testPVData.cpp +++ b/testApp/pv/testPVData.cpp @@ -24,6 +24,7 @@ using namespace epics::pvData; using std::tr1::static_pointer_cast; +using std::string; using std::cout; using std::endl; @@ -34,14 +35,14 @@ static PVDataCreatePtr pvDataCreate; static StandardFieldPtr standardField; static StandardPVFieldPtr standardPVField; static ConvertPtr convert; -static String builder(""); -static String alarmTimeStamp("alarm,timeStamp"); -static String alarmTimeStampValueAlarm("alarm,timeStamp,valueAlarm"); -static String allProperties("alarm,timeStamp,display,control,valueAlarm"); +static string alarmTimeStamp("alarm,timeStamp"); +static string alarmTimeStampValueAlarm("alarm,timeStamp,valueAlarm"); +static string allProperties("alarm,timeStamp,display,control,valueAlarm"); static void testCreatePVStructure() { - if(debug) printf("\ntestCreatePVStructure\n"); + if(debug) + std::cout << std::endl << "testCreatePVStructure" << std::endl; PVStructurePtr pv0 = standardPVField->scalar( pvDouble,alarmTimeStampValueAlarm); PVScalarPtr pv1 = pvDataCreate->createPVScalar(pvString); @@ -55,27 +56,27 @@ static void testCreatePVStructure() pvFields.push_back(pv1); PVStructurePtr pvParent = pvDataCreate->createPVStructure( fieldNames,pvFields); - builder.clear(); - pvParent->toString(&builder); - if(debug) printf("%s\n",builder.c_str()); - printf("testCreatePVStructure PASSED\n"); + + if(debug) + std::cout << *pvParent << std::endl; + + std::cout << "testCreatePVStructure PASSED" << std::endl; } -static void testPVScalarCommon(String /*fieldName*/,ScalarType stype) +static void testPVScalarCommon(string /*fieldName*/,ScalarType stype) { PVScalarPtr pvScalar = pvDataCreate->createPVScalar(stype); if(stype==pvBoolean) { - convert->fromString(pvScalar,String("true")); + convert->fromString(pvScalar,string("true")); } else { - convert->fromString(pvScalar,String("10")); + convert->fromString(pvScalar,string("10")); } - builder.clear(); - pvScalar->toString(&builder); - if(debug) printf("%s\n",builder.c_str()); + if(debug) + std::cout << *pvScalar << std::endl; } static void testPVScalarWithProperties( - String /*fieldName*/,ScalarType stype) + string /*fieldName*/,ScalarType stype) { PVStructurePtr pvStructure; bool hasValueAlarm = false; @@ -190,137 +191,138 @@ static void testPVScalarWithProperties( pvStructure = standardPVField->scalar( stype,alarmTimeStamp); PVStringPtr pvField = pvStructure->getStringField("value"); - pvField->put(String("this is a string")); + pvField->put(string("this is a string")); break; } } PVLongPtr seconds = pvStructure->getLongField( - String("timeStamp.secondsPastEpoch")); + string("timeStamp.secondsPastEpoch")); testOk1(seconds!=0); seconds->put(123456789); - PVIntPtr nano = pvStructure->getIntField(String("timeStamp.nanoSeconds")); + PVIntPtr nano = pvStructure->getIntField(string("timeStamp.nanoSeconds")); testOk1(nano!=0); nano->put(1000000); - PVIntPtr severity = pvStructure->getIntField(String("alarm.severity")); + PVIntPtr severity = pvStructure->getIntField(string("alarm.severity")); testOk1(severity!=0); severity->put(2); - PVStringPtr message = pvStructure->getStringField(String("alarm.message")); + PVStringPtr message = pvStructure->getStringField(string("alarm.message")); testOk1(message!=0); - message->put(String("messageForAlarm")); + message->put(string("messageForAlarm")); if(hasDisplayControl) { PVStringPtr desc = pvStructure->getStringField( - String("display.description")); + string("display.description")); testOk1(desc!=0); - desc->put(String("this is a description")); + desc->put(string("this is a description")); PVStringPtr format = pvStructure->getStringField( - String("display.format")); + string("display.format")); testOk1(format!=0); - format->put(String("f10.2")); + format->put(string("f10.2")); PVStringPtr units = pvStructure->getStringField( - String("display.units")); + string("display.units")); testOk1(units!=0); - units->put(String("SomeUnits")); + units->put(string("SomeUnits")); PVDoublePtr limit = pvStructure->getDoubleField( - String("display.limitLow")); + string("display.limitLow")); testOk1(limit!=0); limit->put(0.0); limit = pvStructure->getDoubleField( - String("display.limitHigh")); + string("display.limitHigh")); testOk1(limit!=0); limit->put(10.0); limit = pvStructure->getDoubleField( - String("control.limitLow")); + string("control.limitLow")); testOk1(limit!=0); limit->put(1.0); limit = pvStructure->getDoubleField( - String("control.limitHigh")); + string("control.limitHigh")); testOk1(limit!=0); limit->put(9.0); } if(hasValueAlarm) { PVFieldPtr pvField = pvStructure->getSubField( - String("valueAlarm.active")); + string("valueAlarm.active")); PVBooleanPtr pvBoolean = static_pointer_cast(pvField); pvBoolean->put(true); pvField = pvStructure->getSubField( - String("valueAlarm.lowAlarmLimit")); + string("valueAlarm.lowAlarmLimit")); PVScalarPtr pvtemp = static_pointer_cast(pvField); testOk1(pvtemp.get()!=0); convert->fromDouble(pvtemp,1.0); pvField = pvStructure->getSubField( - String("valueAlarm.highAlarmLimit")); + string("valueAlarm.highAlarmLimit")); pvtemp = static_pointer_cast(pvField); testOk1(pvtemp.get()!=0); convert->fromDouble(pvtemp,9.0); severity = pvStructure->getIntField( - String("valueAlarm.lowAlarmSeverity")); + string("valueAlarm.lowAlarmSeverity")); testOk1(severity!=0); severity->put(2); severity = pvStructure->getIntField( - String("valueAlarm.highAlarmSeverity")); + string("valueAlarm.highAlarmSeverity")); testOk1(severity!=0); severity->put(2); PVBooleanPtr active = pvStructure->getBooleanField( - String("valueAlarm.active")); + string("valueAlarm.active")); testOk1(active!=0); active->put(true); } if(hasBooleanAlarm) { PVFieldPtr pvField = pvStructure->getSubField( - String("valueAlarm.active")); + string("valueAlarm.active")); PVBooleanPtr pvBoolean = static_pointer_cast(pvField); pvBoolean->put(true); severity = pvStructure->getIntField( - String("valueAlarm.falseSeverity")); + string("valueAlarm.falseSeverity")); testOk1(severity!=0); severity->put(0); severity = pvStructure->getIntField( - String("valueAlarm.trueSeverity")); + string("valueAlarm.trueSeverity")); testOk1(severity!=0); severity->put(2); severity = pvStructure->getIntField( - String("valueAlarm.changeStateSeverity")); + string("valueAlarm.changeStateSeverity")); testOk1(severity!=0); severity->put(1); } - builder.clear(); - pvStructure->toString(&builder); - if(debug) printf("%s\n",builder.c_str()); + if(debug) + std::cout << *pvStructure << std::endl; } static void testPVScalar() { - if(debug) printf("\ntestScalar\n"); - testPVScalarCommon(String("boolean"),pvByte); - testPVScalarCommon(String("byte"),pvByte); - testPVScalarCommon(String("short"),pvShort); - testPVScalarCommon(String("int"),pvInt); - testPVScalarCommon(String("long"),pvLong); - testPVScalarCommon(String("ubyte"),pvUByte); - testPVScalarCommon(String("ushort"),pvUShort); - testPVScalarCommon(String("uint"),pvUInt); - testPVScalarCommon(String("ulong"),pvULong); - testPVScalarCommon(String("float"),pvFloat); - testPVScalarCommon(String("double"),pvDouble); - testPVScalarCommon(String("string"),pvString); + if(debug) + std::cout << std::endl << "testScalar" << std::endl; + testPVScalarCommon(string("boolean"),pvByte); + testPVScalarCommon(string("byte"),pvByte); + testPVScalarCommon(string("short"),pvShort); + testPVScalarCommon(string("int"),pvInt); + testPVScalarCommon(string("long"),pvLong); + testPVScalarCommon(string("ubyte"),pvUByte); + testPVScalarCommon(string("ushort"),pvUShort); + testPVScalarCommon(string("uint"),pvUInt); + testPVScalarCommon(string("ulong"),pvULong); + testPVScalarCommon(string("float"),pvFloat); + testPVScalarCommon(string("double"),pvDouble); + testPVScalarCommon(string("string"),pvString); - testPVScalarWithProperties(String("boolean"),pvBoolean); - testPVScalarWithProperties(String("byte"),pvByte); - testPVScalarWithProperties(String("short"),pvShort); - testPVScalarWithProperties(String("int"),pvInt); - testPVScalarWithProperties(String("long"),pvLong); - testPVScalarWithProperties(String("ubyte"),pvUByte); - testPVScalarWithProperties(String("ushort"),pvUShort); - testPVScalarWithProperties(String("uint"),pvUInt); - testPVScalarWithProperties(String("ulong"),pvULong); - testPVScalarWithProperties(String("float"),pvFloat); - testPVScalarWithProperties(String("double"),pvDouble); - testPVScalarWithProperties(String("string"),pvString); - printf("testScalar PASSED\n"); + testPVScalarWithProperties(string("boolean"),pvBoolean); + testPVScalarWithProperties(string("byte"),pvByte); + testPVScalarWithProperties(string("short"),pvShort); + testPVScalarWithProperties(string("int"),pvInt); + testPVScalarWithProperties(string("long"),pvLong); + testPVScalarWithProperties(string("ubyte"),pvUByte); + testPVScalarWithProperties(string("ushort"),pvUShort); + testPVScalarWithProperties(string("uint"),pvUInt); + testPVScalarWithProperties(string("ulong"),pvULong); + testPVScalarWithProperties(string("float"),pvFloat); + testPVScalarWithProperties(string("double"),pvDouble); + testPVScalarWithProperties(string("string"),pvString); + + std::cout << "testPVScalar PASSED" << std::endl; } -static void testScalarArrayCommon(String /*fieldName*/,ScalarType stype) +static void testScalarArrayCommon(string /*fieldName*/,ScalarType stype) { PVStructurePtr pvStructure = standardPVField->scalarArray( stype,alarmTimeStamp); @@ -340,30 +342,32 @@ static void testScalarArrayCommon(String /*fieldName*/,ScalarType stype) values[2] = "2"; convert->fromStringArray(scalarArray, 0,3,values,0); } - builder.clear(); - pvStructure->toString(&builder); - if(debug) printf("%s\n",builder.c_str()); + if(debug) + std::cout << *pvStructure << std::endl; PVFieldPtr pvField = pvStructure->getSubField("alarm.status"); testOk1(pvField!=NULL); } static void testScalarArray() { - if(debug) printf("\ntestScalarArray\n"); - testScalarArrayCommon(String("boolean"),pvBoolean); - testScalarArrayCommon(String("byte"),pvByte); - testScalarArrayCommon(String("short"),pvShort); - testScalarArrayCommon(String("int"),pvInt); - testScalarArrayCommon(String("long"),pvLong); - testScalarArrayCommon(String("float"),pvFloat); - testScalarArrayCommon(String("double"),pvDouble); - testScalarArrayCommon(String("string"),pvString); - printf("testScalarArray PASSED\n"); + if(debug) + std::cout << std::endl << "testScalarArray" << std::endl; + testScalarArrayCommon(string("boolean"),pvBoolean); + testScalarArrayCommon(string("byte"),pvByte); + testScalarArrayCommon(string("short"),pvShort); + testScalarArrayCommon(string("int"),pvInt); + testScalarArrayCommon(string("long"),pvLong); + testScalarArrayCommon(string("float"),pvFloat); + testScalarArrayCommon(string("double"),pvDouble); + testScalarArrayCommon(string("string"),pvString); + std::cout << "testScalarArray PASSED" << std::endl; } static void testRequest() { - if(debug) printf("\ntestScalarArray\n"); + if(debug) + std::cout << std::endl << "testScalarArray" << std::endl; + StringArray nullNames; FieldConstPtrArray nullFields; StringArray optionNames(1); @@ -388,35 +392,22 @@ static void testRequest() topFields[1] = fieldCreate->createStructure(fieldNames,fieldFields); StructureConstPtr topStructure = fieldCreate->createStructure( topNames,topFields); -String buffer; -topStructure->toString(&buffer); -cout << buffer.c_str() << endl; +cout << *topStructure << endl; PVStructurePtr pvTop = pvDataCreate->createPVStructure(topStructure); -buffer.clear(); -pvTop->toString(&buffer); -cout << buffer.c_str() << endl; -buffer.clear(); -pvTop->getStructure()->toString(&buffer); -cout << buffer.c_str() << endl; +cout << *pvTop << endl; +cout << *pvTop->getStructure() << endl; PVStructurePtr xxx = pvTop->getSubField("record"); -buffer.clear(); -xxx->toString(&buffer); -cout << buffer.c_str() << endl; +cout << *xxx << endl; xxx = pvTop->getSubField("field"); -buffer.clear(); -xxx->toString(&buffer); -cout << buffer.c_str() << endl; +cout << *xxx << endl; PVStringPtr pvString = pvTop->getSubField("record._options.process"); pvString->put("true"); -buffer.clear(); -pvTop->toString(&buffer); -cout << buffer.c_str() << endl; -cout << pvTop->dumpValue(cout) << endl; +cout << *pvTop << endl; -String subName("record._options.process"); +string subName("record._options.process"); PVFieldPtr pvField = pvTop->getSubField(subName); -String fieldName = pvField->getFieldName(); -String fullName = pvField->getFullName(); +string fieldName = pvField->getFieldName(); +string fullName = pvField->getFullName(); cout << "fieldName " << fieldName << " fullName " << fullName << endl; testOk1(fieldName.compare("process")==0); diff --git a/testApp/pv/testStandardField.cpp b/testApp/pv/testStandardField.cpp index fdb963e..3d5e434 100644 --- a/testApp/pv/testStandardField.cpp +++ b/testApp/pv/testStandardField.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -23,16 +24,18 @@ using namespace epics::pvData; using std::tr1::static_pointer_cast; +using std::string; static bool debug = false; static FieldCreatePtr fieldCreate = getFieldCreate(); static StandardFieldPtr standardField = getStandardField(); -static String builder(""); -static void print(String name) +static void print(const string& name, FieldConstPtr const & f) { - if(debug) printf("\n%s\n%s\n",name.c_str(),builder.c_str()); + if(debug) { + std::cout << std::endl << name << std::endl << *f << std::endl; + } } MAIN(testStandardField) @@ -40,19 +43,13 @@ MAIN(testStandardField) testPlan(1); StructureConstPtr doubleValue = standardField->scalar(pvDouble, "alarm,timeStamp,display,control,valueAlarm"); - builder.clear(); - doubleValue->toString(&builder); - print("doubleValue"); + print("doubleValue", doubleValue); StructureConstPtr stringArrayValue = standardField->scalarArray(pvString, "alarm,timeStamp"); - builder.clear(); - stringArrayValue->toString(&builder); - print("stringArrayValue"); + print("stringArrayValue", stringArrayValue); StructureConstPtr enumeratedValue = standardField->enumerated( "alarm,timeStamp,valueAlarm"); - builder.clear(); - enumeratedValue->toString(&builder); - print("enumeratedValue"); + print("enumeratedValue", enumeratedValue); FieldConstPtrArray fields; fields.reserve(2); fields.push_back(fieldCreate->createScalar(pvDouble)); @@ -63,9 +60,7 @@ MAIN(testStandardField) fieldNames.push_back("arrayValue"); StructureConstPtr structure = fieldCreate->createStructure(fieldNames, fields); StructureConstPtr structureArrayValue = standardField->structureArray(structure, "alarm,timeStamp"); - builder.clear(); - structureArrayValue->toString(&builder); - print("structureArrayValue"); + print("structureArrayValue", structureArrayValue); StructureConstPtr punion = standardField->regUnion( fieldCreate->createFieldBuilder()-> @@ -74,9 +69,7 @@ MAIN(testStandardField) add("timeStamp",standardField->timeStamp())-> createUnion(), "alarm,timeStamp"); - builder.clear(); - punion->toString(&builder); - print("unionValue"); + print("unionValue", punion); testPass("testStandardField"); return testDone(); } diff --git a/testApp/pv/testStandardPVField.cpp b/testApp/pv/testStandardPVField.cpp index d13e8fb..a22f9d1 100644 --- a/testApp/pv/testStandardPVField.cpp +++ b/testApp/pv/testStandardPVField.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -24,17 +25,19 @@ using namespace epics::pvData; using std::tr1::static_pointer_cast; +using std::string; static bool debug = false; static PVDataCreatePtr pvDataCreate = getPVDataCreate(); static StandardFieldPtr standardField = getStandardField(); static StandardPVFieldPtr standardPVField = getStandardPVField(); -static String builder(""); -static void print(String name) +static void print(const string& name, PVFieldPtr const & f) { - if(debug) printf("\n%s\n%s\n",name.c_str(),builder.c_str()); + if(debug) { + std::cout << std::endl << name << std::endl << *f << std::endl; + } } MAIN(testStandardPVField) @@ -48,26 +51,18 @@ MAIN(testStandardPVField) pvSeverity->put(2); PVStringPtr pvMessage = pvStructure->getStringField("alarm.message"); pvMessage->put("test message"); - builder.clear(); - pvStructure->toString(&builder); - print("scalarTest"); + print("scalarTest", pvStructure); pvStructure = standardPVField->scalar(pvBoolean,"alarm,timeStamp,valueAlarm"); - builder.clear(); - pvStructure->toString(&builder); - print("booleanTest"); + print("booleanTest", pvStructure); StringArray choices; choices.reserve(3); choices.push_back("one"); choices.push_back("two"); choices.push_back("three"); pvStructure = standardPVField->enumerated(choices, "alarm,timeStamp,valueAlarm"); - builder.clear(); - pvStructure->toString(&builder); - print("enumeratedTest"); + print("enumeratedTest", pvStructure); pvStructure = standardPVField->scalarArray(pvBoolean,"alarm,timeStamp"); - builder.clear(); - pvStructure->toString(&builder); - print("scalarArrayTest"); + print("scalarArrayTest", pvStructure); StructureConstPtr structure = standardField->scalar(pvDouble, "alarm,timeStamp"); pvStructure = standardPVField->structureArray(structure,"alarm,timeStamp"); size_t num = 2; @@ -78,9 +73,7 @@ MAIN(testStandardPVField) } PVStructureArrayPtr pvStructureArray = pvStructure->getStructureArrayField("value"); pvStructureArray->replace(freeze(pvStructures)); - builder.clear(); - pvStructure->toString(&builder); - print("structureArrayTest"); + print("structureArrayTest", pvStructure); testPass("testStandardPVField"); return testDone(); }