@ -34,16 +34,11 @@
# include <map>
# include <string>
# include <google/protobuf/compiler/objectivec/objectivec_helpers.h>
# include <google/protobuf/stubs/common.h>
# include <google/protobuf/descriptor.h>
# include <google/protobuf/io/printer.h>
namespace google {
namespace protobuf {
namespace io {
class Printer ; // printer.h
} // namespace io
namespace compiler {
namespace objectivec {
@ -54,6 +49,9 @@ class FieldGenerator {
virtual ~ FieldGenerator ( ) ;
FieldGenerator ( const FieldGenerator & ) = delete ;
FieldGenerator & operator = ( const FieldGenerator & ) = delete ;
// Exposed for subclasses to fill in.
virtual void GenerateFieldStorageDeclaration ( io : : Printer * printer ) const = 0 ;
virtual void GeneratePropertyDeclaration ( io : : Printer * printer ) const = 0 ;
@ -101,15 +99,15 @@ class FieldGenerator {
const FieldDescriptor * descriptor_ ;
std : : map < string , string > variables_ ;
private :
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS ( FieldGenerator ) ;
} ;
class SingleFieldGenerator : public FieldGenerator {
public :
virtual ~ SingleFieldGenerator ( ) ;
SingleFieldGenerator ( const SingleFieldGenerator & ) = delete ;
SingleFieldGenerator & operator = ( const SingleFieldGenerator & ) = delete ;
virtual void GenerateFieldStorageDeclaration ( io : : Printer * printer ) const ;
virtual void GeneratePropertyDeclaration ( io : : Printer * printer ) const ;
@ -121,9 +119,6 @@ class SingleFieldGenerator : public FieldGenerator {
SingleFieldGenerator ( const FieldDescriptor * descriptor ,
const Options & options ) ;
virtual bool WantsHasProperty ( void ) const ;
private :
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS ( SingleFieldGenerator ) ;
} ;
// Subclass with common support for when the field ends up as an ObjC Object.
@ -131,21 +126,24 @@ class ObjCObjFieldGenerator : public SingleFieldGenerator {
public :
virtual ~ ObjCObjFieldGenerator ( ) ;
ObjCObjFieldGenerator ( const ObjCObjFieldGenerator & ) = delete ;
ObjCObjFieldGenerator & operator = ( const ObjCObjFieldGenerator & ) = delete ;
virtual void GenerateFieldStorageDeclaration ( io : : Printer * printer ) const ;
virtual void GeneratePropertyDeclaration ( io : : Printer * printer ) const ;
protected :
ObjCObjFieldGenerator ( const FieldDescriptor * descriptor ,
const Options & options ) ;
private :
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS ( ObjCObjFieldGenerator ) ;
} ;
class RepeatedFieldGenerator : public ObjCObjFieldGenerator {
public :
virtual ~ RepeatedFieldGenerator ( ) ;
RepeatedFieldGenerator ( const RepeatedFieldGenerator & ) = delete ;
RepeatedFieldGenerator & operator = ( const RepeatedFieldGenerator & ) = delete ;
virtual void GenerateFieldStorageDeclaration ( io : : Printer * printer ) const ;
virtual void GeneratePropertyDeclaration ( io : : Printer * printer ) const ;
@ -158,9 +156,6 @@ class RepeatedFieldGenerator : public ObjCObjFieldGenerator {
const Options & options ) ;
virtual void FinishInitialization ( void ) ;
virtual bool WantsHasProperty ( void ) const ;
private :
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS ( RepeatedFieldGenerator ) ;
} ;
// Convenience class which constructs FieldGenerators for a Descriptor.
@ -169,6 +164,9 @@ class FieldGeneratorMap {
FieldGeneratorMap ( const Descriptor * descriptor , const Options & options ) ;
~ FieldGeneratorMap ( ) ;
FieldGeneratorMap ( const FieldGeneratorMap & ) = delete ;
FieldGeneratorMap & operator = ( const FieldGeneratorMap & ) = delete ;
const FieldGenerator & get ( const FieldDescriptor * field ) const ;
const FieldGenerator & get_extension ( int index ) const ;
@ -184,11 +182,11 @@ class FieldGeneratorMap {
const Descriptor * descriptor_ ;
std : : vector < std : : unique_ptr < FieldGenerator > > field_generators_ ;
std : : vector < std : : unique_ptr < FieldGenerator > > extension_generators_ ;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS ( FieldGeneratorMap ) ;
} ;
} // namespace objectivec
} // namespace compiler
} // namespace protobuf
} // namespace google
# endif // GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_FIELD_H__