# Path: core/ezdxf/lldxf/tags.py
# COMMENT_CODE = 999
# def write_tags(stream, tags):
# def text2tags(text):
#     def __init__(self):
#     def DWGCODEPAGE(self, value):
#     def ACADVER(self, value):
#     def HANDSEED(self, value):
# def dxf_info(stream):
#     def write(self, stream):
#     def from_text(cls, text):
#     def __copy__(self):
#     def get_handle(self):
#     def replace_handle(self, new_handle):
#     def dxftype(self):
#     def has_tag(self, code):
#     def find_first(self, code, default=ValueError):
#     def get_first_tag(self, code, default=ValueError):
#     def find_all(self, code):
#     def tag_index(self, code, start=0, end=None):
#     def update(self, code, value):
#     def set_first(self, code, value):
#     def remove_tags(self, codes):
#     def collect_consecutive_tags(self, codes, start=0, end=None):
#     def __init__(self, tags, splitcode=0):
#     def _build_groups(self, tags, splitcode):
#         def append(tag):  # first do nothing, skip tags in front of the first split tag
#     def get_name(self, index):
#     def from_text(cls, text, splitcode=0):
# def strip_tags(tags, codes):
#     def __init__(self, code, tags):
#     def __getitem__(self, item):
#     def decompress(self):
#     def write(self, stream):
# class DXFInfo(object):
# class Tags(list):
# class TagGroups(list):
# class CompressedTags(object):
# 
# Path: core/ezdxf/tools/c23.py
# def isstring(s):
#     return isinstance(s, basestring)
# 
# Path: core/ezdxf/lldxf/tagger.py
# def string_tagger(s):
#     """ Generates DXFTag() from trusted (internal) source - relies on
#     well formed and error free DXF format. Does not skip comment
#     tags 999.
#     """
# 
#     lines = s.split('\n')
#     if s.endswith('\n'):  # split() creates an extra item, if s ends with '\n'
#         lines.pop()
#     pos = 0
# 
#     def next_tag():
#         return DXFTag(int(lines[pos]), lines[pos+1])
# 
#     count = len(lines)
#     while pos < count:
#         x = next_tag()
#         pos += 2
#         code = x.code
#         if is_point_code(code):
#             y = next_tag()  # y coordinate is mandatory - string_tagger relies on well formed DXF strings
#             pos += 2
#             if pos < count:
#                 z = next_tag()  # z coordinate just for 3d points
#             else:  # if string s ends with a 2d point
#                 z = DUMMY_TAG
#             if z.code == code + 20:
#                 pos += 2
#                 point = (float(x.value), float(y.value), float(z.value))
#             else:
#                 point = (float(x.value), float(y.value))
#             yield DXFTag(code, point)
#         else:
#             yield cast_tag(x)
# 
# def skip_comments(tagger, comments=None):
#     if comments is None:
#         comments = []
#     for tag in tagger:
#         if tag.code != 999:
#             yield tag
#         else:
#             comments.append(tag.value)


from .tags import Tags, DXFStructureError, DXFTag, write_tags
from ..tools.c23 import isstring
from .tagger import string_tagger, skip_comments
# Purpose: classified tags
# Created: 30.04.2011
# Copyright (C) 2011, Manfred Moitzi
# License: MIT License
from __future__ import unicode_literals
__author__ = "mozman <mozman@gmx.at>"

APP_DATA_MARKER = 102
SUBCLASS_MARKER = 100
XDATA_MARKER = 1001


# Path: core/ezdxf/lldxf/tags.py
# COMMENT_CODE = 999
# def write_tags(stream, tags):
# def text2tags(text):
#     def __init__(self):
#     def DWGCODEPAGE(self, value):
#     def ACADVER(self, value):
#     def HANDSEED(self, value):
# def dxf_info(stream):
#     def write(self, stream):
#     def from_text(cls, text):
#     def __copy__(self):
#     def get_handle(self):
#     def replace_handle(self, new_handle):
#     def dxftype(self):
#     def has_tag(self, code):
#     def find_first(self, code, default=ValueError):
#     def get_first_tag(self, code, default=ValueError):
#     def find_all(self, code):
#     def tag_index(self, code, start=0, end=None):
#     def update(self, code, value):
#     def set_first(self, code, value):
#     def remove_tags(self, codes):
#     def collect_consecutive_tags(self, codes, start=0, end=None):
#     def __init__(self, tags, splitcode=0):
#     def _build_groups(self, tags, splitcode):
#         def append(tag):  # first do nothing, skip tags in front of the first split tag
#     def get_name(self, index):
#     def from_text(cls, text, splitcode=0):
# def strip_tags(tags, codes):
#     def __init__(self, code, tags):
#     def __getitem__(self, item):
#     def decompress(self):
#     def write(self, stream):
# class DXFInfo(object):
# class Tags(list):
# class TagGroups(list):
# class CompressedTags(object):
# 
# Path: core/ezdxf/tools/c23.py
# def isstring(s):
#     return isinstance(s, basestring)
# 
# Path: core/ezdxf/lldxf/tagger.py
# def string_tagger(s):
#     """ Generates DXFTag() from trusted (internal) source - relies on
#     well formed and error free DXF format. Does not skip comment
#     tags 999.
#     """
# 
#     lines = s.split('\n')
#     if s.endswith('\n'):  # split() creates an extra item, if s ends with '\n'
#         lines.pop()
#     pos = 0
# 
#     def next_tag():
#         return DXFTag(int(lines[pos]), lines[pos+1])
# 
#     count = len(lines)
#     while pos < count:
#         x = next_tag()
#         pos += 2
#         code = x.code
#         if is_point_code(code):
#             y = next_tag()  # y coordinate is mandatory - string_tagger relies on well formed DXF strings
#             pos += 2
#             if pos < count:
#                 z = next_tag()  # z coordinate just for 3d points
#             else:  # if string s ends with a 2d point
#                 z = DUMMY_TAG
#             if z.code == code + 20:
#                 pos += 2
#                 point = (float(x.value), float(y.value), float(z.value))
#             else:
#                 point = (float(x.value), float(y.value))
#             yield DXFTag(code, point)
#         else:
#             yield cast_tag(x)
# 
# def skip_comments(tagger, comments=None):
#     if comments is None:
#         comments = []
#     for tag in tagger:
#         if tag.code != 999:
#             yield tag
#         else:
#             comments.append(tag.value)


# Path: core/ezdxf/lldxf/classifiedtags.py
from .tags import Tags, DXFStructureError, DXFTag, write_tags
from ..tools.c23 import isstring
from .tagger import string_tagger, skip_comments

# Purpose: classified tags
# Created: 30.04.2011
# Copyright (C) 2011, Manfred Moitzi
# License: MIT License
from __future__ import unicode_literals
__author__ = "mozman <mozman@gmx.at>"

APP_DATA_MARKER = 102
SUBCLASS_MARKER = 100
XDATA_MARKER = 1001


NoneTag = DXFTag(None, None)