class_docstr: Rudimentary, generic GLSL printing tools.
  
  Additional settings:
  'use_operators': Boolean (should the printer use operators for +,-,*, or functions?)
class_docstr_tok: ["Rudimentary",",","generic","GLSL","printing","tools",".","Additional","settings",":","'use_operators","'",":","Boolean","(","should","the","printer","use","operators","for","+",",","-",",","*",",","or","functions","?",")"]
code: def _get_loop_opening_ending(self, indices):
      open_lines = []
      close_lines = []
      loopstart = "for (int %(varble)s=%(start)s; %(varble)s<%(end)s; %(varble)s++){"
      for i in indices:
          # GLSL arrays start at 0 and end at dimension-1
          open_lines.append(
              loopstart
              % {
                  "varble": self._print(i.label),
                  "start": self._print(i.lower),
                  "end": self._print(i.upper + 1),
              }
          )
          close_lines.append("}")
      return open_lines, close_lines
  
imports: from __future__ import annotations
  from sympy.core import Basic, S
  from sympy.core.function import Lambda
  from sympy.core.numbers import equal_valued
  from sympy.printing.codeprinter import CodePrinter
  from sympy.printing.precedence import precedence
  from functools import reduce
label_desc: Use image node_id 13 for calling the GLSLPrinter obj's underlying member method code with example usage: obj._get_loop_opening_ending(indices) and returns: open_lines,  close_lines