I have come across structs that are defined seemingly with function calls inside, in some actual c++ code, that I need help to interpret. For example, in Resource.h from the AOSP, there is the following struct definition
/**
* A binary identifier representing a resource. Internally it
* is a 32bit integer split as follows:
*
* 0xPPTTEEEE
*
* PP: 8 bit package identifier. 0x01 is reserved for system
* and 0x7f is reserved for the running app.
* TT: 8 bit type identifier. 0x00 is invalid.
* EEEE: 16 bit entry identifier.
*/
struct ResourceId {
uint32_t id;
ResourceId();
ResourceId(const ResourceId& rhs);
ResourceId(uint32_t res_id); // NOLINT(google-explicit-constructor)
ResourceId(uint8_t p, uint8_t t, uint16_t e);
// Returns true if the ID is a valid ID that is not dynamic (package ID cannot be 0)
bool is_valid_static() const;
// Returns true if the ID is a valid ID or dynamic ID (package ID can be 0).
bool is_valid() const;
uint8_t package_id() const;
uint8_t type_id() const;
uint16_t entry_id() const;
std::string to_string() const;
};
I don't understand this part:
ResourceId();
ResourceId(const ResourceId& rhs);
ResourceId(uint32_t res_id); // NOLINT(google-explicit-constructor)
ResourceId(uint8_t p, uint8_t t, uint16_t e);
Are these function calls? How can they be part of a struct definition? I found this SO post but am not sure if it is relevant/related.