25 make(
const std::string &name) {
26 return get_root()->append(name);
40 make(
const char (&literal)[N]) {
42 LiteralTable::const_iterator it = _literal_table.find(literal);
44 if (it == _literal_table.end()) {
46 _literal_table.insert(LiteralTable::value_type(literal, name));
66 INLINE
const std::string &InternalName::
67 get_basename()
const {
78 if (_root ==
nullptr) {
89 if (_error ==
nullptr) {
90 _error = InternalName::make(
"error");
101 if (_vertex ==
nullptr) {
102 _vertex = InternalName::make(
"vertex");
113 if (_normal ==
nullptr) {
114 _normal = InternalName::make(
"normal");
127 if (_tangent ==
nullptr) {
128 _tangent = InternalName::make(
"tangent");
139 get_tangent_name(
const std::string &name) {
140 return get_tangent()->append(name);
152 if (_binormal ==
nullptr) {
153 _binormal = InternalName::make(
"binormal");
164 get_binormal_name(
const std::string &name) {
165 return get_binormal()->append(name);
175 if (_texcoord ==
nullptr) {
176 _texcoord = InternalName::make(
"texcoord");
188 get_texcoord_name(
const std::string &name) {
189 return get_texcoord()->append(name);
198 if (_color ==
nullptr) {
199 _color = InternalName::make(
"color");
211 if (_rotate ==
nullptr) {
212 _rotate = InternalName::make(
"rotate");
224 if (_size ==
nullptr) {
225 _size = InternalName::make(
"size");
238 if (_aspect_ratio ==
nullptr) {
239 _aspect_ratio = InternalName::make(
"aspect_ratio");
241 return _aspect_ratio;
251 get_transform_blend() {
252 if (_transform_blend ==
nullptr) {
253 _transform_blend = InternalName::make(
"transform_blend");
255 return _transform_blend;
268 get_transform_weight() {
269 if (_transform_weight ==
nullptr) {
270 _transform_weight = InternalName::make(
"transform_weight");
272 return _transform_weight;
284 get_transform_index() {
285 if (_transform_index ==
nullptr) {
286 _transform_index = InternalName::make(
"transform_index");
288 return _transform_index;
301 get_morph(
InternalName *column,
const std::string &slider) {
305 return column->append(
"morph")->append(slider);
315 if (_index ==
nullptr) {
316 _index = InternalName::make(
"index");
327 if (_world ==
nullptr) {
328 _world = InternalName::make(
"world");
339 if (_camera ==
nullptr) {
340 _camera = InternalName::make(
"camera");
351 if (_model ==
nullptr) {
352 _model = InternalName::make(
"model");
363 if (_view ==
nullptr) {
364 _view = InternalName::make(
"view");
372 INLINE std::ostream &
373 operator << (std::ostream &out,
const InternalName &tcn) {
382 INLINE CPT_InternalName::
391 INLINE CPT_InternalName::
400 INLINE CPT_InternalName::
409 INLINE CPT_InternalName::
410 CPT_InternalName(
const std::string &name) :
419 INLINE CPT_InternalName::
420 CPT_InternalName(
const char (&literal)[N]) :
428 INLINE CPT_InternalName::
437 INLINE CPT_InternalName::
448 this->reassign(std::move(from));
457 this->reassign(std::move(from));
465 operator = (
const To *ptr) {
466 this->reassign((To *)ptr);
This is a const pointer to an InternalName, and should be used in lieu of a CPT(InternalName) in func...
PT(InternalName) InternalName
The public interface for constructing an InternalName pointer.
get_parent
Return the parent of this InternalName.
Similar to MutexHolder, but for a light mutex.
Encodes a string name in a hash table, mapping it to a pointer.
A ConstPointerTo is similar to a PointerTo, except it keeps a const pointer to the thing.
This file defines the classes PointerTo and ConstPointerTo (and their abbreviations,...