|  | @@ -53,66 +53,66 @@ struct Options {
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Escape C++ trigraphs by escaping question marks to "\?".
 | 
	
		
			
				|  |  | -string EscapeTrigraphs(const string& to_escape);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT EscapeTrigraphs(const string& to_escape);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Strips ".proto" or ".protodevel" from the end of a filename.
 | 
	
		
			
				|  |  | -string StripProto(const string& filename);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT StripProto(const string& filename);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Remove white space from either end of a StringPiece.
 | 
	
		
			
				|  |  | -void StringPieceTrimWhitespace(StringPiece* input);
 | 
	
		
			
				|  |  | +void LIBPROTOC_EXPORT StringPieceTrimWhitespace(StringPiece* input);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns true if the name requires a ns_returns_not_retained attribute applied
 | 
	
		
			
				|  |  |  // to it.
 | 
	
		
			
				|  |  | -bool IsRetainedName(const string& name);
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT IsRetainedName(const string& name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns true if the name starts with "init" and will need to have special
 | 
	
		
			
				|  |  |  // handling under ARC.
 | 
	
		
			
				|  |  | -bool IsInitName(const string& name);
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT IsInitName(const string& name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Gets the objc_class_prefix.
 | 
	
		
			
				|  |  | -string FileClassPrefix(const FileDescriptor* file);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT FileClassPrefix(const FileDescriptor* file);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Gets the path of the file we're going to generate (sans the .pb.h
 | 
	
		
			
				|  |  |  // extension).  The path will be dependent on the objectivec package
 | 
	
		
			
				|  |  |  // declared in the proto package.
 | 
	
		
			
				|  |  | -string FilePath(const FileDescriptor* file);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT FilePath(const FileDescriptor* file);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Just like FilePath(), but without the directory part.
 | 
	
		
			
				|  |  | -string FilePathBasename(const FileDescriptor* file);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT FilePathBasename(const FileDescriptor* file);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Gets the name of the root class we'll generate in the file.  This class
 | 
	
		
			
				|  |  |  // is not meant for external consumption, but instead contains helpers that
 | 
	
		
			
				|  |  |  // the rest of the classes need
 | 
	
		
			
				|  |  | -string FileClassName(const FileDescriptor* file);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT FileClassName(const FileDescriptor* file);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // These return the fully-qualified class name corresponding to the given
 | 
	
		
			
				|  |  |  // descriptor.
 | 
	
		
			
				|  |  | -string ClassName(const Descriptor* descriptor);
 | 
	
		
			
				|  |  | -string ClassName(const Descriptor* descriptor, string* out_suffix_added);
 | 
	
		
			
				|  |  | -string EnumName(const EnumDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT ClassName(const Descriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT ClassName(const Descriptor* descriptor, string* out_suffix_added);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT EnumName(const EnumDescriptor* descriptor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns the fully-qualified name of the enum value corresponding to the
 | 
	
		
			
				|  |  |  // the descriptor.
 | 
	
		
			
				|  |  | -string EnumValueName(const EnumValueDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT EnumValueName(const EnumValueDescriptor* descriptor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns the name of the enum value corresponding to the descriptor.
 | 
	
		
			
				|  |  | -string EnumValueShortName(const EnumValueDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT EnumValueShortName(const EnumValueDescriptor* descriptor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Reverse what an enum does.
 | 
	
		
			
				|  |  | -string UnCamelCaseEnumShortName(const string& name);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT UnCamelCaseEnumShortName(const string& name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns the name to use for the extension (used as the method off the file's
 | 
	
		
			
				|  |  |  // Root class).
 | 
	
		
			
				|  |  | -string ExtensionMethodName(const FieldDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT ExtensionMethodName(const FieldDescriptor* descriptor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns the transformed field name.
 | 
	
		
			
				|  |  | -string FieldName(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | -string FieldNameCapitalized(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT FieldName(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT FieldNameCapitalized(const FieldDescriptor* field);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Returns the transformed oneof name.
 | 
	
		
			
				|  |  | -string OneofEnumName(const OneofDescriptor* descriptor);
 | 
	
		
			
				|  |  | -string OneofName(const OneofDescriptor* descriptor);
 | 
	
		
			
				|  |  | -string OneofNameCapitalized(const OneofDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT OneofEnumName(const OneofDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT OneofName(const OneofDescriptor* descriptor);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT OneofNameCapitalized(const OneofDescriptor* descriptor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  inline bool HasFieldPresence(const FileDescriptor* file) {
 | 
	
		
			
				|  |  |    return file->syntax() != FileDescriptor::SYNTAX_PROTO3;
 | 
	
	
		
			
				|  | @@ -127,7 +127,7 @@ inline bool IsMapEntryMessage(const Descriptor* descriptor) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Reverse of the above.
 | 
	
		
			
				|  |  | -string UnCamelCaseFieldName(const string& name, const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT UnCamelCaseFieldName(const string& name, const FieldDescriptor* field);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  enum ObjectiveCType {
 | 
	
		
			
				|  |  |    OBJECTIVECTYPE_INT32,
 | 
	
	
		
			
				|  | @@ -175,42 +175,42 @@ string GetOptionalDeprecatedAttribute(
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -string GetCapitalizedType(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT GetCapitalizedType(const FieldDescriptor* field);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -ObjectiveCType GetObjectiveCType(FieldDescriptor::Type field_type);
 | 
	
		
			
				|  |  | +ObjectiveCType LIBPROTOC_EXPORT GetObjectiveCType(FieldDescriptor::Type field_type);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  inline ObjectiveCType GetObjectiveCType(const FieldDescriptor* field) {
 | 
	
		
			
				|  |  |    return GetObjectiveCType(field->type());
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -bool IsPrimitiveType(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | -bool IsReferenceType(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT IsPrimitiveType(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT IsReferenceType(const FieldDescriptor* field);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -string GPBGenericValueFieldName(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | -string DefaultValue(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | -bool HasNonZeroDefaultValue(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT GPBGenericValueFieldName(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT DefaultValue(const FieldDescriptor* field);
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT HasNonZeroDefaultValue(const FieldDescriptor* field);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -string BuildFlagsString(const FlagType type, const vector<string>& strings);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT BuildFlagsString(const FlagType type, const vector<string>& strings);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Builds HeaderDoc/appledoc style comments out of the comments in the .proto
 | 
	
		
			
				|  |  |  // file.
 | 
	
		
			
				|  |  | -string BuildCommentsString(const SourceLocation& location,
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT BuildCommentsString(const SourceLocation& location,
 | 
	
		
			
				|  |  |                             bool prefer_single_line);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // The name the commonly used by the library when built as a framework.
 | 
	
		
			
				|  |  |  // This lines up to the name used in the CocoaPod.
 | 
	
		
			
				|  |  | -extern const char* const ProtobufLibraryFrameworkName;
 | 
	
		
			
				|  |  | +extern LIBPROTOC_EXPORT const char* const ProtobufLibraryFrameworkName;
 | 
	
		
			
				|  |  |  // Returns the CPP symbol name to use as the gate for framework style imports
 | 
	
		
			
				|  |  |  // for the given framework name to use.
 | 
	
		
			
				|  |  | -string ProtobufFrameworkImportSymbol(const string& framework_name);
 | 
	
		
			
				|  |  | +string LIBPROTOC_EXPORT ProtobufFrameworkImportSymbol(const string& framework_name);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Checks if the file is one of the proto's bundled with the library.
 | 
	
		
			
				|  |  | -bool IsProtobufLibraryBundledProtoFile(const FileDescriptor* file);
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT IsProtobufLibraryBundledProtoFile(const FileDescriptor* file);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Checks the prefix for the given files and outputs any warnings as needed. If
 | 
	
		
			
				|  |  |  // there are flat out errors, then out_error is filled in with the first error
 | 
	
		
			
				|  |  |  // and the result is false.
 | 
	
		
			
				|  |  | -bool ValidateObjCClassPrefixes(const vector<const FileDescriptor*>& files,
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT ValidateObjCClassPrefixes(const vector<const FileDescriptor*>& files,
 | 
	
		
			
				|  |  |                                 const Options& generation_options,
 | 
	
		
			
				|  |  |                                 string* out_error);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -244,7 +244,7 @@ class LIBPROTOC_EXPORT LineConsumer {
 | 
	
		
			
				|  |  |    virtual bool ConsumeLine(const StringPiece& line, string* out_error) = 0;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -bool ParseSimpleFile(
 | 
	
		
			
				|  |  | +bool LIBPROTOC_EXPORT ParseSimpleFile(
 | 
	
		
			
				|  |  |      const string& path, LineConsumer* line_consumer, string* out_error);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |