Go to the documentation of this file.
46 namespace objectivec {
51 std::map<string, string>* variables) {
53 string raw_field_name;
55 raw_field_name =
descriptor->message_type()->name();
60 const string un_camel_case_name(
62 const bool needs_custom_name = (raw_field_name != un_camel_case_name);
68 (*variables)[
"comments"] =
"\n";
71 (*variables)[
"classname"] = classname;
72 (*variables)[
"name"] = camel_case_name;
74 (*variables)[
"capitalized_name"] = capitalized_name;
75 (*variables)[
"raw_field_name"] = raw_field_name;
76 (*variables)[
"field_number_name"] =
77 classname +
"_FieldNumber_" + capitalized_name;
81 std::vector<string> field_flags;
82 if (
descriptor->is_repeated()) field_flags.push_back(
"GPBFieldRepeated");
83 if (
descriptor->is_required()) field_flags.push_back(
"GPBFieldRequired");
84 if (
descriptor->is_optional()) field_flags.push_back(
"GPBFieldOptional");
85 if (
descriptor->is_packed()) field_flags.push_back(
"GPBFieldPacked");
89 field_flags.push_back(
"GPBFieldHasDefaultValue");
90 if (needs_custom_name) field_flags.push_back(
"GPBFieldTextFormatNameCustom");
92 field_flags.push_back(
"GPBFieldHasEnumDescriptor");
100 (*variables)[
"dataTypeSpecific_name"] =
"className";
101 (*variables)[
"dataTypeSpecific_value"] =
"NULL";
103 (*variables)[
"storage_offset_value"] =
104 "(uint32_t)offsetof(" + classname +
"__storage_, " + camel_case_name +
")";
105 (*variables)[
"storage_offset_comment"] =
"";
108 (*variables)[
"storage_attribute"] =
"";
116 if (
field->is_repeated()) {
119 if (
field->is_map()) {
166 "$field_number_name$ = $field_number$,\n");
180 std::set<string>* fwd_decls)
const {
185 io::Printer* printer,
bool include_default)
const {
187 if (include_default) {
191 " .defaultValue.$default_name$ = $default$,\n"
192 " .core.name = \"$name$\",\n"
193 " .core.dataTypeSpecific.$dataTypeSpecific_name$ = $dataTypeSpecific_value$,\n"
194 " .core.number = $field_number_name$,\n"
195 " .core.hasIndex = $has_index$,\n"
196 " .core.offset = $storage_offset_value$,$storage_offset_comment$\n"
197 " .core.flags = $fieldflags$,\n"
198 " .core.dataType = GPBDataType$field_type$,\n"
204 " .name = \"$name$\",\n"
205 " .dataTypeSpecific.$dataTypeSpecific_name$ = $dataTypeSpecific_value$,\n"
206 " .number = $field_number_name$,\n"
207 " .hasIndex = $has_index$,\n"
208 " .offset = $storage_offset_value$,$storage_offset_comment$\n"
209 " .flags = $fieldflags$,\n"
210 " .dataType = GPBDataType$field_type$,\n"
230 std::cerr <<
"Error: should have overridden SetExtraRuntimeHasBitsBase()." << std::endl;
269 "@property(nonatomic, readwrite) $property_type$ $name$$deprecated_attribute$;\n"
274 "@property(nonatomic, readwrite) BOOL has$capitalized_name$$deprecated_attribute$;\n");
281 printer->
Print(
variables_,
"@dynamic has$capitalized_name$, $name$;\n");
310 variables_[
"property_storage_attribute"] =
"strong";
312 variables_[
"storage_attribute"] =
" NS_RETURNS_NOT_RETAINED";
333 "@property(nonatomic, readwrite, $property_storage_attribute$, null_resettable) $property_type$ *$name$$storage_attribute$$deprecated_attribute$;\n");
337 "/** Test to see if @c $name$ has been set. */\n"
338 "@property(nonatomic, readwrite) BOOL has$capitalized_name$$deprecated_attribute$;\n");
344 "- ($property_type$ *)$name$ GPB_METHOD_FAMILY_NONE$deprecated_attribute$;\n");
346 printer->
Print(
"\n");
388 "@property(nonatomic, readwrite, strong, null_resettable) $array_property_type$ *$name$$storage_attribute$$deprecated_attribute$;\n"
389 "/** The number of items in @c $name$ without causing the array to be created. */\n"
390 "@property(nonatomic, readonly) NSUInteger $name$_Count$deprecated_attribute$;\n");
395 "- ($array_property_type$ *)$name$ GPB_METHOD_FAMILY_NONE$deprecated_attribute$;\n");
397 printer->
Print(
"\n");
413 extension_generators_(
descriptor->extension_count()) {
449 total_bits += extra_bits;
bool IsReferenceType(const FieldDescriptor *field)
bool DoesAnyFieldHaveNonZeroDefault(void) const
void Print(const std::map< std::string, std::string > &variables, const char *text)
#define GOOGLE_CHECK_EQ(A, B)
bool HasFieldPresence(const FileDescriptor *file)
virtual int ExtraRuntimeHasBitsNeeded(void) const
FieldGeneratorMap(const Descriptor *descriptor, const Options &options)
string StrCat(const AlphaNum &a, const AlphaNum &b)
SingleFieldGenerator(const SingleFieldGenerator &)=delete
virtual void SetExtraRuntimeHasBitsBase(int index_base)
void SetCommonFieldVariables(const FieldDescriptor *descriptor, std::map< std::string, std::string > *variables, const Options &options)
virtual void GenerateCFunctionDeclarations(io::Printer *printer) const
const Descriptor * descriptor_
std::vector< std::unique_ptr< FieldGenerator > > extension_generators_
virtual ~SingleFieldGenerator()
string UnCamelCaseFieldName(const string &name, const FieldDescriptor *field)
int CalculateHasBits(void)
std::vector< std::unique_ptr< FieldGenerator > > field_generators_
FieldGenerator(const FieldGenerator &)=delete
string variable(const char *key) const
string BuildCommentsString(const SourceLocation &location, bool prefer_single_line)
virtual void GeneratePropertyDeclaration(io::Printer *printer) const
void GenerateFieldNumberConstant(io::Printer *printer) const
virtual void FinishInitialization(void)
bool HasNonZeroDefaultValue(const FieldDescriptor *field)
string DefaultValue(const FieldDescriptor *field)
const FieldDescriptor * field(int index) const
virtual void GeneratePropertyImplementation(io::Printer *printer) const
const FileDescriptor * file() const
bool IsInitName(const string &name)
string GetOptionalDeprecatedAttribute(const TDescriptor *descriptor, const FileDescriptor *file=NULL, bool preSpace=true, bool postNewline=false)
string BuildFlagsString(const FlagType flag_type, const std::vector< string > &strings)
string ClassName(const Descriptor *descriptor)
const FieldGenerator & get_extension(int index) const
string GPBGenericValueFieldName(const FieldDescriptor *field)
static FieldGenerator * Make(const FieldDescriptor *field, const Options &options)
string GetCapitalizedType(const FieldDescriptor *field)
void SetOneofIndexBase(int index_base)
string FieldName(const FieldDescriptor *field)
void SetOneofIndexBase(int index_base)
virtual void GenerateFieldStorageDeclaration(io::Printer *printer) const
string FieldNameCapitalized(const FieldDescriptor *field)
const FieldDescriptor * field
virtual void GeneratePropertyDeclaration(io::Printer *printer) const
RepeatedFieldGenerator(const RepeatedFieldGenerator &)=delete
virtual ~RepeatedFieldGenerator()
virtual bool WantsHasProperty(void) const
virtual void GeneratePropertyDeclaration(io::Printer *printer) const
virtual bool RuntimeUsesHasBit(void) const
virtual bool RuntimeUsesHasBit(void) const
virtual void GenerateFieldStorageDeclaration(io::Printer *printer) const
void GenerateFieldDescription(io::Printer *printer, bool include_default) const
const FieldGenerator & get(const FieldDescriptor *field) const
virtual void GenerateCFunctionImplementations(io::Printer *printer) const
virtual void DetermineForwardDeclarations(std::set< string > *fwd_decls) const
bool IsRetainedName(const string &name)
std::map< string, string > variables_
ObjCObjFieldGenerator(const ObjCObjFieldGenerator &)=delete
const OneofDescriptor * containing_oneof() const
const FieldDescriptor * descriptor_
virtual void GenerateFieldStorageDeclaration(io::Printer *printer) const
virtual ~FieldGenerator()
const Descriptor * descriptor_
virtual ~ObjCObjFieldGenerator()
ObjectiveCType GetObjectiveCType(FieldDescriptor::Type field_type)
void SetRuntimeHasBit(int has_index)
virtual void FinishInitialization(void)
virtual bool WantsHasProperty(void) const
virtual void GeneratePropertyImplementation(io::Printer *printer) const
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:57