MCPcopy Create free account
hub / github.com/PDAL/PDAL / elementNameParse

Method elementNameParse

plugins/e57/libE57Format/src/ImageFileImpl.cpp:703–785  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

701 }
702
703 void ImageFileImpl::elementNameParse( const ustring &elementName, ustring &prefix,
704 ustring &localPart, bool allowNumber )
705 {
706 // no checkImageFileOpen(__FILE__, __LINE__, __FUNCTION__)
707
708 //??? check if elementName is good UTF-8?
709
710 size_t len = elementName.length();
711
712 // Empty name is bad
713 if ( len == 0 )
714 {
715 throw E57_EXCEPTION2( ErrorBadPathName, "elementName=" + elementName );
716 }
717
718 unsigned char c = elementName[0];
719
720 // If allowing numeric element name, check if first char is digit
721 if ( allowNumber && '0' <= c && c <= '9' )
722 {
723 // All remaining characters must be digits
724 for ( size_t i = 1; i < len; i++ )
725 {
726 c = elementName[i];
727
728 if ( c < '0' || c > '9' )
729 {
730 throw E57_EXCEPTION2( ErrorBadPathName, "elementName=" + elementName );
731 }
732 }
733
734 return;
735 }
736
737 // If first char is ASCII (< 128), check for legality
738 // Don't test any part of a multi-byte code point sequence (c >= 128).
739 // Don't allow ':' as first char.
740 if ( c < 128 && !( ( 'a' <= c && c <= 'z' ) || ( 'A' <= c && c <= 'Z' ) || c == '_' ) )
741 {
742 throw E57_EXCEPTION2( ErrorBadPathName, "elementName=" + elementName );
743 }
744
745 // If each following char is ASCII (<128), check for legality
746 // Don't test any part of a multi-byte code point sequence (c >= 128).
747 for ( size_t i = 1; i < len; i++ )
748 {
749 c = elementName[i];
750
751 if ( c < 128 && !( ( 'a' <= c && c <= 'z' ) || ( 'A' <= c && c <= 'Z' ) || c == '_' ||
752 c == ':' || ( '0' <= c && c <= '9' ) || c == '-' || c == '.' ) )
753 {
754 throw E57_EXCEPTION2( ErrorBadPathName, "elementName=" + elementName );
755 }
756 }
757
758 // Check if has at least one colon, try to split it into prefix & localPart
759 size_t found = elementName.find_first_of( ':' );
760

Callers

nothing calls this directly

Calls 1

lengthMethod · 0.45

Tested by

no test coverage detected