Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
7194f668
Commit
7194f668
authored
Sep 24, 2013
by
Ulas Kirazci
Committed by
Gerrit Code Review
Sep 24, 2013
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Add some bitfield helper methods from 2.4"
parents
698f28af
ee4410d5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
102 additions
and
0 deletions
+102
-0
javanano_helpers.cc
src/google/protobuf/compiler/javanano/javanano_helpers.cc
+77
-0
javanano_helpers.h
src/google/protobuf/compiler/javanano/javanano_helpers.h
+25
-0
No files found.
src/google/protobuf/compiler/javanano/javanano_helpers.cc
View file @
7194f668
...
...
@@ -407,6 +407,83 @@ string DefaultValue(const Params& params, const FieldDescriptor* field) {
return
""
;
}
static
const
char
*
kBitMasks
[]
=
{
"0x00000001"
,
"0x00000002"
,
"0x00000004"
,
"0x00000008"
,
"0x00000010"
,
"0x00000020"
,
"0x00000040"
,
"0x00000080"
,
"0x00000100"
,
"0x00000200"
,
"0x00000400"
,
"0x00000800"
,
"0x00001000"
,
"0x00002000"
,
"0x00004000"
,
"0x00008000"
,
"0x00010000"
,
"0x00020000"
,
"0x00040000"
,
"0x00080000"
,
"0x00100000"
,
"0x00200000"
,
"0x00400000"
,
"0x00800000"
,
"0x01000000"
,
"0x02000000"
,
"0x04000000"
,
"0x08000000"
,
"0x10000000"
,
"0x20000000"
,
"0x40000000"
,
"0x80000000"
,
};
string
GetBitFieldName
(
int
index
)
{
string
var_name
=
"bitField"
;
var_name
+=
SimpleItoa
(
index
);
var_name
+=
"_"
;
return
var_name
;
}
string
GetBitFieldNameForBit
(
int
bit_index
)
{
return
GetBitFieldName
(
bit_index
/
32
);
}
string
GenerateGetBit
(
int
bit_index
)
{
string
var_name
=
GetBitFieldNameForBit
(
bit_index
);
int
bit_in_var_index
=
bit_index
%
32
;
string
mask
=
kBitMasks
[
bit_in_var_index
];
string
result
=
"(("
+
var_name
+
" & "
+
mask
+
") == "
+
mask
+
")"
;
return
result
;
}
string
GenerateSetBit
(
int
bit_index
)
{
string
var_name
=
GetBitFieldNameForBit
(
bit_index
);
int
bit_in_var_index
=
bit_index
%
32
;
string
mask
=
kBitMasks
[
bit_in_var_index
];
string
result
=
var_name
+
" |= "
+
mask
;
return
result
;
}
string
GenerateClearBit
(
int
bit_index
)
{
string
var_name
=
GetBitFieldNameForBit
(
bit_index
);
int
bit_in_var_index
=
bit_index
%
32
;
string
mask
=
kBitMasks
[
bit_in_var_index
];
string
result
=
var_name
+
" = ("
+
var_name
+
" & ~"
+
mask
+
")"
;
return
result
;
}
}
// namespace javanano
}
// namespace compiler
}
// namespace protobuf
...
...
src/google/protobuf/compiler/javanano/javanano_helpers.h
View file @
7194f668
...
...
@@ -138,6 +138,31 @@ string EmptyArrayName(const Params& params, const FieldDescriptor* field);
string
DefaultValue
(
const
Params
&
params
,
const
FieldDescriptor
*
field
);
// Methods for shared bitfields.
// Gets the name of the shared bitfield for the given index.
string
GetBitFieldName
(
int
index
);
// Gets the name of the shared bitfield for the given bit index.
// Effectively, GetBitFieldName(bit_index / 32)
string
GetBitFieldNameForBit
(
int
bit_index
);
// Generates the java code for the expression that returns the boolean value
// of the bit of the shared bitfields for the given bit index.
// Example: "((bitField1_ & 0x04) == 0x04)"
string
GenerateGetBit
(
int
bit_index
);
// Generates the java code for the expression that sets the bit of the shared
// bitfields for the given bit index.
// Example: "bitField1_ = (bitField1_ | 0x04)"
string
GenerateSetBit
(
int
bit_index
);
// Generates the java code for the expression that clears the bit of the shared
// bitfields for the given bit index.
// Example: "bitField1_ = (bitField1_ & ~0x04)"
string
GenerateClearBit
(
int
bit_index
);
}
// namespace javanano
}
// namespace compiler
}
// namespace protobuf
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment