8000 libevent/event_rpcgen.py at master · hytd/libevent · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":"WIN32-Code","path":"WIN32-Code","contentType":"directory"},{"name":"cmake","path":"cmake","contentType":"directory"},{"name":"compat","path":"compat","contentType":"directory"},{"name":"include","path":"include","contentType":"directory"},{"name":"m4","path":"m4","contentType":"directory"},{"name":"sample","path":"sample","contentType":"directory"},{"name":"test","path":"test","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"CMakeLists.txt","path":"CMakeLists.txt","contentType":"file"},{"name":"ChangeLog","path":"ChangeLog","contentType":"file"},{"name":"ChangeLog-1.4","path":"ChangeLog-1.4","contentType":"file"},{"name":"ChangeLog-2.0","path":"ChangeLog-2.0","contentType":"file"},{"name":"Doxyfile","path":"Doxyfile","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"Makefile.am","path":"Makefile.am","contentType":"file"},{"name":"Makefile.nmake","path":"Makefile.nmake","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"appveyor.yml","path":"appveyor.yml","contentType":"file"},{"name":"arc4random.c","path":"arc4random.c","contentType":"file"},{"name":"autogen.sh","path":"autogen.sh","contentType":"file"},{"name":"buffer.c","path":"buffer.c","contentType":"file"},{"name":"buffer_iocp.c","path":"buffer_iocp.c","contentType":"file"},{"name":"bufferevent-internal.h","path":"bufferevent-internal.h","contentType":"file"},{"name":"bufferevent.c","path":"bufferevent.c","contentType":"file"},{"name":"bufferevent_async.c","path":"bufferevent_async.c","contentType":"file"},{"name":"bufferevent_filter.c","path":"bufferevent_filter.c","contentType":"file"},{"name":"bufferevent_openssl.c","path":"bufferevent_openssl.c","contentType":"file"},{"name":"bufferevent_pair.c","path":"bufferevent_pair.c","contentType":"file"},{"name":"bufferevent_ratelim.c","path":"bufferevent_ratelim.c","contentType":"file"},{"name":"bufferevent_sock.c","path":"bufferevent_sock.c","contentType":"file"},{"name":"changelist-internal.h","path":"changelist-internal.h","contentType":"file"},{"name":"configure.ac","path":"configure.ac","contentType":"file"},{"name":"defer-internal.h","path":"defer-internal.h","contentType":"file"},{"name":"devpoll.c","path":"devpoll.c","contentType":"file"},{"name":"epoll.c","path":"epoll.c","contentType":"file"},{"name":"epoll_sub.c","path":"epoll_sub.c","contentType":"file"},{"name":"epolltable-internal.h","path":"epolltable-internal.h","contentType":"file"},{"name":"evbuffer-internal.h","path":"evbuffer-internal.h","contentType":"file"},{"name":"evconfig-private.h.cmake","path":"evconfig-private.h.cmake","contentType":"file"},{"name":"evconfig-private.h.in","path":"evconfig-private.h.in","contentType":"file"},{"name":"evdns.3","path":"evdns.3","contentType":"file"},{"name":"evdns.c","path":"evdns.c","contentType":"file"},{"name":"event-config.h.cmake","path":"event-config.h.cmake","contentType":"file"},{"name":"event-internal.h","path":"event-internal.h","contentType":"file"},{"name":"event.3","path":"event.3","contentType":"file"},{"name":"event.c","path":"event.c","contentType":"file"},{"name":"event_iocp.c","path":"event_iocp.c","contentType":"file"},{"name":"event_rpcgen.py","path":"event_rpcgen.py","contentType":"file"},{"name":"event_tagging.c","path":"event_tagging.c","contentType":"file"},{"name":"evmap-internal.h","path":"evmap-internal.h","contentType":"file"},{"name":"evmap.c","path":"evmap.c","contentType":"file"},{"name":"evport.c","path":"evport.c","contentType":"file"},{"name":"evrpc-internal.h","path":"evrpc-internal.h","contentType":"file"},{"name":"evrpc.c","path":"evrpc.c","contentType":"file"},{"name":"evsignal-internal.h","path":"evsignal-internal.h","contentType":"file"},{"name":"evthread-internal.h","path":"evthread-internal.h","contentType":"file"},{"name":"evthread.c","path":"evthread.c","contentType":"file"},{"name":"evthread_pthread.c","path":"evthread_pthread.c","contentType":"file"},{"name":"evthread_win32.c","path":"evthread_win32.c","contentType":"file"},{"name":"evutil.c","path":"evutil.c","contentType":"file"},{"name":"evutil_rand.c","path":"evutil_rand.c","contentType":"file"},{"name":"evutil_time.c","path":"evutil_time.c","contentType":"file"},{"name":"ht-internal.h","path":"ht-internal.h","contentType":"file"},{"name":"http-internal.h","path":"http-internal.h","contentType":"file"},{"name":"http.c","path":"http.c","contentType":"file"},{"name":"iocp-internal.h","path":"iocp-internal.h","contentType":"file"},{"name":"ipv6-internal.h","path":"ipv6-internal.h","contentType":"file"},{"name":"kqueue-internal.h","path":"kqueue-internal.h","contentType":"file"},{"name":"kqueue.c","path":"kqueue.c","contentType":"file"},{"name":"libevent.pc.in","path":"libevent.pc.in","contentType":"file"},{"name":"libevent_core.pc.in","path":"libevent_core.pc.in","contentType":"file"},{"name":"libevent_extra.pc.in","path":"libevent_extra.pc.in","contentType":"file"},{"name":"libevent_openssl.pc.in","path":"libevent_openssl.pc.in","contentType":"file"},{"name":"libevent_pthreads.pc.in","path":"libevent_pthreads.pc.in","contentType":"file"},{"name":"listener.c","path":"listener.c","contentType":"file"},{"name":"log-internal.h","path":"log-internal.h","contentType":"file"},{"name":"log.c","path":"log.c","contentType":"file"},{"name":"make-event-config.sed","path":"make-event-config.sed","contentType":"file"},{"name":"make_epoll_table.py","path":"make_epoll_table.py","contentType":"file"},{"name":"minheap-internal.h","path":"minheap-internal.h","contentType":"file"},{"name":"mm-internal.h","path":"mm-internal.h","contentType":"file"},{"name":"poll.c","path":"poll.c","contentType":"file"},{"name":"ratelim-internal.h","path":"ratelim-internal.h","contentType":"file"},{"name":"select.c","path":"select.c","contentType":"file"},{"name":"signal.c","path":"signal.c","contentType":"file"},{"name":"strlcpy-internal.h","path":"strlcpy-internal.h","contentType":"file"},{"name":"strlcpy.c","path":"strlcpy.c","contentType":"file"},{"name":"time-internal.h","path":"time-internal.h","contentType":"file"},{"name":"util-internal.h","path":"util-internal.h","contentType":"file"},{"name":"whatsnew-2.0.txt","path":"whatsnew-2.0.txt","contentType":"file"},{"name":"whatsnew-2.1.txt","path":"whatsnew-2.1.txt","contentType":"file"},{"name":"win32select.c","path":"win32select.c","contentType":"file"}],"totalCount":93}},"fileTreeProcessingTime":4.461884,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":64754506,"defaultBranch":"master","name":"libevent","ownerLogin":"hytd","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2016-08-02T12:22:48.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/19877163?v=4","public":true,"private":false,"isOrgOwned":false},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1614781155.575216","canEdit":false,"refType":"branch","currentOid":"df6f99e5b51a3c0786f54cb9822604ec63385400"},"path":"event_rpcgen.py","currentUser":null,"blob":{"rawLines":["#!/usr/bin/env python2","#","# Copyright (c) 2005-2007 Niels Provos \u003cprovos@citi.umich.edu\u003e","# Copyright (c) 2007-2012 Niels Provos and Nick Mathewson","# All rights reserved.","#","# Generates marshaling code based on libevent.","","# TODO:","# 1) use optparse to allow the strategy shell to parse options, and","# to allow the instantiated factory (for the specific output language)","# to parse remaining options","# 2) move the globals into a class that manages execution (including the","# progress outputs that space stderr at the moment)","# 3) emit other languages","","import sys","import re","","_NAME = \"event_rpcgen.py\"","_VERSION = \"0.1\"","","# Globals","line_count = 0","","white = re.compile(r'\\s+')","cppcomment = re.compile(r'\\/\\/.*$')","nonident = re.compile(r'[^a-zA-Z0-9_]')","structref = re.compile(r'^struct\\[([a-zA-Z_][a-zA-Z0-9_]*)\\]$')","structdef = re.compile(r'^struct +[a-zA-Z_][a-zA-Z0-9_]* *{$')","","headerdirect = []","cppdirect = []","","QUIETLY = 0","","def declare(s):"," if not QUIETLY:"," print s","","def TranslateList(mylist, mydict):"," return map(lambda x: x % mydict, mylist)","","# Exception class for parse errors","class RpcGenError(Exception):"," def __init__(self, why):"," self.why = why"," def __str__(self):"," return str(self.why)","","# Holds everything that makes a struct","class Struct:"," def __init__(self, name):"," self._name = name"," self._entries = []"," self._tags = {}"," declare(' Created struct: %s' % name)",""," def AddEntry(self, entry):"," if self._tags.has_key(entry.Tag()):"," raise RpcGenError("," 'Entry \"%s\" duplicates tag number %d from \"%s\" '"," 'around line %d' % (entry.Name(), entry.Tag(),"," self._tags[entry.Tag()], line_count))"," self._entries.append(entry)"," self._tags[entry.Tag()] = entry.Name()"," declare(' Added entry: %s' % entry.Name())",""," def Name(self):"," return self._name",""," def EntryTagName(self, entry):"," \"\"\"Creates the name inside an enumeration for distinguishing data"," types.\"\"\""," name = \"%s_%s\" % (self._name, entry.Name())"," return name.upper()",""," def PrintIndented(self, file, ident, code):"," \"\"\"Takes an array, add indentation to each entry and prints it.\"\"\""," for entry in code:"," print \u003e\u003efile, '%s%s' % (ident, entry)","","class StructCCode(Struct):"," \"\"\" Knows how to generate C code for a struct \"\"\"",""," def __init__(self, name):"," Struct.__init__(self, name)",""," def PrintTags(self, file):"," \"\"\"Prints the tag definitions for a structure.\"\"\""," print \u003e\u003efile, '/* Tag definition for %s */' % self._name"," print \u003e\u003efile, 'enum %s_ {' % self._name.lower()"," for entry in self._entries:"," print \u003e\u003efile, ' %s=%d,' % (self.EntryTagName(entry),"," entry.Tag())"," print \u003e\u003efile, ' %s_MAX_TAGS' % (self._name.upper())"," print \u003e\u003efile, '};\\n'",""," def PrintForwardDeclaration(self, file):"," print \u003e\u003efile, 'struct %s;' % self._name",""," def PrintDeclaration(self, file):"," print \u003e\u003efile, '/* Structure declaration for %s */' % self._name"," print \u003e\u003efile, 'struct %s_access_ {' % self._name"," for entry in self._entries:"," dcl = entry.AssignDeclaration('(*%s_assign)' % entry.Name())"," dcl.extend("," entry.GetDeclaration('(*%s_get)' % entry.Name()))"," if entry.Array():"," dcl.extend("," entry.AddDeclaration('(*%s_add)' % entry.Name()))"," self.PrintIndented(file, ' ', dcl)"," print \u003e\u003efile, '};\\n'",""," print \u003e\u003efile, 'struct %s {' % self._name"," print \u003e\u003efile, ' struct %s_access_ *base;\\n' % self._name"," for entry in self._entries:"," dcl = entry.Declaration()"," self.PrintIndented(file, ' ', dcl)"," print \u003e\u003efile, ''"," for entry in self._entries:"," print \u003e\u003efile, ' ev_uint8_t %s_set;' % entry.Name()"," print \u003e\u003efile, '};\\n'",""," print \u003e\u003efile, \\","\"\"\"struct %(name)s *%(name)s_new(void);","struct %(name)s *%(name)s_new_with_arg(void *);","void %(name)s_free(struct %(name)s *);","void %(name)s_clear(struct %(name)s *);","void %(name)s_marshal(struct evbuffer *, const struct %(name)s *);","int %(name)s_unmarshal(struct %(name)s *, struct evbuffer *);","int %(name)s_complete(struct %(name)s *);","void evtag_marshal_%(name)s(struct evbuffer *, ev_uint32_t,"," const struct %(name)s *);","int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t,"," struct %(name)s *);\"\"\" % { 'name' : self._name }","",""," # Write a setting function of every variable"," for entry in self._entries:"," self.PrintIndented(file, '', entry.AssignDeclaration("," entry.AssignFuncName()))"," self.PrintIndented(file, '', entry.GetDeclaration("," entry.GetFuncName()))"," if entry.Array():"," self.PrintIndented(file, '', entry.AddDeclaration("," entry.AddFuncName()))",""," print \u003e\u003efile, '/* --- %s done --- */\\n' % self._name",""," def PrintCode(self, file):"," print \u003e\u003efile, ('/*\\n'"," ' * Implementation of %s\\n'"," ' */\\n') % self._name",""," print \u003e\u003efile, \\"," 'static struct %(name)s_access_ %(name)s_base__ = {' % \\"," { 'name' : self._name }"," for entry in self._entries:"," self.PrintIndented(file, ' ', entry.CodeBase())"," print \u003e\u003efile, '};\\n'",""," # Creation"," print \u003e\u003efile, ("," 'struct %(name)s *\\n'"," '%(name)s_new(void)\\n'"," '{\\n'"," ' return %(name)s_new_with_arg(NULL);\\n'"," '}\\n'"," '\\n'"," 'struct %(name)s *\\n'"," '%(name)s_new_with_arg(void *unused)\\n'"," '{\\n'"," ' struct %(name)s *tmp;\\n'"," ' if ((tmp = malloc(sizeof(struct %(name)s))) == NULL) {\\n'"," ' event_warn(\"%%s: malloc\", __func__);\\n'"," ' return (NULL);\\n'"," ' }\\n'"," ' tmp-\u003ebase = \u0026%(name)s_base__;\\n') % { 'name' : self._name }",""," for entry in self._entries:"," self.PrintIndented(file, ' ', entry.CodeInitialize('tmp'))"," print \u003e\u003efile, ' tmp-\u003e%s_set = 0;\\n' % entry.Name()",""," print \u003e\u003efile, ("," ' return (tmp);\\n'"," '}\\n')",""," # Adding"," for entry in self._entries:"," if entry.Array():"," self.PrintIndented(file, '', entry.CodeAdd())"," print \u003e\u003efile, ''",""," # Assigning"," for entry in self._entries:"," self.PrintIndented(file, '', entry.CodeAssign())"," print \u003e\u003efile, ''",""," # Getting"," for entry in self._entries:"," self.PrintIndented(file, '', entry.CodeGet())"," print \u003e\u003efile, ''",""," # Clearing"," print \u003e\u003efile, ( 'void\\n'"," '%(name)s_clear(struct %(name)s *tmp)\\n'"," '{'"," ) % { 'name' : self._name }"," for entry in self._entries:"," self.PrintIndented(file, ' ', entry.CodeClear('tmp'))",""," print \u003e\u003efile, '}\\n'",""," # Freeing"," print \u003e\u003efile, ( 'void\\n'"," '%(name)s_free(struct %(name)s *tmp)\\n'"," '{'"," ) % { 'name' : self._name }",""," for entry in self._entries:"," self.PrintIndented(file, ' ', entry.CodeFree('tmp'))",""," print \u003e\u003efile, (' free(tmp);\\n'"," '}\\n')",""," # Marshaling"," print \u003e\u003efile, ('void\\n'"," '%(name)s_marshal(struct evbuffer *evbuf, '"," 'const struct %(name)s *tmp)'"," '{') % { 'name' : self._name }"," for entry in self._entries:"," indent = ' '"," # Optional entries do not have to be set"," if entry.Optional():"," indent += ' '"," print \u003e\u003efile, ' if (tmp-\u003e%s_set) {' % entry.Name()"," self.PrintIndented("," file, indent,"," entry.CodeMarshal('evbuf', self.EntryTagName(entry),"," entry.GetVarName('tmp'),"," entry.GetVarLen('tmp')))"," if entry.Optional():"," print \u003e\u003efile, ' }'",""," print \u003e\u003efile, '}\\n'",""," # Unmarshaling"," print \u003e\u003efile, ('int\\n'"," '%(name)s_unmarshal(struct %(name)s *tmp, '"," ' struct evbuffer *evbuf)\\n'"," '{\\n'"," ' ev_uint32_t tag;\\n'"," ' while (evbuffer_get_length(evbuf) \u003e 0) {\\n'"," ' if (evtag_peek(evbuf, \u0026tag) == -1)\\n'"," ' return (-1);\\n'"," ' switch (tag) {\\n'"," ) % { 'name' : self._name }"," for entry in self._entries:"," print \u003e\u003efile, ' case %s:\\n' % self.EntryTagName(entry)"," if not entry.Array():"," print \u003e\u003efile, ("," ' if (tmp-\u003e%s_set)\\n'"," ' return (-1);'"," ) % (entry.Name())",""," self.PrintIndented("," file, ' ',"," entry.CodeUnmarshal('evbuf',"," self.EntryTagName(entry),"," entry.GetVarName('tmp'),"," entry.GetVarLen('tmp')))",""," print \u003e\u003efile, ( ' tmp-\u003e%s_set = 1;\\n' % entry.Name() +"," ' break;\\n' )"," print \u003e\u003efile, ( ' default:\\n'"," ' return -1;\\n'"," ' }\\n'"," ' }\\n' )"," # Check if it was decoded completely"," print \u003e\u003efile, ( ' if (%(name)s_complete(tmp) == -1)\\n'"," ' return (-1);'"," ) % { 'name' : self._name }",""," # Successfully decoded"," print \u003e\u003efile, ( ' return (0);\\n'"," '}\\n')",""," # Checking if a structure has all the required data"," print \u003e\u003efile, ("," 'int\\n'"," '%(name)s_complete(struct %(name)s *msg)\\n'"," '{' ) % { 'name' : self._name }"," for entry in self._entries:"," if not entry.Optional():"," code = ["," 'if (!msg-\u003e%(name)s_set)',"," ' return (-1);' ]"," code = TranslateList(code, entry.GetTranslation())"," self.PrintIndented("," file, ' ', code)",""," self.PrintIndented("," file, ' ',"," entry.CodeComplete('msg', entry.GetVarName('msg')))"," print \u003e\u003efile, ("," ' return (0);\\n'"," '}\\n' )",""," # Complete message unmarshaling"," print \u003e\u003efile, ("," 'int\\n'"," 'evtag_unmarshal_%(name)s(struct evbuffer *evbuf, '"," 'ev_uint32_t need_tag, struct %(name)s *msg)\\n'"," '{\\n'"," ' ev_uint32_t tag;\\n'"," ' int res = -1;\\n'"," '\\n'"," ' struct evbuffer *tmp = evbuffer_new();\\n'"," '\\n'"," ' if (evtag_unmarshal(evbuf, \u0026tag, tmp) == -1'"," ' || tag != need_tag)\\n'"," ' goto error;\\n'"," '\\n'"," ' if (%(name)s_unmarshal(msg, tmp) == -1)\\n'"," ' goto error;\\n'"," '\\n'"," ' res = 0;\\n'"," '\\n'"," ' error:\\n'"," ' evbuffer_free(tmp);\\n'"," ' return (res);\\n'"," '}\\n' ) % { 'name' : self._name }",""," # Complete message marshaling"," print \u003e\u003efile, ("," 'void\\n'"," 'evtag_marshal_%(name)s(struct evbuffer *evbuf, ev_uint32_t tag, '"," 'const struct %(name)s *msg)\\n'"," '{\\n'"," ' struct evbuffer *buf_ = evbuffer_new();\\n'"," ' assert(buf_ != NULL);\\n'"," ' %(name)s_marshal(buf_, msg);\\n'"," ' evtag_marshal_buffer(evbuf, tag, buf_);\\n '"," ' evbuffer_free(buf_);\\n'"," '}\\n' ) % { 'name' : self._name }","","class Entry:"," def __init__(self, type, name, tag):"," self._type = type"," self._name = name"," self._tag = int(tag)"," self._ctype = type"," self._optional = 0"," self._can_be_array = 0"," self._array = 0"," self._line_count = -1"," self._struct = None"," self._refname = None",""," self._optpointer = True"," self._optaddarg = True",""," def GetInitializer(self):"," assert 0, \"Entry does not provide initializer\"",""," def SetStruct(self, struct):"," self._struct = struct",""," def LineCount(self):"," assert self._line_count != -1"," return self._line_count",""," def SetLineCount(self, number):"," self._line_count = number",""," def Array(self):"," return self._array",""," def Optional(self):"," return self._optional",""," def Tag(self):"," return self._tag",""," def Name(self):"," return self._name",""," def Type(self):"," return self._type",""," def MakeArray(self, yes=1):"," self._array = yes",""," def MakeOptional(self):"," self._optional = 1",""," def Verify(self):"," if self.Array() and not self._can_be_array:"," raise RpcGenError("," 'Entry \"%s\" cannot be created as an array '"," 'around line %d' % (self._name, self.LineCount()))"," if not self._struct:"," raise RpcGenError("," 'Entry \"%s\" does not know which struct it belongs to '"," 'around line %d' % (self._name, self.LineCount()))"," if self._optional and self._array:"," raise RpcGenError("," 'Entry \"%s\" has illegal combination of optional and array '"," 'around line %d' % (self._name, self.LineCount()))",""," def GetTranslation(self, extradict = {}):"," mapping = {"," \"parent_name\" : self._struct.Name(),"," \"name\" : self._name,"," \"ctype\" : self._ctype,"," \"refname\" : self._refname,"," \"optpointer\" : self._optpointer and \"*\" or \"\","," \"optreference\" : self._optpointer and \"\u0026\" or \"\","," \"optaddarg\" :"," self._optaddarg and \", const %s value\" % self._ctype or \"\""," }"," for (k, v) in extradict.items():"," mapping[k] = v",""," return mapping",""," def GetVarName(self, var):"," return '%(var)s-\u003e%(name)s_data' % self.GetTranslation({ 'var' : var })",""," def GetVarLen(self, var):"," return 'sizeof(%s)' % self._ctype",""," def GetFuncName(self):"," return '%s_%s_get' % (self._struct.Name(), self._name)",""," def GetDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, %s *);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def CodeGet(self):"," code = ("," 'int',"," '%(parent_name)s_%(name)s_get(struct %(parent_name)s *msg, '"," '%(ctype)s *value)',"," '{',"," ' if (msg-\u003e%(name)s_set != 1)',"," ' return (-1);',"," ' *value = msg-\u003e%(name)s_data;',"," ' return (0);',"," '}' )"," code = '\\n'.join(code)"," code = code % self.GetTranslation()"," return code.split('\\n')",""," def AssignFuncName(self):"," return '%s_%s_assign' % (self._struct.Name(), self._name)",""," def AddFuncName(self):"," return '%s_%s_add' % (self._struct.Name(), self._name)",""," def AssignDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, const %s);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def CodeAssign(self):"," code = [ 'int',"," '%(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg,'"," ' const %(ctype)s value)',"," '{',"," ' msg-\u003e%(name)s_set = 1;',"," ' msg-\u003e%(name)s_data = value;',"," ' return (0);',"," '}' ]"," code = '\\n'.join(code)"," code = code % self.GetTranslation()"," return code.split('\\n')",""," def CodeClear(self, structname):"," code = [ '%s-\u003e%s_set = 0;' % (structname, self.Name()) ]",""," return code",""," def CodeComplete(self, structname, var_name):"," return []",""," def CodeFree(self, name):"," return []",""," def CodeBase(self):"," code = ["," '%(parent_name)s_%(name)s_assign,',"," '%(parent_name)s_%(name)s_get,'"," ]"," if self.Array():"," code.append('%(parent_name)s_%(name)s_add,')",""," code = '\\n'.join(code)"," code = code % self.GetTranslation()"," return code.split('\\n')","","class EntryBytes(Entry):"," def __init__(self, type, name, tag, length):"," # Init base class"," Entry.__init__(self, type, name, tag)",""," self._length = length"," self._ctype = 'ev_uint8_t'",""," def GetInitializer(self):"," return \"NULL\"",""," def GetVarLen(self, var):"," return '(%s)' % self._length",""," def CodeArrayAdd(self, varname, value):"," # XXX: copy here"," return [ '%(varname)s = NULL;' % { 'varname' : varname } ]",""," def GetDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, %s **);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def AssignDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, const %s *);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def Declaration(self):"," dcl = ['ev_uint8_t %s_data[%s];' % (self._name, self._length)]",""," return dcl",""," def CodeGet(self):"," name = self._name"," code = [ 'int',"," '%s_%s_get(struct %s *msg, %s **value)' % ("," self._struct.Name(), name,"," self._struct.Name(), self._ctype),"," '{',"," ' if (msg-\u003e%s_set != 1)' % name,"," ' return (-1);',"," ' *value = msg-\u003e%s_data;' % name,"," ' return (0);',"," '}' ]"," return code",""," def CodeAssign(self):"," name = self._name"," code = [ 'int',"," '%s_%s_assign(struct %s *msg, const %s *value)' % ("," self._struct.Name(), name,"," self._struct.Name(), self._ctype),"," '{',"," ' msg-\u003e%s_set = 1;' % name,"," ' memcpy(msg-\u003e%s_data, value, %s);' % ("," name, self._length),"," ' return (0);',"," '}' ]"," return code",""," def CodeUnmarshal(self, buf, tag_name, var_name, var_len):"," code = [ 'if (evtag_unmarshal_fixed(%(buf)s, %(tag)s, '"," '%(var)s, %(varlen)s) == -1) {',"," ' event_warnx(\"%%s: failed to unmarshal %(name)s\", __func__);',"," ' return (-1);',"," '}'"," ]"," return TranslateList(code,"," self.GetTranslation({"," 'var' : var_name,"," 'varlen' : var_len,"," 'buf' : buf,"," 'tag' : tag_name }))",""," def CodeMarshal(self, buf, tag_name, var_name, var_len):"," code = ['evtag_marshal(%s, %s, %s, %s);' % ("," buf, tag_name, var_name, var_len)]"," return code",""," def CodeClear(self, structname):"," code = [ '%s-\u003e%s_set = 0;' % (structname, self.Name()),"," 'memset(%s-\u003e%s_data, 0, sizeof(%s-\u003e%s_data));' % ("," structname, self._name, structname, self._name)]",""," return code",""," def CodeInitialize(self, name):"," code = ['memset(%s-\u003e%s_data, 0, sizeof(%s-\u003e%s_data));' % ("," name, self._name, name, self._name)]"," return code",""," def Verify(self):"," if not self._length:"," raise RpcGenError("," 'Entry \"%s\" needs a length '"," 'around line %d' % (self._name, self.LineCount()))",""," Entry.Verify(self)","","class EntryInt(Entry):"," def __init__(self, type, name, tag, bits=32):"," # Init base class"," Entry.__init__(self, type, name, tag)",""," self._can_be_array = 1"," if bits == 32:"," self._ctype = 'ev_uint32_t'"," self._marshal_type = 'int'"," if bits == 64:"," self._ctype = 'ev_uint64_t'"," self._marshal_type = 'int64'",""," def GetInitializer(self):"," return \"0\"",""," def CodeArrayFree(self, var):"," return []",""," def CodeArrayAssign(self, varname, srcvar):"," return [ '%(varname)s = %(srcvar)s;' % { 'varname' : varname,"," 'srcvar' : srcvar } ]",""," def CodeArrayAdd(self, varname, value):"," \"\"\"Returns a new entry of this type.\"\"\""," return [ '%(varname)s = %(value)s;' % { 'varname' : varname,"," 'value' : value } ]",""," def CodeUnmarshal(self, buf, tag_name, var_name, var_len):"," code = ["," 'if (evtag_unmarshal_%(ma)s(%(buf)s, %(tag)s, \u0026%(var)s) == -1) {',"," ' event_warnx(\"%%s: failed to unmarshal %(name)s\", __func__);',"," ' return (-1);',"," '}' ]"," code = '\\n'.join(code) % self.GetTranslation({"," 'ma' : self._marshal_type,"," 'buf' : buf,"," 'tag' : tag_name,"," 'var' : var_name })"," return code.split('\\n')",""," def CodeMarshal(self, buf, tag_name, var_name, var_len):"," code = ["," 'evtag_marshal_%s(%s, %s, %s);' % ("," self._marshal_type, buf, tag_name, var_name)]"," return code",""," def Declaration(self):"," dcl = ['%s %s_data;' % (self._ctype, self._name)]",""," return dcl",""," def CodeInitialize(self, name):"," code = ['%s-\u003e%s_data = 0;' % (name, self._name)]"," return code","","class EntryString(Entry):"," def __init__(self, type, name, tag):"," # Init base class"," Entry.__init__(self, type, name, tag)",""," self._can_be_array = 1"," self._ctype = 'char *'",""," def GetInitializer(self):"," return \"NULL\"",""," def CodeArrayFree(self, varname):"," code = ["," 'if (%(var)s != NULL) free(%(var)s);' ]",""," return TranslateList(code, { 'var' : varname })",""," def CodeArrayAssign(self, varname, srcvar):"," code = ["," 'if (%(var)s != NULL)',"," ' free(%(var)s);',"," '%(var)s = strdup(%(srcvar)s);',"," 'if (%(var)s == NULL) {',"," ' event_warnx(\"%%s: strdup\", __func__);',"," ' return (-1);',"," '}' ]",""," return TranslateList(code, { 'var' : varname,"," 'srcvar' : srcvar })",""," def CodeArrayAdd(self, varname, value):"," code = ["," 'if (%(value)s != NULL) {',"," ' %(var)s = strdup(%(value)s);',"," ' if (%(var)s == NULL) {',"," ' goto error;',"," ' }',"," '} else {',"," ' %(var)s = NULL;',"," '}' ]",""," return TranslateList(code, { 'var' : varname,"," 'value' : value })",""," def GetVarLen(self, var):"," return 'strlen(%s)' % self.GetVarName(var)",""," def CodeMakeInitalize(self, varname):"," return '%(va 8000 rname)s = NULL;' % { 'varname' : varname }",""," def CodeAssign(self):"," name = self._name"," code = \"\"\"int","%(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg,"," const %(ctype)s value)","{"," if (msg-\u003e%(name)s_data != NULL)"," free(msg-\u003e%(name)s_data);"," if ((msg-\u003e%(name)s_data = strdup(value)) == NULL)"," return (-1);"," msg-\u003e%(name)s_set = 1;"," return (0);","}\"\"\" % self.GetTranslation()",""," return code.split('\\n')",""," def CodeUnmarshal(self, buf, tag_name, var_name, var_len):"," code = ['if (evtag_unmarshal_string(%(buf)s, %(tag)s, \u0026%(var)s) == -1) {',"," ' event_warnx(\"%%s: failed to unmarshal %(name)s\", __func__);',"," ' return (-1);',"," '}'"," ]"," code = '\\n'.join(code) % self.GetTranslation({"," 'buf' : buf,"," 'tag' : tag_name,"," 'var' : var_name })"," return code.split('\\n')",""," def CodeMarshal(self, buf, tag_name, var_name, var_len):"," code = ['evtag_marshal_string(%s, %s, %s);' % ("," buf, tag_name, var_name)]"," return code",""," def CodeClear(self, structname):"," code = [ 'if (%s-\u003e%s_set == 1) {' % (structname, self.Name()),"," ' free(%s-\u003e%s_data);' % (structname, self.Name()),"," ' %s-\u003e%s_data = NULL;' % (structname, self.Name()),"," ' %s-\u003e%s_set = 0;' % (structname, self.Name()),"," '}'"," ]",""," return code",""," def CodeInitialize(self, name):"," code = ['%s-\u003e%s_data = NULL;' % (name, self._name)]"," return code",""," def CodeFree(self, name):"," code = ['if (%s-\u003e%s_data != NULL)' % (name, self._name),"," ' free (%s-\u003e%s_data);' % (name, self._name)]",""," return code",""," def Declaration(self):"," dcl = ['char *%s_data;' % self._name]",""," return dcl","","class EntryStruct(Entry):"," def __init__(self, type, name, tag, refname):"," # Init base class"," Entry.__init__(self, type, name, tag)",""," self._optpointer = False"," self._can_be_array = 1"," self._refname = refname"," self._ctype = 'struct %s*' % refname"," self._optaddarg = False",""," def GetInitializer(self):"," return \"NULL\"",""," def GetVarLen(self, var):"," return '-1'",""," def CodeArrayAdd(self, varname, value):"," code = ["," '%(varname)s = %(refname)s_new();',"," 'if (%(varname)s == NULL)',"," ' goto error;' ]",""," return TranslateList(code, self.GetTranslation({ 'varname' : varname }))",""," def CodeArrayFree(self, var):"," code = [ '%(refname)s_free(%(var)s);' % self.GetTranslation("," { 'var' : var }) ]"," return code",""," def CodeArrayAssign(self, var, srcvar):"," code = ["," 'int had_error = 0;',"," 'struct evbuffer *tmp = NULL;',"," '%(refname)s_clear(%(var)s);',"," 'if ((tmp = evbuffer_new()) == NULL) {',"," ' event_warn(\"%%s: evbuffer_new()\", __func__);',"," ' had_error = 1;',"," ' goto done;',"," '}',"," '%(refname)s_marshal(tmp, %(srcvar)s);',"," 'if (%(refname)s_unmarshal(%(var)s, tmp) == -1) {',"," ' event_warnx(\"%%s: %(refname)s_unmarshal\", __func__);',"," ' had_error = 1;',"," ' goto done;',"," '}',"," 'done:'"," 'if (tmp != NULL)',"," ' evbuffer_free(tmp);',"," 'if (had_error) {',"," ' %(refname)s_clear(%(var)s);',"," ' return (-1);',"," '}' ]",""," return TranslateList(code, self.GetTranslation({"," 'var' : var,"," 'srcvar' : srcvar}))",""," def CodeGet(self):"," name = self._name"," code = [ 'int',"," '%s_%s_get(struct %s *msg, %s *value)' % ("," self._struct.Name(), name,"," self._struct.Name(), self._ctype),"," '{',"," ' if (msg-\u003e%s_set != 1) {' % name,"," ' msg-\u003e%s_data = %s_new();' % (name, self._refname),"," ' if (msg-\u003e%s_data == NULL)' % name,"," ' return (-1);',"," ' msg-\u003e%s_set = 1;' % name,"," ' }',"," ' *value = msg-\u003e%s_data;' % name,"," ' return (0);',"," '}' ]"," return code",""," def CodeAssign(self):"," name = self._name"," code = \"\"\"int","%(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg,"," const %(ctype)s value)","{"," struct evbuffer *tmp = NULL;"," if (msg-\u003e%(name)s_set) {"," %(refname)s_clear(msg-\u003e%(name)s_data);"," msg-\u003e%(name)s_set = 0;"," } else {"," msg-\u003e%(name)s_data = %(refname)s_new();"," if (msg-\u003e%(name)s_data == NULL) {"," event_warn(\"%%s: %(refname)s_new()\", __func__);"," goto error;"," }"," }"," if ((tmp = evbuffer_new()) == NULL) {"," event_warn(\"%%s: evbuffer_new()\", __func__);"," goto error;"," }"," %(refname)s_marshal(tmp, value);"," if (%(refname)s_unmarshal(msg-\u003e%(name)s_data, tmp) == -1) {"," event_warnx(\"%%s: %(refname)s_unmarshal\", __func__);"," goto error;"," }"," msg-\u003e%(name)s_set = 1;"," evbuffer_free(tmp);"," return (0);"," error:"," if (tmp != NULL)"," evbuffer_free(tmp);"," if (msg-\u003e%(name)s_data != NULL) {"," %(refname)s_free(msg-\u003e%(name)s_data);"," msg-\u003e%(name)s_data = NULL;"," }"," return (-1);","}\"\"\" % self.GetTranslation()"," return code.split('\\n')",""," def CodeComplete(self, structname, var_name):"," code = [ 'if (%(structname)s-\u003e%(name)s_set \u0026\u0026 '"," '%(refname)s_complete(%(var)s) == -1)',"," ' return (-1);' ]",""," return TranslateList(code, self.GetTranslation({"," 'structname' : structname,"," 'var' : var_name }))",""," def CodeUnmarshal(self, buf, tag_name, var_name, var_len):"," code = ['%(var)s = %(refname)s_new();',"," 'if (%(var)s == NULL)',"," ' return (-1);',"," 'if (evtag_unmarshal_%(refname)s(%(buf)s, %(tag)s, '"," '%(var)s) == -1) {',"," ' event_warnx(\"%%s: failed to unmarshal %(name)s\", __func__);',"," ' return (-1);',"," '}'"," ]"," code = '\\n'.join(code) % self.GetTranslation({"," 'buf' : buf,"," 'tag' : tag_name,"," 'var' : var_name })"," return code.split('\\n')",""," def CodeMarshal(self, buf, tag_name, var_name, var_len):"," code = ['evtag_marshal_%s(%s, %s, %s);' % ("," self._refname, buf, tag_name, var_name)]"," return code",""," def CodeClear(self, structname):"," code = [ 'if (%s-\u003e%s_set == 1) {' % (structname, self.Name()),"," ' %s_free(%s-\u003e%s_data);' % ("," self._refname, structname, self.Name()),"," ' %s-\u003e%s_data = NULL;' % (structname, self.Name()),"," ' %s-\u003e%s_set = 0;' % (structname, self.Name()),"," '}'"," ]",""," return code",""," def CodeInitialize(self, name):"," code = ['%s-\u003e%s_data = NULL;' % (name, self._name)]"," return code",""," def CodeFree(self, name):"," code = ['if (%s-\u003e%s_data != NULL)' % (name, self._name),"," ' %s_free(%s-\u003e%s_data);' % ("," self._refname, name, self._name)]",""," return code",""," def Declaration(self):"," dcl = ['%s %s_data;' % (self._ctype, self._name)]",""," return dcl","","class EntryVarBytes(Entry):"," def __init__(self, type, name, tag):"," # Init base class"," Entry.__init__(self, type, name, tag)",""," self._ctype = 'ev_uint8_t *'",""," def GetInitializer(self):"," return \"NULL\"",""," def GetVarLen(self, var):"," return '%(var)s-\u003e%(name)s_length' % self.GetTranslation({ 'var' : var })",""," def CodeArrayAdd(self, varname, value):"," # xxx: copy"," return [ '%(varname)s = NULL;' % { 'varname' : varname } ]",""," def GetDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, %s *, ev_uint32_t *);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def AssignDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, const %s, ev_uint32_t);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def CodeAssign(self):"," name = self._name"," code = [ 'int',"," '%s_%s_assign(struct %s *msg, '"," 'const %s value, ev_uint32_t len)' % ("," self._struct.Name(), name,"," self._struct.Name(), self._ctype),"," '{',"," ' if (msg-\u003e%s_data != NULL)' % name,"," ' free (msg-\u003e%s_data);' % name,"," ' msg-\u003e%s_data = malloc(len);' % name,"," ' if (msg-\u003e%s_data == NULL)' % name,"," ' return (-1);',"," ' msg-\u003e%s_set = 1;' % name,"," ' msg-\u003e%s_length = len;' % name,"," ' memcpy(msg-\u003e%s_data, value, len);' % name,"," ' return (0);',"," '}' ]"," return code",""," def CodeGet(self):"," name = self._name"," code = [ 'int',"," '%s_%s_get(struct %s *msg, %s *value, ev_uint32_t *plen)' % ("," self._struct.Name(), name,"," self._struct.Name(), self._ctype),"," '{',"," ' if (msg-\u003e%s_set != 1)' % name,"," ' return (-1);',"," ' *value = msg-\u003e%s_data;' % name,"," ' *plen = msg-\u003e%s_length;' % name,"," ' return (0);',"," '}' ]"," return code",""," def CodeUnmarshal(self, buf, tag_name, var_name, var_len):"," code = ['if (evtag_payload_length(%(buf)s, \u0026%(varlen)s) == -1)',"," ' return (-1);',"," # We do not want DoS opportunities"," 'if (%(varlen)s \u003e evbuffer_get_length(%(buf)s))',"," ' return (-1);',"," 'if ((%(var)s = malloc(%(varlen)s)) == NULL)',"," ' return (-1);',"," 'if (evtag_unmarshal_fixed(%(buf)s, %(tag)s, %(var)s, '"," '%(varlen)s) == -1) {',"," ' event_warnx(\"%%s: failed to unmarshal %(name)s\", __func__);',"," ' return (-1);',"," '}'"," ]"," code = '\\n'.join(code) % self.GetTranslation({"," 'buf' : buf,"," 'tag' : tag_name,"," 'var' : var_name,"," 'varlen' : var_len })"," return code.split('\\n')",""," def CodeMarshal(self, buf, tag_name, var_name, var_len):"," code = ['evtag_marshal(%s, %s, %s, %s);' % ("," buf, tag_name, var_name, var_len)]"," return code",""," def CodeClear(self, structname):"," code = [ 'if (%s-\u003e%s_set == 1) {' % (structname, self.Name()),"," ' free (%s-\u003e%s_data);' % (structname, self.Name()),"," ' %s-\u003e%s_data = NULL;' % (structname, self.Name()),"," ' %s-\u003e%s_length = 0;' % (structname, self.Name()),"," ' %s-\u003e%s_set = 0;' % (structname, self.Name()),"," '}'"," ]",""," return code",""," def CodeInitialize(self, name):"," code = ['%s-\u003e%s_data = NULL;' % (name, self._name),"," '%s-\u003e%s_length = 0;' % (name, self._name) ]"," return code",""," def CodeFree(self, name):"," code = ['if (%s-\u003e%s_data != NULL)' % (name, self._name),"," ' free(%s-\u003e%s_data);' % (name, self._name)]",""," return code",""," def Declaration(self):"," dcl = ['ev_uint8_t *%s_data;' % self._name,"," 'ev_uint32_t %s_length;' % self._name]",""," return dcl","","class EntryArray(Entry):"," def __init__(self, entry):"," # Init base class"," Entry.__init__(self, entry._type, entry._name, entry._tag)",""," self._entry = entry"," self._refname = entry._refname"," self._ctype = self._entry._ctype"," self._optional = True"," self._optpointer = self._entry._optpointer"," self._optaddarg = self._entry._optaddarg",""," # provide a new function for accessing the variable name"," def GetVarName(var_name):"," return '%(var)s-\u003e%(name)s_data[%(index)s]' % \\"," self._entry.GetTranslation({'var' : var_name,"," 'index' : self._index})"," self._entry.GetVarName = GetVarName",""," def GetInitializer(self):"," return \"NULL\"",""," def GetVarName(self, var_name):"," return var_name",""," def GetVarLen(self, var_name):"," return '-1'",""," def GetDeclaration(self, funcname):"," \"\"\"Allows direct access to elements of the array.\"\"\""," code = ["," 'int %(funcname)s(struct %(parent_name)s *, int, %(ctype)s *);' %"," self.GetTranslation({ 'funcname' : funcname }) ]"," return code",""," def AssignDeclaration(self, funcname):"," code = [ 'int %s(struct %s *, int, const %s);' % ("," funcname, self._struct.Name(), self._ctype ) ]"," return code",""," def AddDeclaration(self, funcname):"," code = ["," '%(ctype)s %(optpointer)s '"," '%(funcname)s(struct %(parent_name)s *msg%(optaddarg)s);' % \\"," self.GetTranslation({ 'funcname' : funcname }) ]"," return code",""," def CodeGet(self):"," code = \"\"\"int","%(parent_name)s_%(name)s_get(struct %(parent_name)s *msg, int offset,"," %(ctype)s *value)","{"," if (!msg-\u003e%(name)s_set || offset \u003c 0 || offset \u003e= msg-\u003e%(name)s_length)"," return (-1);"," *value = msg-\u003e%(name)s_data[offset];"," return (0);","}\"\"\" % self.GetTranslation()",""," return code.split('\\n')",""," def CodeAssign(self):"," code = ["," 'int',"," '%(parent_name)s_%(name)s_assign(struct %(parent_name)s *msg, int off,',"," ' const %(ctype)s value)',"," '{',"," ' if (!msg-\u003e%(name)s_set || off \u003c 0 || off \u003e= msg-\u003e%(name)s_length)',"," ' return (-1);\\n',"," ' {' ]"," code = TranslateList(code, self.GetTranslation())",""," codearrayassign = self._entry.CodeArrayAssign("," 'msg-\u003e%(name)s_data[off]' % self.GetTranslation(), 'value')"," code += map(lambda x: ' ' + x, codearrayassign)",""," code += TranslateList(["," ' }',"," ' return (0);',"," '}' ], self.GetTranslation())",""," return code",""," def CodeAdd(self):"," codearrayadd = self._entry.CodeArrayAdd("," 'msg-\u003e%(name)s_data[msg-\u003e%(name)s_length - 1]' % self.GetTranslation(),"," 'value')"," code = ["," 'static int',"," '%(parent_name)s_%(name)s_expand_to_hold_more('"," 'struct %(parent_name)s *msg)',"," '{',"," ' int tobe_allocated = msg-\u003e%(name)s_num_allocated;',"," ' %(ctype)s* new_data = NULL;',"," ' tobe_allocated = !tobe_allocated ? 1 : tobe_allocated \u003c\u003c 1;',"," ' new_data = (%(ctype)s*) realloc(msg-\u003e%(name)s_data,',"," ' tobe_allocated * sizeof(%(ctype)s));',"," ' if (new_data == NULL)',"," ' return -1;',"," ' msg-\u003e%(name)s_data = new_data;',"," ' msg-\u003e%(name)s_num_allocated = tobe_allocated;',"," ' return 0;'"," '}',"," '',"," '%(ctype)s %(optpointer)s',"," '%(parent_name)s_%(name)s_add('"," 'struct %(parent_name)s *msg%(optaddarg)s)',"," '{',"," ' if (++msg-\u003e%(name)s_length \u003e= msg-\u003e%(name)s_num_allocated) {',"," ' if (%(parent_name)s_%(name)s_expand_to_hold_more(msg)\u003c0)',"," ' goto error;',"," ' }' ]",""," code = TranslateList(code, self.GetTranslation())",""," code += map(lambda x: ' ' + x, codearrayadd)",""," code += TranslateList(["," ' msg-\u003e%(name)s_set = 1;',"," ' return %(optreference)s(msg-\u003e%(name)s_data['"," 'msg-\u003e%(name)s_length - 1]);',"," 'error:',"," ' --msg-\u003e%(name)s_length;',"," ' return (NULL);',"," '}' ], self.GetTranslation())",""," return code",""," def CodeComplete(self, structname, var_name):"," self._index = 'i'"," tmp = self._entry.CodeComplete(structname, self._entry.GetVarName(var_name))"," # skip the whole loop if there is nothing to check"," if not tmp:"," return []",""," translate = self.GetTranslation({ 'structname' : structname })"," code = ["," '{',"," ' int i;',"," ' for (i = 0; i \u003c %(structname)s-\u003e%(name)s_length; ++i) {' ]",""," code = TranslateList(code, translate)",""," code += map(lambda x: ' ' + x, tmp)",""," code += ["," ' }',"," '}' ]",""," return code",""," def CodeUnmarshal(self, buf, tag_name, var_name, var_len):"," translate = self.GetTranslation({ 'var' : var_name,"," 'buf' : buf,"," 'tag' : tag_name,"," 'init' : self._entry.GetInitializer()})"," code = ["," 'if (%(var)s-\u003e%(name)s_length \u003e= %(var)s-\u003e%(name)s_num_allocated \u0026\u0026',"," ' %(parent_name)s_%(name)s_expand_to_hold_more(%(var)s) \u003c 0) {',"," ' puts(\"HEY NOW\");',"," ' return (-1);',"," '}']",""," # the unmarshal code directly returns"," code = TranslateList(code, translate)",""," self._index = '%(var)s-\u003e%(name)s_length' % translate"," code += self._entry.CodeUnmarshal(buf, tag_name,"," self._entry.GetVarName(var_name),"," self._entry.GetVarLen(var_name))",""," code += [ '++%(var)s-\u003e%(name)s_length;' % translate ]",""," return code",""," def CodeMarshal(self, buf, tag_name, var_name, var_len):"," code = ['{',"," ' int i;',"," ' for (i = 0; i \u003c %(var)s-\u003e%(name)s_length; ++i) {' ]",""," self._index = 'i'"," code += self._entry.CodeMarshal(buf, tag_name,"," self._entry.GetVarName(var_name),"," self._entry.GetVarLen(var_name))"," code += [' }',"," '}'"," ]",""," code = \"\\n\".join(code) % self.GetTranslation({ 'var' : var_name })",""," return code.split('\\n')",""," def CodeClear(self, structname):"," translate = self.GetTranslation({ 'structname' : structname })"," codearrayfree = self._entry.CodeArrayFree("," '%(structname)s-\u003e%(name)s_data[i]' % self.GetTranslation("," { 'structname' : structname } ))",""," code = [ 'if (%(structname)s-\u003e%(name)s_set == 1) {' ]",""," if codearrayfree:"," code += ["," ' int i;',"," ' for (i = 0; i \u003c %(structname)s-\u003e%(name)s_length; ++i) {' ]",""," code = TranslateList(code, translate)",""," if codearrayfree:"," code += map(lambda x: ' ' + x, codearrayfree)"," code += ["," ' }' ]",""," code += TranslateList(["," ' free(%(structname)s-\u003e%(name)s_data);',"," ' %(structname)s-\u003e%(name)s_data = NULL;',"," ' %(structname)s-\u003e%(name)s_set = 0;',"," ' %(structname)s-\u003e%(name)s_length = 0;',"," ' %(structname)s-\u003e%(name)s_num_allocated = 0;',"," '}'"," ], translate)",""," return code",""," def CodeInitialize(self, name):"," code = ['%s-\u003e%s_data = NULL;' % (name, self._name),"," '%s-\u003e%s_length = 0;' % (name, self._name),"," '%s-\u003e%s_num_allocated = 0;' % (name, self._name)]"," return code",""," def CodeFree(self, structname):"," code = self.CodeClear(structname);",""," code += TranslateList(["," 'free(%(structname)s-\u003e%(name)s_data);' ],"," self.GetTranslation({'structname' : structname }))",""," return code",""," def Declaration(self):"," dcl = ['%s *%s_data;' % (self._ctype, self._name),"," 'int %s_length;' % self._name,"," 'int %s_num_allocated;' % self._name ]",""," return dcl","","def NormalizeLine(line):"," global white"," global cppcomment",""," line = cppcomment.sub('', line)"," line = line.strip()"," line = white.sub(' ', line)",""," return line","","def ProcessOneEntry(factory, newstruct, entry):"," optional = 0"," array = 0"," entry_type = ''"," name = ''"," tag = ''"," tag_set = None"," separator = ''"," fixed_length = ''",""," tokens = entry.split(' ')"," while tokens:"," token = tokens[0]"," tokens = tokens[1:]",""," if not entry_type:"," if not optional and token == 'optional':"," optional = 1"," continue",""," if not array and token == 'array':"," array = 1"," continue",""," if not entry_type:"," entry_type = token"," continue",""," if not name:"," res = re.match(r'^([^\\[\\]]+)(\\[.*\\])?$', token)"," if not res:"," raise RpcGenError("," 'Cannot parse name: \\\"%s\\\" '"," 'around line %d' % (entry, line_count))"," name = res.group(1)"," fixed_length = res.group(2)"," if fixed_length:"," fixed_length = fixed_length[1:-1]"," continue",""," if not separator:"," separator = token"," if separator != '=':"," raise RpcGenError('Expected \"=\" after name \\\"%s\\\" got %s'"," % (name, token))"," continue",""," if not tag_set:"," tag_set = 1"," if not re.match(r'^(0x)?[0-9]+$', token):"," raise RpcGenError('Expected tag number: \\\"%s\\\"' % entry)"," tag = int(token, 0)"," continue",""," raise RpcGenError('Cannot parse \\\"%s\\\"' % entry)",""," if not tag_set:"," raise RpcGenError('Need tag number: \\\"%s\\\"' % entry)",""," # Create the right entry"," if entry_type == 'bytes':"," if fixed_length:"," newentry = factory.EntryBytes(entry_type, name, tag, fixed_length)"," else:"," newentry = factory.EntryVarBytes(entry_type, name, tag)"," elif entry_type == 'int' and not fixed_length:"," newentry = factory.EntryInt(entry_type, name, tag)"," elif entry_type == 'int64' and not fixed_length:"," newentry = factory.EntryInt(entry_type, name, tag, bits=64)"," elif entry_type == 'string' and not fixed_length:"," newentry = factory.EntryString(entry_type, name, tag)"," else:"," res = structref.match(entry_type)"," if res:"," # References another struct defined in our file"," newentry = factory.EntryStruct(entry_type, name, tag, res.group(1))"," else:"," raise RpcGenError('Bad type: \"%s\" in \"%s\"' % (entry_type, entry))",""," structs = []",""," if optional:"," newentry.MakeOptional()"," if array:"," newentry.MakeArray()",""," newentry.SetStruct(newstruct)"," newentry.SetLineCount(line_count)"," newentry.Verify()",""," if array:"," # We need to encapsulate this entry into a struct"," newname = newentry.Name()+ '_array'",""," # Now borgify the new entry."," newentry = factory.EntryArray(newentry)"," newentry.SetStruct(newstruct)"," newentry.SetLineCount(line_count)"," newentry.MakeArray()",""," newstruct.AddEntry(newentry)",""," return structs","","def ProcessStruct(factory, data):"," tokens = data.split(' ')",""," # First three tokens are: 'struct' 'name' '{'"," newstruct = factory.Struct(tokens[1])",""," inside = ' '.join(tokens[3:-1])",""," tokens = inside.split(';')",""," structs = []",""," for entry in tokens:"," entry = NormalizeLine(entry)"," if not entry:"," continue",""," # It's possible that new structs get defined in here"," structs.extend(ProcessOneEntry(factory, newstruct, entry))",""," structs.append(newstruct)"," return structs","","def GetNextStruct(file):"," global line_count"," global cppdirect",""," got_struct = 0",""," processed_lines = []",""," have_c_comment = 0"," data = ''"," while 1:"," line = file.readline()"," if not line:"," break",""," line_count += 1"," line = line[:-1]",""," if not have_c_comment and re.search(r'/\\*', line):"," if re.search(r'/\\*.*?\\*/', line):"," line = re.sub(r'/\\*.*?\\*/', '', line)"," else:"," line = re.sub(r'/\\*.*$', '', line)"," have_c_comment = 1",""," if have_c_comment:"," if not re.search(r'\\*/', line):"," continue"," have_c_comment = 0"," line = re.sub(r'^.*\\*/', '', line)",""," line = NormalizeLine(line)",""," if not line:"," continue",""," if not got_struct:"," if re.match(r'#include [\"\u003c].*[\u003e\"]', line):"," cppdirect.append(line)"," continue",""," if re.match(r'^#(if( |def)|endif)', line):"," cppdirect.append(line)"," continue",""," if re.match(r'^#define', line):"," headerdirect.append(line)"," continue",""," if not structdef.match(line):"," raise RpcGenError('Missing struct on line %d: %s'"," % (line_count, line))"," else:"," got_struct = 1"," data += line"," continue",""," # We are inside the struct"," tokens = line.split('}')"," if len(tokens) == 1:"," data += ' ' + line"," continue",""," if len(tokens[1]):"," raise RpcGenError('Trailing garbage after struct on line %d'"," % line_count)",""," # We found the end of the struct"," data += ' %s}' % tokens[0]"," break",""," # Remove any comments, that might be in there"," data = re.sub(r'/\\*.*\\*/', '', data)",""," return data","","","def Parse(factory, file):"," \"\"\""," Parses the input file and returns C code and corresponding header file."," \"\"\"",""," entities = []",""," while 1:"," # Just gets the whole struct nicely formatted"," data = GetNextStruct(file)",""," if not data:"," break",""," entities.extend(ProcessStruct(factory, data))",""," return entities","","class CCodeGenerator:"," def __init__(self):"," pass",""," def GuardName(self, name):"," # Use the complete provided path to the input file, with all"," # non-identifier characters replaced with underscores, to"," # reduce the chance of a collision between guard macros."," return 'EVENT_RPCOUT_' + nonident.sub('_', name).upper() + '_'",""," def HeaderPreamble(self, name):"," guard = self.GuardName(name)"," pre = ("," '/*\\n'"," ' * Automatically generated from %s\\n'"," ' */\\n\\n'"," '#ifndef %s\\n'"," '#define %s\\n\\n' ) % ("," name, guard, guard)",""," for statement in headerdirect:"," pre += '%s\\n' % statement"," if headerdirect:"," pre += '\\n'",""," pre += ("," '#include \u003cevent2/util.h\u003e /* for ev_uint*_t */\\n'"," '#include \u003cevent2/rpc.h\u003e\\n'"," )",""," return pre",""," def HeaderPostamble(self, name):"," guard = self.GuardName(name)"," return '#endif /* %s */' % guard",""," def BodyPreamble(self, name, header_file):"," global _NAME"," global _VERSION",""," slash = header_file.rfind('/')"," if slash != -1:"," header_file = header_file[slash+1:]",""," pre = ( '/*\\n'"," ' * Automatically generated from %s\\n'"," ' * by %s/%s. DO NOT EDIT THIS FILE.\\n'"," ' */\\n\\n' ) % (name, _NAME, _VERSION)"," pre += ( '#include \u003cstdlib.h\u003e\\n'"," '#include \u003cstring.h\u003e\\n'"," '#include \u003cassert.h\u003e\\n'"," '#include \u003cevent2/event-config.h\u003e\\n'"," '#include \u003cevent2/event.h\u003e\\n'"," '#include \u003cevent2/buffer.h\u003e\\n'"," '#include \u003cevent2/tag.h\u003e\\n\\n'"," '#ifdef EVENT____func__\\n'"," '#define __func__ EVENT____func__\\n'"," '#endif\\n\\n'"," )",""," for statement in cppdirect:"," pre += '%s\\n' % statement",""," pre += '\\n#include \"%s\"\\n\\n' % header_file",""," pre += 'void event_warn(const char *fmt, ...);\\n'"," pre += 'void event_warnx(const char *fmt, ...);\\n\\n'",""," return pre",""," def HeaderFilename(self, filename):"," return '.'.join(filename.split('.')[:-1]) + '.h'",""," def CodeFilename(self, filename):"," return '.'.join(filename.split('.')[:-1]) + '.gen.c'",""," def Struct(self, name):"," return StructCCode(name)",""," def EntryBytes(self, entry_type, name, tag, fixed_length):"," return EntryBytes(entry_type, name, tag, fixed_length)",""," def EntryVarBytes(self, entry_type, name, tag):"," return EntryVarBytes(entry_type, name, tag)",""," def EntryInt(self, entry_type, name, tag, bits=32):"," return EntryInt(entry_type, name, tag, bits)",""," def EntryString(self, entry_type, name, tag):"," return EntryString(entry_type, name, tag)",""," def EntryStruct(self, entry_type, name, tag, struct_name):"," return EntryStruct(entry_type, name, tag, struct_name)",""," def EntryArray(self, entry):"," return EntryArray(entry)","","class Usage(RpcGenError):"," def __init__(self, argv0):"," RpcGenError.__init__(\"usage: %s input.rpc [[output.h] output.c]\""," % argv0)","","class CommandLine:"," def __init__(self, argv):"," \"\"\"Initialize a command-line to launch event_rpcgen, as if"," from a command-line with CommandLine(sys.argv). If you're"," calling this directly, remember to provide a dummy value"," for sys.argv[0]"," \"\"\""," self.filename = None"," self.header_file = None"," self.impl_file = None"," self.factory = CCodeGenerator()",""," if len(argv) \u003e= 2 and argv[1] == '--quiet':"," global QUIETLY"," QUIETLY = 1"," del argv[1]",""," if len(argv) \u003c 2 or len(argv) \u003e 4:"," raise Usage(argv[0])",""," self.filename = argv 8000 [1].replace('\\\\', '/')"," if len(argv) == 3:"," self.impl_file = argv[2].replace('\\\\', '/')"," if len(argv) == 4:"," self.header_file = argv[2].replace('\\\\', '/')"," self.impl_file = argv[3].replace('\\\\', '/')",""," if not self.filename:"," raise Usage(argv[0])",""," if not self.impl_file:"," self.impl_file = self.factory.CodeFilename(self.filename)",""," if not self.header_file:"," self.header_file = self.factory.HeaderFilename(self.impl_file)",""," if not self.impl_file.endswith('.c'):"," raise RpcGenError(\"can only generate C implementation files\")"," if not self.header_file.endswith('.h'):"," raise RpcGenError(\"can only generate C header files\")",""," def run(self):"," filename = self.filename"," header_file = self.header_file"," impl_file = self.impl_file"," factory = self.factory",""," declare('Reading \\\"%s\\\"' % filename)",""," fp = open(filename, 'r')"," entities = Parse(factory, fp)"," fp.close()",""," declare('... creating \"%s\"' % header_file)"," header_fp = open(header_file, 'w')"," print \u003e\u003eheader_fp, factory.HeaderPreamble(filename)",""," # Create forward declarations: allows other structs to reference"," # each other"," for entry in entities:"," entry.PrintForwardDeclaration(header_fp)"," print \u003e\u003eheader_fp, ''",""," for entry in entities:"," entry.PrintTags(header_fp)"," entry.PrintDeclaration(header_fp)"," print \u003e\u003eheader_fp, factory.HeaderPostamble(filename)"," header_fp.close()",""," declare('... creating \"%s\"' % impl_file)"," impl_fp = open(impl_file, 'w')"," print \u003e\u003eimpl_fp, factory.BodyPreamble(filename, header_file)"," for entry in entities:"," entry.PrintCode(impl_fp)"," impl_fp.close()","","if __name__ == '__main__':"," try:"," CommandLine(sys.argv).run()"," sys.exit(0)",""," except RpcGenError, e:"," print \u003e\u003esys.stderr, e"," sys.exit(1)",""," except EnvironmentError, e:"," if e.filename and e.strerror:"," print \u003e\u003esys.stderr, \"%s: %s\" % (e.filename, e.strerror)"," sys.exit(1)"," elif e.strerror:"," print \u003e\u003e sys.stderr, e.strerror"," sys.exit(1)"," else:"," raise"],"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/hytd/libevent/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"event_rpcgen.py","displayUrl":"https://github.com/hytd/libevent/blob/master/event_rpcgen.py?raw=true","headerInfo":{"blobSize":"54.3 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"c537565","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fhytd%2Flibevent%2Fblob%2Fmaster%2Fevent_rpcgen.py","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"1728","truncatedSloc":"1414"},"mode":"executable file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Python","languageID":303,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/hytd/libevent/blob/master/event_rpcgen.py","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/hytd/libevent/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/hytd/libevent/raw/refs/heads/master/event_rpcgen.py","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"_NAME","kind":"constant","ident_start":578,"ident_end":583,"extent_start":578,"extent_end":603,"fully_qualified_name":"_NAME","ident_utf16":{"start":{"line_number":19,"utf16_col":0},"end":{"line_number":19,"utf16_col":5}},"extent_utf16":{"start":{"line_number":19,"utf16_col":0},"end":{"line_number":19,"utf16_col":25}}},{"name":"_VERSION","kind":"constant","ident_start":604,"ident_end":612,"extent_start":604,"extent_end":620,"fully_qualified_name":"_VERSION","ident_utf16":{"start":{"line_number":20,"utf16_col":0},"end":{"line_number":20,"utf16_col":8}},"extent_utf16":{"start":{"line_number":20,"utf16_col":0},"end":{"line_number":20,"utf16_col":16}}},{"name":"line_count","kind":"constant","ident_start":632,"ident_end":642,"extent_start":632,"extent_end":646,"fully_qualified_name":"line_count","ident_utf16":{"start":{"line_number":23,"utf16_col":0},"end":{"line_number":23,"utf16_col":10}},"extent_utf16":{"start":{"line_number":23,"utf16_col":0},"end":{"line_number":23,"utf16_col":14}}},{"name":"white","kind":"constant","ident_start":648,"ident_end":653,"extent_start":648,"extent_end":674,"fully_qualified_name":"white","ident_utf16":{"start":{"line_number":25,"utf16_col":0},"end":{"line_number":25,"utf16_col":5}},"extent_utf16":{"start":{"line_number":25,"utf16_col":0},"end":{"line_number":25,"utf16_col":26}}},{"name":"cppcomment","kind":"constant","ident_start":675,"ident_end":685,"extent_start":675,"extent_end":710,"fully_qualified_name":"cppcomment","ident_utf16":{"start":{"line_number":26,"utf16_col":0},"end":{"line_number":26,"utf16_col":10}},"extent_utf16":{"start":{"line_number":26,"utf16_col":0},"end":{"line_number":26,"utf16_col":35}}},{"name":"nonident","kind":"constant","ident_start":711,"ident_end":719,"extent_start":711,"extent_end":750,"fully_qualified_name":"nonident","ident_utf16":{"start":{"line_number":27,"utf16_col":0},"end":{"line_number":27,"utf16_col":8}},"extent_utf16":{"start":{"line_number":27,"utf16_col":0},"end":{"line_number":27,"utf16_col":39}}},{"name":"structref","kind":"constant","ident_start":751,"ident_end":760,"extent_start":751,"extent_end":814,"fully_qualified_name":"structref","ident_utf16":{"start":{"line_number":28,"utf16_col":0},"end":{"line_number":28,"utf16_col":9}},"extent_utf16":{"start":{"line_number":28,"utf16_col":0},"end":{"line_number":28,"utf16_col":63}}},{"name":"structdef","kind":"constant","ident_start":815,"ident_end":824,"extent_start":815,"extent_end":877,"fully_qualified_name":"structdef","ident_utf16":{"start":{"line_number":29,"utf16_col":0},"end":{"line_number":29,"utf16_col":9}},"extent_utf16":{"start":{"line_number":29,"utf16_col":0},"end":{"line_number":29,"utf16_col":62}}},{"name":"headerdirect","kind":"constant","ident_start":879,"ident_end":891,"extent_start":879,"extent_end":896,"fully_qualified_name":"headerdirect","ident_utf16":{"start":{"line_number":31,"utf16_col":0},"end":{"line_number":31,"utf16_col":12}},"extent_utf16":{"start":{"line_number":31,"utf16_col":0},"end":{"line_number":31,"utf16_col":17}}},{"name":"cppdirect","kind":"constant","ident_start":897,"ident_end":906,"extent_start":897,"extent_end":911,"fully_qualified_name":"cppdirect","ident_utf16":{"start":{"line_number":32,"utf16_col":0},"end":{"line_number":32,"utf16_col":9}},"extent_utf16":{"start":{"line_number":32,"utf16_col":0},"end":{"line_number":32,"utf16_col":14}}},{"name":"QUIETLY","kind":"constant","ident_start":913,"ident_end":920,"extent_start":913,"extent_end":924,"fully_qualified_name":"QUIETLY","ident_utf16":{"start":{"line_number":34,"utf16_col":0},"end":{"line_number":34,"utf16_col":7}},"extent_utf16":{"start":{"line_number":34,"utf16_col":0},"end":{"line_number":34,"utf16_col":11}}},{"name":"declare","kind":"function","ident_start":930,"ident_end":937,"extent_start":926,"extent_end":977,"fully_qualified_name":"declare","ident_utf16":{"start":{"line_number":36,"utf16_col":4},"end":{"line_number":36,"utf16_col":11}},"extent_utf16":{"start":{"line_number":36,"utf16_col":0},"end":{"line_number":38,"utf16_col":15}}},{"name":"TranslateList","kind":"function","ident_start":983,"ident_end":996,"extent_start":979,"extent_end":1058,"fully_qualified_name":"TranslateList","ident_utf16":{"start":{"line_number":40,"utf16_col":4},"end":{"line_number":40,"utf16_col":17}},"extent_utf16":{"start":{"line_number":40,"utf16_col":0},"end":{"line_number":41,"utf16_col":44}}},{"name":"RpcGenError","kind":"class","ident_start":1101,"ident_end":1112,"extent_start":1095,"extent_end":1252,"fully_qualified_name":"RpcGenError","ident_utf16":{"start":{"line_number":44,"utf16_col":6},"end":{"line_number":44,"utf16_col":17}},"extent_utf16":{"start":{"line_number":44,"utf16_col":0},"end":{"line_number":48,"utf16_col":36}}},{"name":"__init__","kind":"function","ident_start":1137,"ident_end":1145,"extent_start":1133,"extent_end":1188,"fully_qualified_name":"RpcGenError.__init__","ident_utf16":{"start":{"line_number":45,"utf16_col":12},"end":{"line_number":45,"utf16_col":20}},"extent_utf16":{"start":{"line_number":45,"utf16_col":8},"end":{"line_number":46,"utf16_col":30}}},{"name":"__str__","kind":"function","ident_start":1201,"ident_end":1208,"extent_start":1197,"extent_end":1252,"fully_qualified_name":"RpcGenError.__str__","ident_utf16":{"start":{"line_number":47,"utf16_col":12},"end":{"line_number":47,"utf16_col":19}},"extent_utf16":{"start":{"line_number":47,"utf16_col":8},"end":{"line_number":48,"utf16_col":36}}},{"name":"Struct","kind":"class","ident_start":1299,"ident_end":1305,"extent_start":1293,"extent_end":2362,"fully_qualified_name":"Struct","ident_utf16":{"start":{"line_number":51,"utf16_col":6},"end":{"line_number":51,"utf16_col":12}},"extent_utf16":{"start":{"line_number":51,"utf16_col":0},"end":{"line_number":80,"utf16_col":49}}},{"name":"__init__","kind":"function","ident_start":1315,"ident_end":1323,"extent_start":1311,"extent_end":1460,"fully_qualified_name":"Struct.__init__","ident_utf16":{"start":{"line_number":52,"utf16_col":8},"end":{"line_number":52,"utf16_col":16}},"extent_utf16":{"start":{"line_number":52,"utf16_col":4},"end":{"line_number":56,"utf16_col":46}}},{"name":"AddEntry","kind":"function","ident_start":1470,"ident_end":1478,"extent_start":1466,"extent_end":1906,"fully_qualified_name":"Struct.AddEntry","ident_utf16":{"start":{"line_number":58,"utf16_col":8},"end":{"line_number":58,"utf16_col":16}},"extent_utf16":{"start":{"line_number":58,"utf16_col":4},"end":{"line_number":66,"utf16_col":53}}},{"name":"Name","kind":"function","ident_start":1916,"ident_end":1920,"extent_start":1912,"extent_end":1953,"fully_qualified_name":"Struct.Name","ident_utf16":{"start":{"line_number":68,"utf16_col":8},"end":{"line_number":68,"utf16_col":12}},"extent_utf16":{"start":{"line_number":68,"utf16_col":4},"end":{"line_number":69,"utf16_col":25}}},{"name":"EntryTagName","kind":"function","ident_start":1963,"ident_end":1975,"extent_start":1959,"extent_end":2161,"fully_qualified_name":"Struct.EntryTagName","ident_utf16":{"start":{"line_number":71,"utf16_col":8},"end":{"line_number":71,"utf16_col":20}},"extent_utf16":{"start":{"line_number":71,"utf16_col":4},"end":{"line_number":75,"utf16_col":27}}},{"name":"PrintIndented","kind":"function","ident_start":2171,"ident_end":2184,"extent_start":2167,"extent_end":2362,"fully_qualified_name":"Struct.PrintIndented","ident_utf16":{"start":{"line_number":77,"utf16_col":8},"end":{"line_number":77,"utf16_col":21}},"extent_utf16":{"start":{"line_number":77,"utf16_col":4},"end":{"line_number":80,"utf16_col":49}}},{"name":"StructCCode","kind":"class","ident_start":2370,"ident_end":2381,"extent_start":2364,"extent_end":12160,"fully_qualified_name":"StructCCode","ident_utf16":{"start":{"line_number":82,"utf16_col":6},"end":{"line_number":82,"utf16_col":17}},"extent_utf16":{"start":{"line_number":82,"utf16_col":0},"end":{"line_number":345,"utf16_col":45}}},{"name":"__init__","kind":"function","ident_start":2454,"ident_end":2462,"extent_start":2450,"extent_end":2511,"fully_qualified_name":"StructCCode.__init__","ident_utf16":{"start":{"line_number":85,"utf16_col":8},"end":{"line_number":85,"utf16_col":16}},"extent_utf16":{"start":{"line_number":85,"utf16_col":4},"end":{"line_number":86,"utf16_col":35}}},{"name":"PrintTags","kind":"function","ident_start":2521,"ident_end":2530,"extent_start":2517,"extent_end":2967,"fully_qualified_name":"StructCCode.PrintTags","ident_utf16":{"start":{"line_number":88,"utf16_col":8},"end":{"line_number":88,"utf16_col":17}},"extent_utf16":{"start":{"line_number":88,"utf16_col":4},"end":{"line_number":96,"utf16_col":28}}},{"name":"PrintForwardDeclaration","kind":"function","ident_start":2977,"ident_end":3000,"extent_start":2973,"extent_end":3061,"fully_qualified_name":"StructCCode.PrintForwardDeclaration","ident_utf16":{"start":{"line_number":98,"utf16_col":8},"end":{"line_number":98,"utf16_col":31}},"extent_utf16":{"start":{"line_number":98,"utf16_col":4},"end":{"line_number":99,"utf16_col":47}}},{"name":"PrintDeclaration","kind":"function","ident_start":3071,"ident_end":3087,"extent_start":3067,"extent_end":5092,"fully_qualified_name":"StructCCode.PrintDeclaration","ident_utf16":{"start":{"line_number":101,"utf16_col":8},"end":{"line_number":101,"utf16_col":24}},"extent_utf16":{"start":{"line_number":101,"utf16_col":4},"end":{"line_number":148,"utf16_col":60}}},{"name":"PrintCode","kind":"function","ident_start":5102,"ident_end":5111,"extent_start":5098,"extent_end":12160,"fully_qualified_name":"StructCCode.PrintCode","ident_utf16":{"start":{"line_number":150,"utf16_col":8},"end":{"line_number":150,"utf16_col":17}},"extent_utf16":{"start":{"line_number":150,"utf16_col":4},"end":{"line_number":345,"utf16_col":45}}},{"name":"Entry","kind":"class","ident_start":12168,"ident_end":12173,"extent_start":12162,"extent_end":16731,"fully_qualified_name":"Entry","ident_utf16":{"start":{"line_number":347,"utf16_col":6},"end":{"line_number":347,"utf16_col":11}},"extent_utf16":{"start":{"line_number":347,"utf16_col":0},"end":{"line_number":501,"utf16_col":31}}},{"name":"__init__","kind":"function","ident_start":12183,"ident_end":12191,"extent_start":12179,"extent_end":12556,"fully_qualified_name":"Entry.__init__","ident_utf16":{"start":{"line_number":348,"utf16_col":8},"end":{"line_number":348,"utf16_col":16}},"extent_utf16":{"start":{"line_number":348,"utf16_col":4},"end":{"line_number":361,"utf16_col":30}}},{"name":"GetInitializer","kind":"function","ident_start":12566,"ident_end":12580,"extent_start":12562,"extent_end":12642,"fully_qualified_name":"Entry.GetInitializer","ident_utf16":{"start":{"line_number":363,"utf16_col":8},"end":{"line_number":363,"utf16_col":22}},"extent_utf16":{"start":{"line_number":363,"utf16_col":4},"end":{"line_number":364,"utf16_col":54}}},{"name":"SetStruct","kind":"function","ident_start":12652,"ident_end":12661,"extent_start":12648,"extent_end":12706,"fully_qualified_name":"Entry.SetStruct","ident_utf16":{"start":{"line_number":366,"utf16_col":8},"end":{"line_number":366,"utf16_col":17}},"extent_utf16":{"start":{"line_number":366,"utf16_col":4},"end":{"line_number":367,"utf16_col":29}}},{"name":"LineCount","kind":"function","ident_start":12716,"ident_end":12725,"extent_start":12712,"extent_end":12802,"fully_qualified_name":"Entry.LineCount","ident_utf16":{"start":{"line_number":369,"utf16_col":8},"end":{"line_number":369,"utf16_col":17}},"extent_utf16":{"start":{"line_number":369,"utf16_col":4},"end":{"line_number":371,"utf16_col":31}}},{"name":"SetLineCount","kind":"function","ident_start":12812,"ident_end":12824,"extent_start":12808,"extent_end":12873,"fully_qualified_name":"Entry.SetLineCount","ident_utf16":{"start":{"line_number":373,"utf16_col":8},"end":{"line_number":373,"utf16_col":20}},"extent_utf16":{"start":{"line_number":373,"utf16_col":4},"end":{"line_number":374,"utf16_col":33}}},{"name":"Array","kind":"function","ident_start":12883,"ident_end":12888,"extent_start":12879,"extent_end":12922,"fully_qualified_name":"Entry.Array","ident_utf16":{"start":{"line_number":376,"utf16_col":8},"end":{"line_number":376,"utf16_col":13}},"extent_utf16":{"start":{"line_number":376,"utf16_col":4},"end":{"line_number":377,"utf16_col":26}}},{"name":"Optional","kind":"function","ident_start":12932,"ident_end":12940,"extent_start":12928,"extent_end":12977,"fully_qualified_name":"Entry.Optional","ident_utf16":{"start":{"line_number":379,"utf16_col":8},"end":{"line_number":379,"utf16_col":16}},"extent_utf16":{"start":{"line_number":379,"utf16_col":4},"end":{"line_number":380,"utf16_col":29}}},{"name":"Tag","kind":"function","ident_start":12987,"ident_end":12990,"extent_start":12983,"extent_end":13022,"fully_qualified_name":"Entry.Tag","ident_utf16":{"start":{"line_number":382,"utf16_col":8},"end":{"line_number":382,"utf16_col":11}},"extent_utf16":{"start":{"line_number":382,"utf16_col":4},"end":{"line_number":383,"utf16_col":24}}},{"name":"Name","kind":"function","ident_start":13032,"ident_end":13036,"extent_start":13028,"extent_end":13069,"fully_qualified_name":"Entry.Name","ident_utf16":{"start":{"line_number":385,"utf16_col":8},"end":{"line_number":385,"utf16_col":12}},"extent_utf16":{"start":{"line_number":385,"utf16_col":4},"end":{"line_number":386,"utf16_col":25}}},{"name":"Type","kind":"function","ident_start":13079,"ident_end":13083,"extent_start":13075,"extent_end":13116,"fully_qualified_name":"Entry.Type","ident_utf16":{"start":{"line_number":388,"utf16_col":8},"end":{"line_number":388,"utf16_col":12}},"extent_utf16":{"start":{"line_number":388,"utf16_col":4},"end":{"line_number":389,"utf16_col":25}}},{"name":"MakeArray","kind":"function","ident_start":13126,"ident_end":13135,"extent_start":13122,"extent_end":13175,"fully_qualified_name":"Entry.MakeArray","ident_utf16":{"start":{"line_number":391,"utf16_col":8},"end":{"line_number":391,"utf16_col":17}},"extent_utf16":{"start":{"line_number":391,"utf16_col":4},"end":{"line_number":392,"utf16_col":25}}},{"name":"MakeOptional","kind":"function","ident_start":13185,"ident_end":13197,"extent_start":13181,"extent_end":13231,"fully_qualified_name":"Entry.MakeOptional","ident_utf16":{"start":{"line_number":394,"utf16_col":8},"end":{"line_number":394,"utf16_col":20}},"extent_utf16":{"start":{"line_number":394,"utf16_col":4},"end":{"line_number":395,"utf16_col":26}}},{"name":"Verify","kind":"function","ident_start":13241,"ident_end":13247,"extent_start":13237,"extent_end":13879,"fully_qualified_name":"Entry.Verify","ident_utf16":{"start":{"line_number":397,"utf16_col":8},"end":{"line_number":397,"utf16_col":14}},"extent_utf16":{"start":{"line_number":397,"utf16_col":4},"end":{"line_number":409,"utf16_col":66}}},{"name":"GetTranslation","kind":"function","ident_start":13889,"ident_end":13903,"extent_start":13885,"extent_end":14425,"fully_qualified_name":"Entry.GetTranslation","ident_utf16":{"start":{"line_number":411,"utf16_col":8},"end":{"line_number":411,"utf16_col":22}},"extent_utf16":{"start":{"line_number":411,"utf16_col":4},"end":{"line_number":425,"utf16_col":22}}},{"name":"GetVarName","kind":"function","ident_start":14435,"ident_end":14445,"extent_start":14431,"extent_end":14536,"fully_qualified_name":"Entry.GetVarName","ident_utf16":{"start":{"line_number":427,"utf16_col":8},"end":{"line_number":427,"utf16_col":18}},"extent_utf16":{"start":{"line_number":427,"utf16_col":4},"end":{"line_number":428,"utf16_col":78}}},{"name":"GetVarLen","kind":"function","ident_start":14546,"ident_end":14555,"extent_start":14542,"extent_end":14609,"fully_qualified_name":"Entry.GetVarLen","ident_utf16":{"start":{"line_number":430,"utf16_col":8},"end":{"line_number":430,"utf16_col":17}},"extent_utf16":{"start":{"line_number":430,"utf16_col":4},"end":{"line_number":431,"utf16_col":41}}},{"name":"GetFuncName","kind":"function","ident_start":14619,"ident_end":14630,"extent_start":14615,"extent_end":14700,"fully_qualified_name":"Entry.GetFuncName","ident_utf16":{"start":{"line_number":433,"utf16_col":8},"end":{"line_number":433,"utf16_col":19}},"extent_utf16":{"start":{"line_number":433,"utf16_col":4},"end":{"line_number":434,"utf16_col":62}}},{"name":"GetDeclaration","kind":"function","ident_start":14710,"ident_end":14724,"extent_start":14706,"extent_end":14870,"fully_qualified_name":"Entry.GetDeclaration","ident_utf16":{"start":{"line_number":436,"utf16_col":8},"end":{"line_number":436,"utf16_col":22}},"extent_utf16":{"start":{"line_number":436,"utf16_col":4},"end":{"line_number":439,"utf16_col":19}}},{"name":"CodeGet","kind":"function","ident_start":14880,"ident_end":14887,"extent_start":14876,"extent_end":15330,"fully_qualified_name":"Entry.CodeGet","ident_utf16":{"start":{"line_number":441,"utf16_col":8},"end":{"line_number":441,"utf16_col":15}},"extent_utf16":{"start":{"line_number":441,"utf16_col":4},"end":{"line_number":454,"utf16_col":31}}},{"name":"AssignFuncName","kind":"function","ident_start":15340,"ident_end":15354,"extent_start":15336,"extent_end":15427,"fully_qualified_name":"Entry.AssignFuncName","ident_utf16":{"start":{"line_number":456,"utf16_col":8},"end":{"line_number":456,"utf16_col":22}},"extent_utf16":{"start":{"line_number":456,"utf16_col":4},"end":{"line_number":457,"utf16_col":65}}},{"name":"AddFuncName","kind":"function","ident_start":15437,"ident_end":15448,"extent_start":15433,"extent_end":15518,"fully_qualified_name":"Entry.AddFuncName","ident_utf16":{"start":{"line_number":459,"utf16_col":8},"end":{"line_number":459,"utf16_col":19}},"extent_utf16":{"start":{"line_number":459,"utf16_col":4},"end":{"line_number":460,"utf16_col":62}}},{"name":"AssignDeclaration","kind":"function","ident_start":15528,"ident_end":15545,"extent_start":15524,"extent_end":15695,"fully_qualified_name":"Entry.AssignDeclaration","ident_utf16":{"start":{"line_number":462,"utf16_col":8},"end":{"line_number":462,"utf16_col":25}},"extent_utf16":{"start":{"line_number":462,"utf16_col":4},"end":{"line_number":465,"utf16_col":19}}},{"name":"CodeAssign","kind":"function","ident_start":15705,"ident_end":15715,"extent_start":15701,"extent_end":16151,"fully_qualified_name":"Entry.CodeAssign","ident_utf16":{"start":{"line_number":467,"utf16_col":8},"end":{"line_number":467,"utf16_col":18}},"extent_utf16":{"start":{"line_number":467,"utf16_col":4},"end":{"line_number":478,"utf16_col":31}}},{"name":"CodeClear","kind":"function","ident_start":16161,"ident_end":16170,"extent_start":16157,"extent_end":16275,"fully_qualified_name":"Entry.CodeClear","ident_utf16":{"start":{"line_number":480,"utf16_col":8},"end":{"line_number":480,"utf16_col":17}},"extent_utf16":{"start":{"line_number":480,"utf16_col":4},"end":{"line_number":483,"utf16_col":19}}},{"name":"CodeComplete","kind":"function","ident_start":16285,"ident_end":16297,"extent_start":16281,"extent_end":16344,"fully_qualified_name":"Entry.CodeComplete","ident_utf16":{"start":{"line_number":485,"utf16_col":8},"end":{"line_number":485,"utf16_col":20}},"extent_utf16":{"start":{"line_number":485,"utf16_col":4},"end":{"line_number":486,"utf16_col":17}}},{"name":"CodeFree","kind":"function","ident_start":16354,"ident_end":16362,"extent_start":16350,"extent_end":16393,"fully_qualified_name":"Entry.CodeFree","ident_utf16":{"start":{"line_number":488,"utf16_col":8},"end":{"line_number":488,"utf16_col":16}},"extent_utf16":{"start":{"line_number":488,"utf16_col":4},"end":{"line_number":489,"utf16_col":17}}},{"name":"CodeBase","kind":"function","ident_start":16403,"ident_end":16411,"extent_start":16399,"extent_end":16731,"fully_qualified_name":"Entry.CodeBase","ident_utf16":{"start":{"line_number":491,"utf16_col":8},"end":{"line_number":491,"utf16_col":16}},"extent_utf16":{"start":{"line_number":491,"utf16_col":4},"end":{"line_number":501,"utf16_col":31}}},{"name":"EntryBytes","kind":"class","ident_start":16739,"ident_end":16749,"extent_start":16733,"extent_end":19978,"fully_qualified_name":"EntryBytes","ident_utf16":{"start":{"line_number":503,"utf16_col":6},"end":{"line_number":503,"utf16_col":16}},"extent_utf16":{"start":{"line_number":503,"utf16_col":0},"end":{"line_number":601,"utf16_col":26}}},{"name":"__init__","kind":"function","ident_start":16766,"ident_end":16774,"extent_start":16762,"extent_end":16944,"fully_qualified_name":"EntryBytes.__init__","ident_utf16":{"start":{"line_number":504,"utf16_col":8},"end":{"line_number":504,"utf16_col":16}},"extent_utf16":{"start":{"line_number":504,"utf16_col":4},"end":{"line_number":509,"utf16_col":34}}},{"name":"GetInitializer","kind":"function","ident_start":16954,"ident_end":16968,"extent_start":16950,"extent_end":16997,"fully_qualified_name":"EntryBytes.GetInitializer","ident_utf16":{"start":{"line_number":511,"utf16_col":8},"end":{"line_number":511,"utf16_col":22}},"extent_utf16":{"start":{"line_number":511,"utf16_col":4},"end":{"line_number":512,"utf16_col":21}}},{"name":"GetVarLen","kind":"function","ident_start":17007,"ident_end":17016,"extent_start":17003,"extent_end":17065,"fully_qualified_name":"EntryBytes.GetVarLen","ident_utf16":{"start":{"line_number":514,"utf16_col":8},"end":{"line_number":514,"utf16_col":17}},"extent_utf16":{"start":{"line_number":514,"utf16_col":4},"end":{"line_number":515,"utf16_col":36}}},{"name":"CodeArrayAdd","kind":"function","ident_start":17075,"ident_end":17087,"extent_start":17071,"extent_end":17202,"fully_qualified_name":"EntryBytes.CodeArrayAdd","ident_utf16":{"start":{"line_number":517,"utf16_col":8},"end":{"line_number":517,"utf16_col":20}},"extent_utf16":{"start":{"line_number":517,"utf16_col":4},"end":{"line_number":519,"utf16_col":66}}},{"name":"GetDeclaration","kind":"function","ident_start":17212,"ident_end":17226,"extent_start":17208,"extent_end":17373,"fully_qualified_name":"EntryBytes.GetDeclaration","ident_utf16":{"start":{"line_number":521,"utf16_col":8},"end":{"line_number":521,"utf16_col":22}},"extent_utf16":{"start":{"line_number":521,"utf16_col":4},"end":{"line_number":524,"utf16_col":19}}},{"name":"AssignDeclaration","kind":"function","ident_start":17383,"ident_end":17400,"extent_start":17379,"extent_end":17552,"fully_qualified_name":"EntryBytes.AssignDeclaration","ident_utf16":{"start":{"line_number":526,"utf16_col":8},"end":{"line_number":526,"utf16_col":25}},"extent_utf16":{"start":{"line_number":526,"utf16_col":4},"end":{"line_number":529,"utf16_col":19}}},{"name":"Declaration","kind":"function","ident_start":17562,"ident_end":17573,"extent_start":17558,"extent_end":17672,"fully_qualified_name":"EntryBytes.Declaration","ident_utf16":{"start":{"line_number":531,"utf16_col":8},"end":{"line_number":531,"utf16_col":19}},"extent_utf16":{"start":{"line_number":531,"utf16_col":4},"end":{"line_number":534,"utf16_col":18}}},{"name":"CodeGet","kind":"function","ident_start":17682,"ident_end":17689,"extent_start":17678,"extent_end":18132,"fully_qualified_name":"EntryBytes.CodeGet","ident_utf16":{"start":{"line_number":536,"utf16_col":8},"end":{"line_number":536,"utf16_col":15}},"extent_utf16":{"start":{"line_number":536,"utf16_col":4},"end":{"line_number":548,"utf16_col":19}}},{"name":"CodeAssign","kind":"function","ident_start":18142,"ident_end":18152,"extent_start":18138,"extent_end":18600,"fully_qualified_name":"EntryBytes.CodeAssign","ident_utf16":{"start":{"line_number":550,"utf16_col":8},"end":{"line_number":550,"utf16_col":18}},"extent_utf16":{"start":{"line_number":550,"utf16_col":4},"end":{"line_number":562,"utf16_col":19}}},{"name":"CodeUnmarshal","kind":"function","ident_start":18610,"ident_end":18623,"extent_start":18606,"extent_end":19147,"fully_qualified_name":"EntryBytes.CodeUnmarshal","ident_utf16":{"start":{"line_number":564,"utf16_col":8},"end":{"line_number":564,"utf16_col":21}},"extent_utf16":{"start":{"line_number":564,"utf16_col":4},"end":{"line_number":576,"utf16_col":32}}},{"name":"CodeMarshal","kind":"function","ident_start":19157,"ident_end":19168,"extent_start":19153,"extent_end":19329,"fully_qualified_name":"EntryBytes.CodeMarshal","ident_utf16":{"start":{"line_number":578,"utf16_col":8},"end":{"line_number":578,"utf16_col":19}},"extent_utf16":{"start":{"line_number":578,"utf16_col":4},"end":{"line_number":581,"utf16_col":19}}},{"name":"CodeClear","kind":"function","ident_start":19339,"ident_end":19348,"extent_start":19335,"extent_end":19581,"fully_qualified_name":"EntryBytes.CodeClear","ident_utf16":{"start":{"line_number":583,"utf16_col":8},"end":{"line_number":583,"utf16_col":17}},"extent_utf16":{"start":{"line_number":583,"utf16_col":4},"end":{"line_number":588,"utf16_col":19}}},{"name":"CodeInitialize","kind":"function","ident_start":19591,"ident_end":19605,"extent_start":19587,"extent_end":19755,"fully_qualified_name":"EntryBytes.CodeInitialize","ident_utf16":{"start":{"line_number":590,"utf16_col":8},"end":{"line_number":590,"utf16_col":22}},"extent_utf16":{"start":{"line_number":590,"utf16_col":4},"end":{"line_number":593,"utf16_col":19}}},{"name":"Verify","kind":"function","ident_start":19765,"ident_end":19771,"extent_start":19761,"extent_end":19978,"fully_qualified_name":"EntryBytes.Verify","ident_utf16":{"start":{"line_number":595,"utf16_col":8},"end":{"line_number":595,"utf16_col":14}},"extent_utf16":{"start":{"line_number":595,"utf16_col":4},"end":{"line_number":601,"utf16_col":26}}},{"name":"EntryInt","kind":"class","ident_start":19986,"ident_end":19994,"extent_start":19980,"extent_end":21807,"fully_qualified_name":"EntryInt","ident_utf16":{"start":{"line_number":603,"utf16_col":6},"end":{"line_number":603,"utf16_col":14}},"extent_utf16":{"start":{"line_number":603,"utf16_col":0},"end":{"line_number":657,"utf16_col":19}}},{"name":"__init__","kind":"function","ident_start":20011,"ident_end":20019,"extent_start":20007,"extent_end":20362,"fully_qualified_name":"EntryInt.__init__","ident_utf16":{"start":{"line_number":604,"utf16_col":8},"end":{"line_number":604,"utf16_col":16}},"extent_utf16":{"start":{"line_number":604,"utf16_col":4},"end":{"line_number":614,"utf16_col":40}}},{"name":"GetInitializer","kind":"function","ident_start":20372,"ident_end":20386,"extent_start":20368,"extent_end":20412,"fully_qualified_name":"EntryInt.GetInitializer","ident_utf16":{"start":{"line_number":616,"utf16_col":8},"end":{"line_number":616,"utf16_col":22}},"extent_utf16":{"start":{"line_number":616,"utf16_col":4},"end":{"line_number":617,"utf16_col":18}}},{"name":"CodeArrayFree","kind":"function","ident_start":20422,"ident_end":20435,"extent_start":20418,"extent_end":20465,"fully_qualified_name":"EntryInt.CodeArrayFree","ident_utf16":{"start":{"line_number":619,"utf16_col":8},"end":{"line_number":619,"utf16_col":21}},"extent_utf16":{"start":{"line_number":619,"utf16_col":4},"end":{"line_number":620,"utf16_col":17}}},{"name":"CodeArrayAssign","kind":"function","ident_start":20475,"ident_end":20490,"extent_start":20471,"extent_end":20654,"fully_qualified_name":"EntryInt.CodeArrayAssign","ident_utf16":{"start":{"line_number":622,"utf16_col":8},"end":{"line_number":622,"utf16_col":23}},"extent_utf16":{"start":{"line_number":622,"utf16_col":4},"end":{"line_number":624,"utf16_col":69}}},{"name":"CodeArrayAdd","kind":"function","ident_start":20664,"ident_end":20676,"extent_start":20660,"extent_end":20882,"fully_qualified_name":"EntryInt.CodeArrayAdd","ident_utf16":{"start":{"line_number":626,"utf16_col":8},"end":{"line_number":626,"utf16_col":20}},"extent_utf16":{"start":{"line_number":626,"utf16_col":4},"end":{"line_number":629,"utf16_col":65}}},{"name":"CodeUnmarshal","kind":"function","ident_start":20892,"ident_end":20905,"extent_start":20888,"extent_end":21381,"fully_qualified_name":"EntryInt.CodeUnmarshal","ident_utf16":{"start":{"line_number":631,"utf16_col":8},"end":{"line_number":631,"utf16_col":21}},"extent_utf16":{"start":{"line_number":631,"utf16_col":4},"end":{"line_number":642,"utf16_col":31}}},{"name":"CodeMarshal","kind":"function","ident_start":21391,"ident_end":21402,"extent_start":21387,"extent_end":21586,"fully_qualified_name":"EntryInt.CodeMarshal","ident_utf16":{"start":{"line_number":644,"utf16_col":8},"end":{"line_number":644,"utf16_col": 8000 19}},"extent_utf16":{"start":{"line_number":644,"utf16_col":4},"end":{"line_number":648,"utf16_col":19}}},{"name":"Declaration","kind":"function","ident_start":21596,"ident_end":21607,"extent_start":21592,"extent_end":21693,"fully_qualified_name":"EntryInt.Declaration","ident_utf16":{"start":{"line_number":650,"utf16_col":8},"end":{"line_number":650,"utf16_col":19}},"extent_utf16":{"start":{"line_number":650,"utf16_col":4},"end":{"line_number":653,"utf16_col":18}}},{"name":"CodeInitialize","kind":"function","ident_start":21703,"ident_end":21717,"extent_start":21699,"extent_end":21807,"fully_qualified_name":"EntryInt.CodeInitialize","ident_utf16":{"start":{"line_number":655,"utf16_col":8},"end":{"line_number":655,"utf16_col":22}},"extent_utf16":{"start":{"line_number":655,"utf16_col":4},"end":{"line_number":657,"utf16_col":19}}},{"name":"EntryString","kind":"class","ident_start":21815,"ident_end":21826,"extent_start":21809,"extent_end":25093,"fully_qualified_name":"EntryString","ident_utf16":{"start":{"line_number":659,"utf16_col":6},"end":{"line_number":659,"utf16_col":17}},"extent_utf16":{"start":{"line_number":659,"utf16_col":0},"end":{"line_number":765,"utf16_col":18}}},{"name":"__init__","kind":"function","ident_start":21843,"ident_end":21851,"extent_start":21839,"extent_end":22010,"fully_qualified_name":"EntryString.__init__","ident_utf16":{"start":{"line_number":660,"utf16_col":8},"end":{"line_number":660,"utf16_col":16}},"extent_utf16":{"start":{"line_number":660,"utf16_col":4},"end":{"line_number":665,"utf16_col":30}}},{"name":"GetInitializer","kind":"function","ident_start":22020,"ident_end":22034,"extent_start":22016,"extent_end":22063,"fully_qualified_name":"EntryString.GetInitializer","ident_utf16":{"start":{"line_number":667,"utf16_col":8},"end":{"line_number":667,"utf16_col":22}},"extent_utf16":{"start":{"line_number":667,"utf16_col":4},"end":{"line_number":668,"utf16_col":21}}},{"name":"CodeArrayFree","kind":"function","ident_start":22073,"ident_end":22086,"extent_start":22069,"extent_end":22228,"fully_qualified_name":"EntryString.CodeArrayFree","ident_utf16":{"start":{"line_number":670,"utf16_col":8},"end":{"line_number":670,"utf16_col":21}},"extent_utf16":{"start":{"line_number":670,"utf16_col":4},"end":{"line_number":674,"utf16_col":55}}},{"name":"CodeArrayAssign","kind":"function","ident_start":22238,"ident_end":22253,"extent_start":22234,"extent_end":22661,"fully_qualified_name":"EntryString.CodeArrayAssign","ident_utf16":{"start":{"line_number":676,"utf16_col":8},"end":{"line_number":676,"utf16_col":23}},"extent_utf16":{"start":{"line_number":676,"utf16_col":4},"end":{"line_number":687,"utf16_col":57}}},{"name":"CodeArrayAdd","kind":"function","ident_start":22671,"ident_end":22683,"extent_start":22667,"extent_end":23085,"fully_qualified_name":"EntryString.CodeArrayAdd","ident_utf16":{"start":{"line_number":689,"utf16_col":8},"end":{"line_number":689,"utf16_col":20}},"extent_utf16":{"start":{"line_number":689,"utf16_col":4},"end":{"line_number":701,"utf16_col":55}}},{"name":"GetVarLen","kind":"function","ident_start":23095,"ident_end":23104,"extent_start":23091,"extent_end":23167,"fully_qualified_name":"EntryString.GetVarLen","ident_utf16":{"start":{"line_number":703,"utf16_col":8},"end":{"line_number":703,"utf16_col":17}},"extent_utf16":{"start":{"line_number":703,"utf16_col":4},"end":{"line_number":704,"utf16_col":50}}},{"name":"CodeMakeInitalize","kind":"function","ident_start":23177,"ident_end":23194,"extent_start":23173,"extent_end":23273,"fully_qualified_name":"EntryString.CodeMakeInitalize","ident_utf16":{"start":{"line_number":706,"utf16_col":8},"end":{"line_number":706,"utf16_col":25}},"extent_utf16":{"start":{"line_number":706,"utf16_col":4},"end":{"line_number":707,"utf16_col":62}}},{"name":"CodeAssign","kind":"function","ident_start":23283,"ident_end":23293,"extent_start":23279,"extent_end":23672,"fully_qualified_name":"EntryString.CodeAssign","ident_utf16":{"start":{"line_number":709,"utf16_col":8},"end":{"line_number":709,"utf16_col":18}},"extent_utf16":{"start":{"line_number":709,"utf16_col":4},"end":{"line_number":723,"utf16_col":31}}},{"name":"CodeUnmarshal","kind":"function","ident_start":23682,"ident_end":23695,"extent_start":23678,"extent_end":24146,"fully_qualified_name":"EntryString.CodeUnmarshal","ident_utf16":{"start":{"line_number":725,"utf16_col":8},"end":{"line_number":725,"utf16_col":21}},"extent_utf16":{"start":{"line_number":725,"utf16_col":4},"end":{"line_number":735,"utf16_col":31}}},{"name":"CodeMarshal","kind":"function","ident_start":24156,"ident_end":24167,"extent_start":24152,"extent_end":24322,"fully_qualified_name":"EntryString.CodeMarshal","ident_utf16":{"start":{"line_number":737,"utf16_col":8},"end":{"line_number":737,"utf16_col":19}},"extent_utf16":{"start":{"line_number":737,"utf16_col":4},"end":{"line_number":740,"utf16_col":19}}},{"name":"CodeClear","kind":"function","ident_start":24332,"ident_end":24341,"extent_start":24328,"extent_end":24697,"fully_qualified_name":"EntryString.CodeClear","ident_utf16":{"start":{"line_number":742,"utf16_col":8},"end":{"line_number":742,"utf16_col":17}},"extent_utf16":{"start":{"line_number":742,"utf16_col":4},"end":{"line_number":750,"utf16_col":19}}},{"name":"CodeInitialize","kind":"function","ident_start":24707,"ident_end":24721,"extent_start":24703,"extent_end":24815,"fully_qualified_name":"EntryString.CodeInitialize","ident_utf16":{"start":{"line_number":752,"utf16_col":8},"end":{"line_number":752,"utf16_col":22}},"extent_utf16":{"start":{"line_number":752,"utf16_col":4},"end":{"line_number":754,"utf16_col":19}}},{"name":"CodeFree","kind":"function","ident_start":24825,"ident_end":24833,"extent_start":24821,"extent_end":24998,"fully_qualified_name":"EntryString.CodeFree","ident_utf16":{"start":{"line_number":756,"utf16_col":8},"end":{"line_number":756,"utf16_col":16}},"extent_utf16":{"start":{"line_number":756,"utf16_col":4},"end":{"line_number":760,"utf16_col":19}}},{"name":"Declaration","kind":"function","ident_start":25008,"ident_end":25019,"extent_start":25004,"extent_end":25093,"fully_qualified_name":"EntryString.Declaration","ident_utf16":{"start":{"line_number":762,"utf16_col":8},"end":{"line_number":762,"utf16_col":19}},"extent_utf16":{"start":{"line_number":762,"utf16_col":4},"end":{"line_number":765,"utf16_col":18}}},{"name":"EntryStruct","kind":"class","ident_start":25101,"ident_end":25112,"extent_start":25095,"extent_end":30635,"fully_qualified_name":"EntryStruct","ident_utf16":{"start":{"line_number":767,"utf16_col":6},"end":{"line_number":767,"utf16_col":17}},"extent_utf16":{"start":{"line_number":767,"utf16_col":0},"end":{"line_number":938,"utf16_col":18}}},{"name":"__init__","kind":"function","ident_start":25129,"ident_end":25137,"extent_start":25125,"extent_end":25416,"fully_qualified_name":"EntryStruct.__init__","ident_utf16":{"start":{"line_number":768,"utf16_col":8},"end":{"line_number":768,"utf16_col":16}},"extent_utf16":{"start":{"line_number":768,"utf16_col":4},"end":{"line_number":776,"utf16_col":31}}},{"name":"GetInitializer","kind":"function","ident_start":25426,"ident_end":25440,"extent_start":25422,"extent_end":25469,"fully_qualified_name":"EntryStruct.GetInitializer","ident_utf16":{"start":{"line_number":778,"utf16_col":8},"end":{"line_number":778,"utf16_col":22}},"extent_utf16":{"start":{"line_number":778,"utf16_col":4},"end":{"line_number":779,"utf16_col":21}}},{"name":"GetVarLen","kind":"function","ident_start":25479,"ident_end":25488,"extent_start":25475,"extent_end":25520,"fully_qualified_name":"EntryStruct.GetVarLen","ident_utf16":{"start":{"line_number":781,"utf16_col":8},"end":{"line_number":781,"utf16_col":17}},"extent_utf16":{"start":{"line_number":781,"utf16_col":4},"end":{"line_number":782,"utf16_col":19}}},{"name":"CodeArrayAdd","kind":"function","ident_start":25530,"ident_end":25542,"extent_start":25526,"extent_end":25782,"fully_qualified_name":"EntryStruct.CodeArrayAdd","ident_utf16":{"start":{"line_number":784,"utf16_col":8},"end":{"line_number":784,"utf16_col":20}},"extent_utf16":{"start":{"line_number":784,"utf16_col":4},"end":{"line_number":790,"utf16_col":80}}},{"name":"CodeArrayFree","kind":"function","ident_start":25792,"ident_end":25805,"extent_start":25788,"extent_end":25937,"fully_qualified_name":"EntryStruct.CodeArrayFree","ident_utf16":{"start":{"line_number":792,"utf16_col":8},"end":{"line_number":792,"utf16_col":21}},"extent_utf16":{"start":{"line_number":792,"utf16_col":4},"end":{"line_number":795,"utf16_col":19}}},{"name":"CodeArrayAssign","kind":"function","ident_start":25947,"ident_end":25962,"extent_start":25943,"extent_end":26906,"fully_qualified_name":"EntryStruct.CodeArrayAssign","ident_utf16":{"start":{"line_number":797,"utf16_col":8},"end":{"line_number":797,"utf16_col":23}},"extent_utf16":{"start":{"line_number":797,"utf16_col":4},"end":{"line_number":823,"utf16_col":32}}},{"name":"CodeGet","kind":"function","ident_start":26916,"ident_end":26923,"extent_start":26912,"extent_end":27571,"fully_qualified_name":"EntryStruct.CodeGet","ident_utf16":{"start":{"line_number":825,"utf16_col":8},"end":{"line_number":825,"utf16_col":15}},"extent_utf16":{"start":{"line_number":825,"utf16_col":4},"end":{"line_number":841,"utf16_col":19}}},{"name":"CodeAssign","kind":"function","ident_start":27581,"ident_end":27591,"extent_start":27577,"extent_end":28653,"fully_qualified_name":"EntryStruct.CodeAssign","ident_utf16":{"start":{"line_number":843,"utf16_col":8},"end":{"line_number":843,"utf16_col":18}},"extent_utf16":{"start":{"line_number":843,"utf16_col":4},"end":{"line_number":881,"utf16_col":31}}},{"name":"CodeComplete","kind":"function","ident_start":28663,"ident_end":28675,"extent_start":28659,"extent_end":28983,"fully_qualified_name":"EntryStruct.CodeComplete","ident_utf16":{"start":{"line_number":883,"utf16_col":8},"end":{"line_number":883,"utf16_col":20}},"extent_utf16":{"start":{"line_number":883,"utf16_col":4},"end":{"line_number":890,"utf16_col":32}}},{"name":"CodeUnmarshal","kind":"function","ident_start":28993,"ident_end":29006,"extent_start":28989,"extent_end":29604,"fully_qualified_name":"EntryStruct.CodeUnmarshal","ident_utf16":{"start":{"line_number":892,"utf16_col":8},"end":{"line_number":892,"utf16_col":21}},"extent_utf16":{"start":{"line_number":892,"utf16_col":4},"end":{"line_number":906,"utf16_col":31}}},{"name":"CodeMarshal","kind":"function","ident_start":29614,"ident_end":29625,"extent_start":29610,"extent_end":29791,"fully_qualified_name":"EntryStruct.CodeMarshal","ident_utf16":{"start":{"line_number":908,"utf16_col":8},"end":{"line_number":908,"utf16_col":19}},"extent_utf16":{"start":{"line_number":908,"utf16_col":4},"end":{"line_number":911,"utf16_col":19}}},{"name":"CodeClear","kind":"function","ident_start":29801,"ident_end":29810,"extent_start":29797,"extent_end":30197,"fully_qualified_name":"EntryStruct.CodeClear","ident_utf16":{"start":{"line_number":913,"utf16_col":8},"end":{"line_number":913,"utf16_col":17}},"extent_utf16":{"start":{"line_number":913,"utf16_col":4},"end":{"line_number":922,"utf16_col":19}}},{"name":"CodeInitialize","kind":"function","ident_start":30207,"ident_end":30221,"extent_start":30203,"extent_end":30315,"fully_qualified_name":"EntryStruct.CodeInitialize","ident_utf16":{"start":{"line_number":924,"utf16_col":8},"end":{"line_number":924,"utf16_col":22}},"extent_utf16":{"start":{"line_number":924,"utf16_col":4},"end":{"line_number":926,"utf16_col":19}}},{"name":"CodeFree","kind":"function","ident_start":30325,"ident_end":30333,"extent_start":30321,"extent_end":30528,"fully_qualified_name":"EntryStruct.CodeFree","ident_utf16":{"start":{"line_number":928,"utf16_col":8},"end":{"line_number":928,"utf16_col":16}},"extent_utf16":{"start":{"line_number":928,"utf16_col":4},"end":{"line_number":933,"utf16_col":19}}},{"name":"Declaration","kind":"function","ident_start":30538,"ident_end":30549,"extent_start":30534,"extent_end":30635,"fully_qualified_name":"EntryStruct.Declaration","ident_utf16":{"start":{"line_number":935,"utf16_col":8},"end":{"line_number":935,"utf16_col":19}},"extent_utf16":{"start":{"line_number":935,"utf16_col":4},"end":{"line_number":938,"utf16_col":18}}},{"name":"EntryVarBytes","kind":"class","ident_start":30643,"ident_end":30656,"extent_start":30637,"extent_end":34835,"fully_qualified_name":"EntryVarBytes","ident_utf16":{"start":{"line_number":940,"utf16_col":6},"end":{"line_number":940,"utf16_col":19}},"extent_utf16":{"start":{"line_number":940,"utf16_col":0},"end":{"line_number":1054,"utf16_col":18}}},{"name":"__init__","kind":"function","ident_start":30673,"ident_end":30681,"extent_start":30669,"extent_end":30815,"fully_qualified_name":"EntryVarBytes.__init__","ident_utf16":{"start":{"line_number":941,"utf16_col":8},"end":{"line_number":941,"utf16_col":16}},"extent_utf16":{"start":{"line_number":941,"utf16_col":4},"end":{"line_number":945,"utf16_col":36}}},{"name":"GetInitializer","kind":"function","ident_start":30825,"ident_end":30839,"extent_start":30821,"extent_end":30868,"fully_qualified_name":"EntryVarBytes.GetInitializer","ident_utf16":{"start":{"line_number":947,"utf16_col":8},"end":{"line_number":947,"utf16_col":22}},"extent_utf16":{"start":{"line_number":947,"utf16_col":4},"end":{"line_number":948,"utf16_col":21}}},{"name":"GetVarLen","kind":"function","ident_start":30878,"ident_end":30887,"extent_start":30874,"extent_end":30980,"fully_qualified_name":"EntryVarBytes.GetVarLen","ident_utf16":{"start":{"line_number":950,"utf16_col":8},"end":{"line_number":950,"utf16_col":17}},"extent_utf16":{"start":{"line_number":950,"utf16_col":4},"end":{"line_number":951,"utf16_col":80}}},{"name":"CodeArrayAdd","kind":"function","ident_start":30990,"ident_end":31002,"extent_start":30986,"extent_end":31112,"fully_qualified_name":"EntryVarBytes.CodeArrayAdd","ident_utf16":{"start":{"line_number":953,"utf16_col":8},"end":{"line_number":953,"utf16_col":20}},"extent_utf16":{"start":{"line_number":953,"utf16_col":4},"end":{"line_number":955,"utf16_col":66}}},{"name":"GetDeclaration","kind":"function","ident_start":31122,"ident_end":31136,"extent_start":31118,"extent_end":31297,"fully_qualified_name":"EntryVarBytes.GetDeclaration","ident_utf16":{"start":{"line_number":957,"utf16_col":8},"end":{"line_number":957,"utf16_col":22}},"extent_utf16":{"start":{"line_number":957,"utf16_col":4},"end":{"line_number":960,"utf16_col":19}}},{"name":"AssignDeclaration","kind":"function","ident_start":31307,"ident_end":31324,"extent_start":31303,"extent_end":31487,"fully_qualified_name":"EntryVarBytes.AssignDeclaration","ident_utf16":{"start":{"line_number":962,"utf16_col":8},"end":{"line_number":962,"utf16_col":25}},"extent_utf16":{"start":{"line_number":962,"utf16_col":4},"end":{"line_number":965,"utf16_col":19}}},{"name":"CodeAssign","kind":"function","ident_start":31497,"ident_end":31507,"extent_start":31493,"extent_end":32270,"fully_qualified_name":"EntryVarBytes.CodeAssign","ident_utf16":{"start":{"line_number":967,"utf16_col":8},"end":{"line_number":967,"utf16_col":18}},"extent_utf16":{"start":{"line_number":967,"utf16_col":4},"end":{"line_number":985,"utf16_col":19}}},{"name":"CodeGet","kind":"function","ident_start":32280,"ident_end":32287,"extent_start":32276,"extent_end":32801,"fully_qualified_name":"EntryVarBytes.CodeGet","ident_utf16":{"start":{"line_number":987,"utf16_col":8},"end":{"line_number":987,"utf16_col":15}},"extent_utf16":{"start":{"line_number":987,"utf16_col":4},"end":{"line_number":1000,"utf16_col":19}}},{"name":"CodeUnmarshal","kind":"function","ident_start":32811,"ident_end":32824,"extent_start":32807,"extent_end":33691,"fully_qualified_name":"EntryVarBytes.CodeUnmarshal","ident_utf16":{"start":{"line_number":1002,"utf16_col":8},"end":{"line_number":1002,"utf16_col":21}},"extent_utf16":{"start":{"line_number":1002,"utf16_col":4},"end":{"line_number":1021,"utf16_col":31}}},{"name":"CodeMarshal","kind":"function","ident_start":33701,"ident_end":33712,"extent_start":33697,"extent_end":33873,"fully_qualified_name":"EntryVarBytes.CodeMarshal","ident_utf16":{"start":{"line_number":1023,"utf16_col":8},"end":{"line_number":1023,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1023,"utf16_col":4},"end":{"line_number":1026,"utf16_col":19}}},{"name":"CodeClear","kind":"function","ident_start":33883,"ident_end":33892,"extent_start":33879,"extent_end":34318,"fully_qualified_name":"EntryVarBytes.CodeClear","ident_utf16":{"start":{"line_number":1028,"utf16_col":8},"end":{"line_number":1028,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1028,"utf16_col":4},"end":{"line_number":1037,"utf16_col":19}}},{"name":"CodeInitialize","kind":"function","ident_start":34328,"ident_end":34342,"extent_start":34324,"extent_end":34497,"fully_qualified_name":"EntryVarBytes.CodeInitialize","ident_utf16":{"start":{"line_number":1039,"utf16_col":8},"end":{"line_number":1039,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1039,"utf16_col":4},"end":{"line_number":1042,"utf16_col":19}}},{"name":"CodeFree","kind":"function","ident_start":34507,"ident_end":34515,"extent_start":34503,"extent_end":34679,"fully_qualified_name":"EntryVarBytes.CodeFree","ident_utf16":{"start":{"line_number":1044,"utf16_col":8},"end":{"line_number":1044,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1044,"utf16_col":4},"end":{"line_number":1048,"utf16_col":19}}},{"name":"Declaration","kind":"function","ident_start":34689,"ident_end":34700,"extent_start":34685,"extent_end":34835,"fully_qualified_name":"EntryVarBytes.Declaration","ident_utf16":{"start":{"line_number":1050,"utf16_col":8},"end":{"line_number":1050,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1050,"utf16_col":4},"end":{"line_number":1054,"utf16_col":18}}},{"name":"EntryArray","kind":"class","ident_start":34843,"ident_end":34853,"extent_start":34837,"extent_end":43286,"fully_qualified_name":"EntryArray","ident_utf16":{"start":{"line_number":1056,"utf16_col":6},"end":{"line_number":1056,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1056,"utf16_col":0},"end":{"line_number":1298,"utf16_col":18}}},{"name":"__init__","kind":"function","ident_start":34870,"ident_end":34878,"extent_start":34866,"extent_end":35563,"fully_qualified_name":"EntryArray.__init__","ident_utf16":{"start":{"line_number":1057,"utf16_col":8},"end":{"line_number":1057,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1057,"utf16_col":4},"end":{"line_number":1073,"utf16_col":43}}},{"name":"GetVarName","kind":"function","ident_start":35303,"ident_end":35313,"extent_start":35299,"extent_end":35519,"fully_qualified_name":"EntryArray.GetVarName","ident_utf16":{"start":{"line_number":1069,"utf16_col":12},"end":{"line_number":1069,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1069,"utf16_col":8},"end":{"line_number":1072,"utf16_col":70}}},{"name":"GetInitializer","kind":"function","ident_start":35573,"ident_end":35587,"extent_start":35569,"extent_end":35616,"fully_qualified_name":"EntryArray.GetInitializer","ident_utf16":{"start":{"line_number":1075,"utf16_col":8},"end":{"line_number":1075,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1075,"utf16_col":4},"end":{"line_number":1076,"utf16_col":21}}},{"name":"GetVarName","kind":"function","ident_start":35626,"ident_end":35636,"extent_start":35622,"extent_end":35677,"fully_qualified_name":"EntryArray.GetVarName","ident_utf16":{"start":{"line_number":1078,"utf16_col":8},"end":{"line_number":1078,"utf16_col":18}},"extent_utf16":{"start":{"line_number":1078,"utf16_col":4},"end":{"line_number":1079,"utf16_col":23}}},{"name":"GetVarLen","kind":"function","ident_start":35687,"ident_end":35696,"extent_start":35683,"extent_end":35733,"fully_qualified_name":"EntryArray.GetVarLen","ident_utf16":{"start":{"line_number":1081,"utf16_col":8},"end":{"line_number":1081,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1081,"utf16_col":4},"end":{"line_number":1082,"utf16_col":19}}},{"name":"GetDeclaration","kind":"function","ident_start":35743,"ident_end":35757,"extent_start":35739,"extent_end":36011,"fully_qualified_name":"EntryArray.GetDeclaration","ident_utf16":{"start":{"line_number":1084,"utf16_col":8},"end":{"line_number":1084,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1084,"utf16_col":4},"end":{"line_number":1089,"utf16_col":19}}},{"name":"AssignDeclaration","kind":"function","ident_start":36021,"ident_end":36038,"extent_start":36017,"extent_end":36193,"fully_qualified_name":"EntryArray.AssignDeclaration","ident_utf16":{"start":{"line_number":1091,"utf16_col":8},"end":{"line_number":1091,"utf16_col":25}},"extent_utf16":{"start":{"line_number":1091,"utf16_col":4},"end":{"line_number":1094,"utf16_col":19}}},{"name":"AddDeclaration","kind":"function","ident_start":36203,"ident_end":36217,"extent_start":36199,"extent_end":36446,"fully_qualified_name":"EntryArray.AddDeclaration","ident_utf16":{"start":{"line_number":1096,"utf16_col":8},"end":{"line_number":1096,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1096,"utf16_col":4},"end":{"line_number":1101,"utf16_col":19}}},{"name":"CodeGet","kind":"function","ident_start":36456,"ident_end":36463,"extent_start":36452,"extent_end":36792,"fully_qualified_name":"EntryArray.CodeGet","ident_utf16":{"start":{"line_number":1103,"utf16_col":8},"end":{"line_number":1103,"utf16_col":15}},"extent_utf16":{"start":{"line_number":1103,"utf16_col":4},"end":{"line_number":1114,"utf16_col":31}}},{"name":"CodeAssign","kind":"function","ident_start":36802,"ident_end":36812,"extent_start":36798,"extent_end":37525,"fully_qualified_name":"EntryArray.CodeAssign","ident_utf16":{"start":{"line_number":1116,"utf16_col":8},"end":{"line_number":1116,"utf16_col":18}},"extent_utf16":{"start":{"line_number":1116,"utf16_col":4},"end":{"line_number":1136,"utf16_col":19}}},{"name":"CodeAdd","kind":"function","ident_start":37535,"ident_end":37542,"extent_start":37531,"extent_end":39235,"fully_qualified_name":"EntryArray.CodeAdd","ident_utf16":{"start":{"line_number":1138,"utf16_col":8},"end":{"line_number":1138,"utf16_col":15}},"extent_utf16":{"start":{"line_number":1138,"utf16_col":4},"end":{"line_number":1181,"utf16_col":19}}},{"name":"CodeComplete","kind":"function","ident_start":39245,"ident_end":39257,"extent_start":39241,"extent_end":39874,"fully_qualified_name":"EntryArray.CodeComplete","ident_utf16":{"start":{"line_number":1183,"utf16_col":8},"end":{"line_number":1183,"utf16_col":20}},"extent_utf16":{"start":{"line_number":1183,"utf16_col":4},"end":{"line_number":1204,"utf16_col":19}}},{"name":"CodeUnmarshal","kind":"function","ident_start":39884,"ident_end":39897,"extent_start":39880,"extent_end":40898,"fully_qualified_name":"EntryArray.CodeUnmarshal","ident_utf16":{"start":{"line_number":1206,"utf16_col":8},"end":{"line_number":1206,"utf16_col":21}},"extent_utf16":{"start":{"line_number":1206,"utf16_col":4},"end":{"line_number":1228,"utf16_col":19}}},{"name":"CodeMarshal","kind":"function","ident_start":40908,"ident_end":40919,"extent_start":40904,"extent_end":41482,"fully_qualified_name":"EntryArray.CodeMarshal","ident_utf16":{"start":{"line_number":1230,"utf16_col":8},"end":{"line_number":1230,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1230,"utf16_col":4},"end":{"line_number":1245,"utf16_col":31}}},{"name":"CodeClear","kind":"function","ident_start":41492,"ident_end":41501,"extent_start":41488,"extent_end":42562,"fully_qualified_name":"EntryArray.CodeClear","ident_utf16":{"start":{"line_number":1247,"utf16_col":8},"end":{"line_number":1247,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1247,"utf16_col":4},"end":{"line_number":1276,"utf16_col":19}}},{"name":"CodeInitialize","kind":"function","ident_start":42572,"ident_end":42586,"extent_start":42568,"extent_end":42807,"fully_qualified_name":"EntryArray.CodeInitialize","ident_utf16":{"start":{"line_number":1278,"utf16_col":8},"end":{"line_number":1278,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1278,"utf16_col":4},"end":{"line_number":1282,"utf16_col":19}}},{"name":"CodeFree","kind":"function","ident_start":42817,"ident_end":42825,"extent_start":42813,"extent_end":43076,"fully_qualified_name":"EntryArray.CodeFree","ident_utf16":{"start":{"line_number":1284,"utf16_col":8},"end":{"line_number":1284,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1284,"utf16_col":4},"end":{"line_number":1291,"utf16_col":19}}},{"name":"Declaration","kind":"function","ident_start":43086,"ident_end":43097,"extent_start":43082,"extent_end":43286,"fully_qualified_name":"EntryArray.Declaration","ident_utf16":{"start":{"line_number":1293,"utf16_col":8},"end":{"line_number":1293,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1293,"utf16_col":4},"end":{"line_number":1298,"utf16_col":18}}},{"name":"NormalizeLine","kind":"function","ident_start":43292,"ident_end":43305,"extent_start":43288,"extent_end":43461,"fully_qualified_name":"NormalizeLine","ident_utf16":{"start":{"line_number":1300,"utf16_col":4},"end":{"line_number":1300,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1300,"utf16_col":0},"end":{"line_number":1308,"utf16_col":15}}},{"name":"ProcessOneEntry","kind":"function","ident_start":43467,"ident_end":43482,"extent_start":43463,"extent_end":46562,"fully_qualified_name":"ProcessOneEntry","ident_utf16":{"start":{"line_number":1310,"utf16_col":4},"end":{"line_number":1310,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1310,"utf16_col":0},"end":{"line_number":1412,"utf16_col":18}}},{"name":"ProcessStruct","kind":"function","ident_start":46568,"ident_end":46581,"extent_start":46564,"extent_end":47091,"fully_qualified_name":"ProcessStruct","ident_utf16":{"start":{"line_number":1414,"utf16_col":4},"end":{"line_number":1414,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1414,"utf16_col":0},"end":{"line_number":1435,"utf16_col":18}}},{"name":"GetNextStruct","kind":"function","ident_start":47097,"ident_end":47110,"extent_start":47093,"extent_end":49033,"fully_qualified_name":"GetNextStruct","ident_utf16":{"start":{"line_number":1437,"utf16_col":4},"end":{"line_number":1437,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1437,"utf16_col":0},"end":{"line_number":1511,"utf16_col":15}}},{"name":"Parse","kind":"function","ident_start":49040,"ident_end":49045,"extent_start":49036,"extent_end":49391,"fully_qualified_name":"Parse","ident_utf16":{"start":{"line_number":1514,"utf16_col":4},"end":{"line_number":1514,"utf16_col":9}},"extent_utf16":{"start":{"line_number":1514,"utf16_col":0},"end":{"line_number":1530,"utf16_col":19}}},{"name":"CCodeGenerator","kind":"class","ident_start":49399,"ident_end":49413,"extent_start":49393,"extent_end":52449,"fully_qualified_name":"CCodeGenerator","ident_utf16":{"start":{"line_number":1532,"utf16_col":6},"end":{"line_number":1532,"utf16_col":20}},"extent_utf16":{"start":{"line_number":1532,"utf16_col":0},"end":{"line_number":1627,"utf16_col":32}}},{"name":"__init__","kind":"function","ident_start":49423,"ident_end":49431,"extent_start":49419,"extent_end":49451,"fully_qualified_name":"CCodeGenerator.__init__","ident_utf16":{"start":{"line_number":1533,"utf16_col":8},"end":{"line_number":1533,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1533,"utf16_col":4},"end":{"line_number":1534,"utf16_col":12}}},{"name":"GuardName","kind":"function","ident_start":49461,"ident_end":49470,"extent_start":49457,"extent_end":49754,"fully_qualified_name":"CCodeGenerator.GuardName","ident_utf16":{"start":{"line_number":1536,"utf16_col":8},"end":{"line_number":1536,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1536,"utf16_col":4},"end":{"line_number":1540,"utf16_col":70}}},{"name":"HeaderPreamble","kind":"function","ident_start":49764,"ident_end":49778,"extent_start":49760,"extent_end":50307,"fully_qualified_name":"CCodeGenerator.HeaderPreamble","ident_utf16":{"start":{"line_number":1542,"utf16_col":8},"end":{"line_number":1542,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1542,"utf16_col":4},"end":{"line_number":1562,"utf16_col":18}}},{"name":"HeaderPostamble","kind":"function","ident_start":50317,"ident_end":50332,"extent_start":50313,"extent_end":50424,"fully_qualified_name":"CCodeGenerator.HeaderPostamble","ident_utf16":{"start":{"line_number":1564,"utf16_col":8},"end":{"line_number":1564,"utf16_col":23}},"extent_utf16":{"start":{"line_number":1564,"utf16_col":4},"end":{"line_number":1566,"utf16_col":41}}},{"name":"BodyPreamble","kind":"function","ident_start":50434,"ident_end":50446,"extent_start":50430,"extent_end":51552,"fully_qualified_name":"CCodeGenerator.BodyPreamble","ident_utf16":{"start":{"line_number":1568,"utf16_col":8},"end":{"line_number":1568,"utf16_col":20}},"extent_utf16":{"start":{"line_number":1568,"utf16_col":4},"end":{"line_number":1600,"utf16_col":18}}},{"name":"HeaderFilename","kind":"function","ident_start":51562,"ident_end":51576,"extent_start":51558,"extent_end":51650,"fully_qualified_name":"CCodeGenerator.HeaderFilename","ident_utf16":{"start":{"line_number":1602,"utf16_col":8},"end":{"line_number":1602,"utf16_col":22}},"extent_utf16":{"start":{"line_number":1602,"utf16_col":4},"end":{"line_number":1603,"utf16_col":56}}},{"name":"CodeFilename","kind":"function","ident_start":51660,"ident_end":51672,"extent_start":51656,"extent_end":51750,"fully_qualified_name":"CCodeGenerator.CodeFilename","ident_utf16":{"start":{"line_number":1605,"utf16_col":8},"end":{"line_number":1605,"utf16_col":20}},"extent_utf16":{"start":{"line_number":1605,"utf16_col":4},"end":{"line_number":1606,"utf16_col":60}}},{"name":"Struct","kind":"function","ident_start":51760,"ident_end":51766,"extent_start":51756,"extent_end":51812,"fully_qualified_name":"CCodeGenerator.Struct","ident_utf16":{"start":{"line_number":1608,"utf16_col":8},"end":{"line_number":1608,"utf16_col":14}},"extent_utf16":{"start":{"line_number":1608,"utf16_col":4},"end":{"line_number":1609,"utf16_col":32}}},{"name":"EntryBytes","kind":"function","ident_start":51822,"ident_end":51832,"extent_start":51818,"extent_end":51939,"fully_qualified_name":"CCodeGenerator.EntryBytes","ident_utf16":{"start":{"line_number":1611,"utf16_col":8},"end":{"line_number":1611,"utf16_col":18}},"extent_utf16":{"start":{"line_number":1611,"utf16_col":4},"end":{"line_number":1612,"utf16_col":62}}},{"name":"EntryVarBytes","kind":"function","ident_start":51949,"ident_end":51962,"extent_start":51945,"extent_end":52044,"fully_qualified_name":"CCodeGenerator.EntryVarBytes","ident_utf16":{"start":{"line_number":1614,"utf16_col":8},"end":{"line_number":1614,"utf16_col":21}},"extent_utf16":{"start":{"line_number":1614,"utf16_col":4},"end":{"line_number":1615,"utf16_col":51}}},{"name":"EntryInt","kind":"function","ident_start":52054,"ident_end":52062,"extent_start":52050,"extent_end":52154,"fully_qualified_name":"CCodeGenerator.EntryInt","ident_utf16":{"start":{"line_number":1617,"utf16_col":8},"end":{"line_number":1617,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1617,"utf16_col":4},"end":{"line_number":1618,"utf16_col":52}}},{"name":"EntryString","kind":"function","ident_start":52164,"ident_end":52175,"extent_start":52160,"extent_end":52255,"fully_qualified_name":"CCodeGenerator.EntryString","ident_utf16":{"start":{"line_number":1620,"utf16_col":8},"end":{"line_number":1620,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1620,"utf16_col":4},"end":{"line_number":1621,"utf16_col":49}}},{"name":"EntryStruct","kind":"function","ident_start":52265,"ident_end":52276,"extent_start":52261,"extent_end":52382,"fully_qualified_name":"CCodeGenerator.EntryStruct","ident_utf16":{"start":{"line_number":1623,"utf16_col":8},"end":{"line_number":1623,"utf16_col":19}},"extent_utf16":{"start":{"line_number":1623,"utf16_col":4},"end":{"line_number":1624,"utf16_col":62}}},{"name":"EntryArray","kind":"function","ident_start":52392,"ident_end":52402,"extent_start":52388,"extent_end":52449,"fully_qualified_name":"CCodeGenerator.EntryArray","ident_utf16":{"start":{"line_number":1626,"utf16_col":8},"end":{"line_number":1626,"utf16_col":18}},"extent_utf16":{"start":{"line_number":1626,"utf16_col":4},"end":{"line_number":1627,"utf16_col":32}}},{"name":"Usage","kind":"class","ident_start":52457,"ident_end":52462,"extent_start":52451,"extent_end":52618,"fully_qualified_name":"Usage","ident_utf16":{"start":{"line_number":1629,"utf16_col":6},"end":{"line_number":1629,"utf16_col":11}},"extent_utf16":{"start":{"line_number":1629,"utf16_col":0},"end":{"line_number":1632,"utf16_col":37}}},{"name":"__init__","kind":"function","ident_start":52485,"ident_end":52493,"extent_start":52481,"extent_end":52618,"fully_qualified_name":"Usage.__init__","ident_utf16":{"start":{"line_number":1630,"utf16_col":8},"end":{"line_number":1630,"utf16_co 313D l":16}},"extent_utf16":{"start":{"line_number":1630,"utf16_col":4},"end":{"line_number":1632,"utf16_col":37}}},{"name":"CommandLine","kind":"class","ident_start":52626,"ident_end":52637,"extent_start":52620,"extent_end":55147,"fully_qualified_name":"CommandLine","ident_utf16":{"start":{"line_number":1634,"utf16_col":6},"end":{"line_number":1634,"utf16_col":17}},"extent_utf16":{"start":{"line_number":1634,"utf16_col":0},"end":{"line_number":1708,"utf16_col":23}}},{"name":"__init__","kind":"function","ident_start":52647,"ident_end":52655,"extent_start":52643,"extent_end":54034,"fully_qualified_name":"CommandLine.__init__","ident_utf16":{"start":{"line_number":1635,"utf16_col":8},"end":{"line_number":1635,"utf16_col":16}},"extent_utf16":{"start":{"line_number":1635,"utf16_col":4},"end":{"line_number":1673,"utf16_col":65}}},{"name":"run","kind":"function","ident_start":54044,"ident_end":54047,"extent_start":54040,"extent_end":55147,"fully_qualified_name":"CommandLine.run","ident_utf16":{"start":{"line_number":1675,"utf16_col":8},"end":{"line_number":1675,"utf16_col":11}},"extent_utf16":{"start":{"line_number":1675,"utf16_col":4},"end":{"line_number":1708,"utf16_col":23}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/hytd/libevent/branches":{"post":"7U8zBVOuTvMUZGOx4RnaC5pHGUoUS5id7jYN854ALfpX0VyVc426Gk7J_1uUFd2IqKhyqfs36TR8VQXnMWKLNg"},"/repos/preferences":{"post":"vx3P-N8fcX8Kuny6qgtBsv9cj9dlVH1OsHsqkafMNepzs0Uj2JFNLIOxXQp9bQcUzHl3UVgSXz4w-uCEhMGX6Q"}}},"title":"libevent/event_rpcgen.py at master · hytd/libevent","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1b17b3e7786a.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0