Exemplo n.º 1
0
 public static function get_csharp_type_name($full_name)
 {
     global $_PROG;
     if (thelpers::is_container_type($full_name)) {
         return thelpers::get_csharp_name_internal($full_name);
     } else {
         $pos = strrpos($full_name, ".");
         if (FALSE == $pos) {
             return thelpers::get_csharp_name_internal($full_name);
         } else {
             // check cpp namespace as prefix
             $prog = NULL;
             $left = "";
             if (thelpers::begin_with($full_name, $_PROG->get_csharp_namespace() . ".")) {
                 $left = substr($full_name, strlen($_PROG->get_csharp_namespace()) + 1);
                 $prog = $_PROG;
             } else {
                 foreach ($_PROG->includes as $pn => $p) {
                     if (thelpers::begin_with($full_name, $p->get_csharp_namespace() . ".")) {
                         $left = substr($full_name, strlen($p->get_csharp_namespace()) + 1);
                         $prog = $p;
                         break;
                     }
                 }
             }
             // check package as prefix
             if ($prog == NULL) {
                 if (thelpers::begin_with($full_name, $_PROG->name . ".")) {
                     $left = substr($full_name, strlen($_PROG->name) + 1);
                     $prog = $_PROG;
                 } else {
                     foreach ($_PROG->includes as $pn => $p) {
                         if (thelpers::begin_with($full_name, $p->name . ".")) {
                             $left = substr($full_name, strlen($p->name) + 1);
                             $prog = $p;
                             break;
                         }
                     }
                 }
             }
             if (NULL == $prog) {
                 return "full type translation from '" . $full_name . "' failed.";
             }
             return $prog == $_PROG ? thelpers::get_csharp_name_internal($left) : $prog->get_csharp_namespace() . thelpers::get_csharp_name_internal($left);
         }
     }
 }